【发布时间】:2015-08-13 08:20:11
【问题描述】:
我遇到了一些难题。
我正在使用:
- MSVS 2008
- Qt 4.7.3(带有 Qt VS 插件 1.1.9)
我编写了基于QMainWindow 类的小型 Qt 应用程序,其中还存在 settings 对话框 (QDialog)。每个都在 GUI 模式下工作正常。之后,我开始更改我的项目以使其仅在 tray 中可见。只需在 main.cpp show() 方法中注释,如下所示:
MainWindow w;
//w.show();
return app.exec();
但我需要从托盘启动 settings 对话框,该对话框在 mainwindow.h/.cpp 文件中实现。我添加到托盘菜单操作 (QAction),它启动了 settings 对话框。这里出现了意想不到的问题:当我尝试使用 [ X ] 关闭按钮(在右上角)关闭此 设置 对话框时,我的 应用已关闭!
这里是动作槽:
void MainWindow::onOpenSettingsDlgClicked()
{
SettingsDlg dlg( this );
dlg.exec();
}
我已尝试为 settings 对话框类重新实现 virtual reject() 方法,并仅在其中设置 hide() 函数,但该解决方案没有帮助。
我做错了什么?
谢谢!
【问题讨论】:
-
什么是“解决方案没有帮助” - 应用程序还在关闭吗?你能展示拒绝()的实现吗?您不是偶然调用那里的基本实现吗?
-
你有信号
QApplication::lastWindowClosed()(doc.trolltech.com/4.7/qapplication.html#lastWindowClosed)的连接吗?