http://blog.sina.com.cn/s/blog_7d49c1800101fdar.html
在上一个实例中,由于笔误,不小心发现了g_signal_connect_swapped()与g_signal_connect()的用法区别 g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button)
"clicked",
G_CALLBACK (gtk_widget_destroy), filew);
误写为
g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button)
"clicked",
G_CALLBACK (gtk_widget_destroy), filew);
结果是在文件选择窗口,点击cancel按钮时,cancel按钮消失,窗口仍在。
我查了一下gtk_widget_destroy()函数的功能,如下
When a widget is destroyed, it will break any references it holds to other objects. If the widget is inside a container, the widget will be removed from the container.
然后我修改了callback函数实现正常的退出,如下:
g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button)
"clicked",
G_CALLBACK (file_cancel_button), filew);
并添加callback函数
void file_cancel_button(GtkWidget *widget,GtkFileSelection *fs)
{
gtk_widget_destroy(fs);
}
实现了正常的退出
它的功能等价于
g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button)
"clicked",
G_CALLBACK (gtk_widget_destroy), filew);
g_signal_connect_swapped ()功能如下
Connects a
GCallback
function to a signal for a particular object.
这个特定的目标就是函数的最后一个参数
在上一个实例中,由于笔误,不小心发现了g_signal_connect_swapped()与g_signal_connect()的用法区别 g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button)
误写为
g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button)
结果是在文件选择窗口,点击cancel按钮时,cancel按钮消失,窗口仍在。
我查了一下gtk_widget_destroy()函数的功能,如下
When a widget is destroyed, it will break any references it holds to other objects. If the widget is inside a container, the widget will be removed from the container.
然后我修改了callback函数实现正常的退出,如下:
g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button)
并添加callback函数
void file_cancel_button(GtkWidget *widget,GtkFileSelection *fs)
{
}
实现了正常的退出
g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button)
g_signal_connect_swapped ()功能如下
Connects a
这个特定的目标就是函数的最后一个参数