在Linux下用Gtk开发时,有时会用到构件大小变化size-changed事件,在Gtk中没有。不过,有一个对应的事件是configure-event。
在Gtk中configure-event只在窗体大小发生变化或移动时发出,而GtkWidget自身的大小变化不能发出configure-event。
由于本人水平有限,自己不能定制一个构件。所以采用了size-allocate事件来模拟size-changed事件。
下面是代码;
- gboolean
-
widget_size_allocate_cb (GtkWidget *widget,
-
GtkAllocation *allocation,
-
gpointer user_data)
-
{
-
static gint width=0, height=0;
-
-
if (width>0 && height>0 && (allocation->width - width || allocation->height - height))
-
{
-
// g_printf("size changed:width-%d :height- %d: ", width, height);
-
width = allocation->width;
-
height = allocation->height;
-
-
// 在此,做一些操作...
-
}
-
if (G_UNLIKELY (width==0 && height==0))
-
{
-
width = allocation->width;
-
height = allocation->height;
-
}
-
return FALSE;
-
}
阅读(2127) | 评论(0) | 转发(0) |