执行gtk3的新高度宽度几何管理方法

时间:2012-08-13 20:22:16

标签: c gtk gtk3

继续上一个问题

Drag and drop on a fixed container changes its size

我按照ergosys的建议阅读了他提供的链接中的信息 如果我理解正确,那么宣告的新方式

/* LEFT FRAME */

frame1= gtk_frame_new(NULL);
gtk_table_attach(GTK_TABLE(table), frame1, 0,14,0,49,GTK_SHRINK,GTK_SHRINK,0,0);
gtk_widget_set_size_request(frame1, 360,570);    

是(暂时忽略高度)

static void
my_widget_get_preferred_width (GtkWidget *widget,
                               gint      *minimal_width,
                               gint      *natural_width)
{
  GtkRequisition requisition;

  gtk_widget_get_requisition (widget, &requisition);

  *minimal_width = *natural_width = requisition.width;
}

....

/* LEFT FRAME */

frame1= gtk_frame_new(NULL);
gtk_table_attach(GTK_TABLE(table), frame1, 0,14,0,49,GTK_SHRINK,GTK_SHRINK,0,0);

gint min_width=360;
gint nat_width=360;

GTK_WIDGET_GET_CLASS(frame1)->get_preferred_width=my_widget_get_preferred_width;
my_widget_get_preferred_width(frame1,&min_width,&nat_width);    

它编译正常,但是,运行时,它给了我这个错误:

(conky_companion:19700): Gtk-WARNING **: GtkFrame 0xa00e660: widget tried to     gtk_widget_get_width inside  GtkWidget     ::get_width implementation. Should just invoke GTK_WIDGET_GET_CLASS(widget)->get_width directly rather than using gtk_widget_get_width     

没有绘制窗口,一段时间后就会出现段错误。

我在这里想念的是什么? 或者,TL; DR,等同于

gtk_widget_set_size_request(frame1, 360,570);     

在gtk3中?

0 个答案:

没有答案