GTK退出对话框?

时间:2014-11-20 00:57:48

标签: gtk gtk2

我正在使用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();
}

但是,我的是按钮不会退出任何内容。有这个原因吗?

3 个答案:

答案 0 :(得分:3)

gtk_main_quit()只留下当前嵌套的主循环。 gtk_dialog_run()创建了自己的嵌套主循环,因此gtk_main_quit()只会突破gtk_dialog_run(),而不是gtk_main()

答案 1 :(得分:0)

当用户尝试关闭窗口时,使用主窗口的delete-event来调用弹出窗口。然后在on_delete_event回调中,使用gtk_dialog_run返回的值返回正确的值。您的on_delete_event回调返回值控制是否传播事件并发送destroy信号。从gtk_main_quit回调中致电on_destroy。将on_destroy回调邮件连接到主窗口的destroy信号。 Voilà!

答案 2 :(得分:0)

由于你不需要主循环,你应该测试返回的运行:

/* pseudo code*/
if (gtk_dialog_run(dlg) == RESPONSE_YES) {
 gtk_widget_destroy (dlg); # destroys dialog and exits
}