我有某种困境.
我正在使用:
我写了一个基于QMainWindow类的小Qt应用程序,其中也存在设置对话框(QDialog).每个在GUI模式下都能正常工作.之后我开始改变我的项目,使其仅在托盘中可见.只需在main.cpp show()方法中注释,如下所示:
MainWindow w;
//w.show();
return app.exec();
Run Code Online (Sandbox Code Playgroud)
但是从托盘中,我需要启动设置对话框,该对话框在mainwindow.h/.cpp文件中实现.我添加到托盘菜单操作(QAction),它启动该设置对话框.这出现了意想不到的问题:当我尝试用[X]关闭按钮(在右上角)关闭此设置对话框时,我的应用程序已关闭!
这是动作槽:
void MainWindow::onOpenSettingsDlgClicked()
{
SettingsDlg dlg( this );
dlg.exec();
}
Run Code Online (Sandbox Code Playgroud)
我试图virtual reject()为设置对话框类重新实现方法,并设置只有hide()函数,但该解决方案没有帮助.
我做错了什么?
谢谢!
您应该关闭quitOnLastWindowClosed默认情况下打开的属性,如文档中所定义(http://doc.qt.nokia.com/latest/qapplication.html#quitOnLastWindowClosed-prop)
这就是说,您必须自己处理QApplication的终止,也可以在托盘菜单中输入[quit]条目.
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |