gpt4 book ai didi

c++ - 销毁 gtkmm 消息对话框?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:08 25 4
gpt4 key购买 nike

我使用的是 gtkmm 3.0.1,在创建 Gtk::MessageDialog 对象时我没有看到在用户单击按钮后销毁对话框的选项。我发现破坏消息对话框的唯一方法是在辅助函数中调用它,但我觉得这有可能被避免。文档没有提到销毁它的方法,只提到由用户销毁它。

这是我的代码:

#include <gtkmm.h>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

Gtk::Main kit(argc, argv);
Gtk::Window client;

Gtk::MessageDialog dialog("Info", false, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO);
dialog.set_secondary_text( "Dialog");
dialog.set_default_response(Gtk::RESPONSE_YES);
dialog.run();

cout << "dialog is still open, needs to be destroyed at this point." << endl;

Gtk::Main::run(client);

return EXIT_SUCCESS;

}

最佳答案

问题是您在 int main 的堆栈上创建了 Gtk::MessageDialog。因为该函数不会退出,直到您的程序执行您的 MessageDialog 挂起。

几个选项:

1.) Hide the dialog完成后,它将在 int main 退出时被销毁。

2.) 新建然后删除。

Gtk::MessageDialog* dialog = new Gtk::MessageDialog("Info", false, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO);
dialog->set_secondary_text( "Dialog");
dialog->set_default_response(Gtk::RESPONSE_YES);
dialog->run();
delete dialog;

3.) 在它自己的函数或 block 中创建它,以便在该作用域退出时将其销毁。

void showDialog() {
Gtk::MessageDialog dialog("Info", false, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO);
dialog.set_secondary_text( "Dialog");
dialog.set_default_response(Gtk::RESPONSE_YES);
dialog.run();
}

int main(int argc, char *argv[]) {
etc...
showDialog();
Gtk::Main::run(client);
etc...
}

关于c++ - 销毁 gtkmm 消息对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18554282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com