能否使用gtk_widget_destroy关闭GTK退出对话框?附示例代码
当然可以用
gtk_widget_destroy()关闭GTK确认对话框 直接给结论:你完全可以调用gtk_widget_destroy(dialog)来关闭并销毁这个确认对话框,这是GTK里处理一次性对话框的常规操作,非常适配你写的这种确认场景。
结合你的代码示例说明
我把你没写完的代码补全,并加上销毁对话框的逻辑,方便你参考:
gint confirmation_dialog() { GtkWidget *label; GtkWidget *box; GtkWidget *dialog; gint response; gtk_init(NULL,NULL); // 用便捷API创建模态确认对话框 dialog = gtk_dialog_new_with_buttons( "Confirmation", NULL, GTK_DIALOG_MODAL, GTK_STOCK_YES, GTK_RESPONSE_YES, GTK_STOCK_NO, GTK_RESPONSE_NO, NULL ); // 创建提示标签并添加到对话框内容区 label = gtk_label_new("你确定要执行这个操作吗?"); box = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0); gtk_widget_show_all(dialog); // 运行对话框,等待用户操作 response = gtk_dialog_run(GTK_DIALOG(dialog)); // 处理用户响应(示例逻辑) switch(response) { case GTK_RESPONSE_YES: g_print("用户选择了「是」\n"); break; case GTK_RESPONSE_NO: g_print("用户选择了「否」\n"); break; default: g_print("对话框被直接关闭\n"); break; } // 关键:关闭并销毁对话框,释放资源 gtk_widget_destroy(dialog); return response; }
一些额外的小提示
gtk_widget_destroy()会彻底销毁对话框和它的所有子控件,释放占用的内存,对于这种用完就扔的确认对话框,这是最稳妥的选择。- 如果之后还需要复用这个对话框,可以先用
gtk_widget_hide(dialog)隐藏它,但记得程序退出前一定要调用gtk_widget_destroy()清理,避免内存泄漏。 - 当你调用
gtk_dialog_run()时,对话框会进入模态循环,直到用户做出选择或关闭窗口,之后调用销毁函数是标准的收尾步骤。
内容的提问来源于stack exchange,提问作者Leetm
相关产品推荐
相关产品推荐

