GTK 小部件对话框未关闭

Posted

技术标签:

【中文标题】GTK 小部件对话框未关闭【英文标题】:GTK widget dialog does not close 【发布时间】:2016-10-22 10:24:12 【问题描述】:

我试图用 gtk 制作简单的“消息框”对话框。它可以工作,但是当我单击按钮时对话框不会关闭。 (我只使用 gtk 对话框。我的主窗口 - 不是 gtkWindow,而是 X11 Glx 窗口)。这是我的代码:

    gtk_init(&argc, &argv);

    GtkWidget *dialog = gtk_message_dialog_new (NULL,
                                     GTK_DIALOG_DESTROY_WITH_PARENT,
                                     GTK_MESSAGE_ERROR,
                                     GTK_BUTTONS_CLOSE,
                                     "Some text",
                                     g_strerror (errno));

    gtk_dialog_run(GTK_DIALOG (dialog));
    gtk_widget_destroy(dialog);

如果我单击“关闭”按钮 - 程序继续运行,小部件对话框失去焦点但没有关闭\隐藏。为什么?似乎 gtk_widget_destroy(dialog) 没有调用。

附言我正在使用 Linux 64、eclipse、c++

【问题讨论】:

虽然 gtk_message_dialog_new() 的参数有点不正确。在这种情况下太多了,通过添加所需的标题并使其成为一个完整的功能,它可以工作。如果您可以发布minimal reproducible example,则可以对其进行检查以找到您的问题。 【参考方案1】:

尝试使消息框成为模式对话框。

GtkWidget *dialog = gtk_message_dialog_new (NULL,
                                     GTK_DIALOG_MODAL,
                                     GTK_MESSAGE_ERROR,
                                     GTK_BUTTONS_CLOSE,
                                     "Some text",
                                     g_strerror (errno));

【讨论】:

以上是关于GTK 小部件对话框未关闭的主要内容,如果未能解决你的问题,请参考以下文章

GTK 或 Qt 的图表小部件 [关闭]

GTK:无限的惰性小部件列表

文本小部件的 SWT 拖放支持

Gtk3用另一个小部件替换子小部件

在 Gtk+ 中堆叠小部件

用于建议的 Gtk 小部件