GTK 退出对话框?
Posted
技术标签:
【中文标题】GTK 退出对话框?【英文标题】:GTK quit dialog box? 【发布时间】:2014-11-20 00:57:47 【问题描述】:我正在使用 C 和 GTK 创建一个对话框来确认退出。
我的主窗口有一个退出按钮 -> 带有“是”和“否”的对话框 是的应该完全退出程序 否应关闭对话框。
我试过了
dialog = gtk_dialog_new();
...
button = gtk_button_new_with_label("Yes");
g_signal_connect(button, "clicked", G_CALLBACK(close), NULL);
我的回调函数关闭是
static void close(GtkWidget* widget, gpointer data)
gtk_main_quit();
但是,我的“是”按钮不会退出任何内容。这是有原因的吗?
【问题讨论】:
【参考方案1】:gtk_main_quit()
只离开当前嵌套的主循环。 gtk_dialog_run()
创建了自己的嵌套主循环,因此您的 gtk_main_quit()
只跳出 @987654324@,而不跳出 @987654325@。
【讨论】:
【参考方案2】:当用户试图关闭窗口时,使用主窗口的delete-event
调用弹出窗口。然后在您的on_delete_event
回调中,使用 gtk_dialog_run 返回的值返回正确的值。您的on_delete_event
回调返回值控制事件是否被传播并发送destroy
信号。从您的 on_destroy
回调中调用 gtk_main_quit
。将您的 on_destroy
回调连接到主窗口的 destroy
信号。瞧!
【讨论】:
【参考方案3】:由于您不需要主循环,因此您应该测试运行返回的内容:
/* pseudo code*/
if (gtk_dialog_run(dlg) == RESPONSE_YES)
gtk_widget_destroy (dlg); # destroys dialog and exits
【讨论】:
以上是关于GTK 退出对话框?的主要内容,如果未能解决你的问题,请参考以下文章