我有点进退两难。
我正在使用:
- 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/