c++ - 隐藏主窗口时如何正确关闭 QDialog?

标签 c++ qt

我有点进退两难。

我正在使用:

  • MSVS 2008
  • Qt 4.7.3(使用 Qt VS 插件 1.1.9)

我基于QMainWindow 类编写了小型Qt 应用程序,其中还存在设置 对话框(QDialog)。每个在 GUI 模式下工作正常。之后,我开始更改我的项目,使其仅在托盘 中可见。只需在 main.cpp show() 方法中注释,如下所示:

MainWindow w;
//w.show();

return app.exec();

但我需要从托盘启动设置对话框,它在 mainwindow.h/.cpp 文件中实现。我将托盘菜单操作 (QAction) 添加到启动设置对话框。意料之外的问题来了:当我尝试使用 [ X ] 关闭按钮(位于右上角)关闭此设置对话框时,我的应用已关闭!

这是 Action 槽:

void MainWindow::onOpenSettingsDlgClicked()
{
     SettingsDlg dlg( this );
     dlg.exec();
}

我已经尝试为settings 对话框类重新实现virtual reject() 方法,并只设置hide() 函数,但是该解决方案没有帮助。

我做错了什么?

谢谢!

最佳答案

您应该关闭 quitOnLastWindowClosed 属性,该属性默认打开,如文档中定义的那样 (http://doc.qt.nokia.com/latest/qapplication.html#quitOnLastWindowClosed-prop )

这就是说,您必须自己处理 QApplication 的终止,也许在托盘菜单中使用 [quit] 条目。

关于c++ - 隐藏主窗口时如何正确关闭 QDialog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7979206/

相关文章:

c++ - boost::asio ssl 链接错误

c++ - FBX SDK 返回 4 个顶点,而预期是 3 个顶点

c++ - 我应该使用 C 或 C++ 实现来返回变量类型的最大大小吗?

c++ - 无法创建函数数组

c++ - Qt 无法与 g++ 链接

c++ - 尝试在 cin,peek() 中使用

c++ - 在 XCode 的 "Quick Help"中显示变量类型

c++ - Qml: float 模型项的委托(delegate)/模型组件

c++ - 显示 txt 文件详细信息

c++ - Qt:如何将 GUI 元素的集合放入独立的子类中(使用单独的 *.ui 文件)