如果我希望在窗口关闭时调用某个函数,请使用delete_event
进行连接。如果我希望在用户最小化Gtk窗口时调用该函数,我应该连接什么。像minimize_event
这样的东西?我在文档中找不到任何内容。
答案 0 :(得分:5)
我处于相同的十字路口,只有一些信息和代码在python gtk上,但不在C中。
在一次又一次地查看文档后,我意识到我被相同的名字,工会,结构,枚举和位域混淆了。我把事情当作布尔人处理,当它一直是一个小东西时。
首先:
g_signal_connect(
G_OBJECT(window),
"window-state-event",
G_CALLBACK(callback_func),
userDataPointer);
然后:
gboolean callback_func(
GtkWidget *widget,
GdkEventWindowState *event,
gpointer user_data)
{
//some code
//Minimized window check
if(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED){
//some other code
}
//some more other code
return TRUE;
}
请记住这是位域,&
是“位和”运算符不是布尔值&&
。
二进制文件中的GDK_WINDOW_STATE_ICONIFIED =2
或10
event->new_window_state
是int
,其中第二位是活动的
Widget可同时最大化和最小化,
GDK_WINDOW_STATE_MAXIMIZED = 4
或100
如果您将最大化窗口最小化为event->new_window_state = 6
或110
您可以尝试并查看哪种方式最适合您。
更多信息:
最后注意和警告:
我正在使用gtk + 2,因为双赢和林开发。较新的gtk + 3可能会做一些不同的事情。
Gnome Developer Site网站有一些链接被破坏或错误,或部分重写,但有一些错误。我上面的第一个网址上的页面有
gboolean user_function (GtkWidget *widget,GdkEvent *event,gpointer user_data){}
虽然源代码中的手册以及其他可下载的手册具有正确的:
gboolean user_function (
GtkWidget *widget,
GdkEventWindowState *event,
gpointer user_data){}
该页面还有incorrect or broken link for the gtk3 page for GdkEventWindowState
。
gtk + 3版本似乎与gtk + 2一样错,我还没有看到带有源代码的gtk + 3手册或单独的,所以我不知道gtk + 3是否真的修改了事件和gdk结构的回调
目前gtk + 3稳定* 期待 *不一致。最好使用源代码或Linux发行版和版本gtk + 2附带的手册。
我希望这会有所帮助。