当主窗口隐藏时,如何正确关闭QDialog
HowTo correctly close QDialog when main windows is hidden?
我有点左右为难。
我用:
- 2008 <<li> msv/gh>
- Qt 4.7.3(含Qt VS插件1.1.9)
QMainWindow
类,其中也存在设置对话框(QDialog
)。每个在GUI模式下都工作得很好。在那之后,我开始改变我的项目,使它只在托盘中可见。只需在main.cpp show()
方法中注释,如下所示:
MainWindow w;
//w.show();
return app.exec();
但是从托盘中,我需要启动设置对话框,这是在mainwindow.h/.cpp文件中实现的。我添加到托盘菜单操作(QAction
),这是启动设置对话框。这里出现了意想不到的问题:当我试图关闭这个设置对话框与[X]关闭按钮(在右上角)我的应用程序关闭!动作位置:
void MainWindow::onOpenSettingsDlgClicked()
{
SettingsDlg dlg( this );
dlg.exec();
}
我试图重新实现virtual reject()
方法的设置对话框类,并设置只有hide()
功能,但该解决方案没有帮助。
我做错了什么?
谢谢你!
您应该关闭quitOnLastWindowClosed
属性,该属性是在文档(http://doc.qt.nokia.com/latest/qapplication.html#quitOnLastWindowClosed-prop)中定义的默认打开的
这就是说,你必须自己处理你的QApplication的终止,也许在托盘菜单中有一个[quit]条目
我发现另一个似乎更好的选择是覆盖QDialog的closeEvent,只隐藏它。
void PrefDialog::closeEvent(QCloseEvent *event) {
this->hide();
event->ignore();
}
我发现这似乎更好,因为它不改变全局应用程序的行为
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- CMake-按正确顺序将项目与C运行时对象文件链接
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- 如何使用用户输入在C++中正确填充2D数组
- node-gyp 在 macOS 上未正确链接库
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- 为什么我的for循环不能正确获取argv
- 如何取消对nullptr的屏蔽,返回正确的对象
- AES加密到解密未正确输出
- 使用C++程序合并排序没有得到正确的输出
- 在 c++ 中拥有一组结构的正确方法是什么?
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 使用2个键的cpp-stl::优先级队列排序不正确
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 在'如果'陈述输出如何正确
- 当主窗口隐藏时,如何正确关闭QDialog
- QDialog没有正确定位