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() 只跳出 @9​​87654324@,而不跳出 @9​​87654325@。

【讨论】:

【参考方案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 退出对话框?的主要内容,如果未能解决你的问题,请参考以下文章

GTK 小部件对话框未关闭

避免关闭 GTK 对话框

有时 GTK 模态对话框不是模态的 --- 错误或功能?

GTK3 主题对话框在 Audacity 中呈现纯黑色背景

gtk printOperation 没有对话框

GTK 预置对话框 GtkDialog 文件/颜色/字体选取等 GtkFileSelection