处理上次窗口关闭时的提示
Handling promt on last window close
我有一个应用程序,有多个窗口。当我关闭最后一个窗口时,我试图使程序提示我是否要退出。我想简单地这样处理:
void MainWindow::closeEvent (QCloseEvent *event)
{
qDebug() << "QApplication::topLevelWindows().size()" << QApplication::topLevelWindows().size();
if(QApplication::topLevelWindows().size() <= 1)
{
QMessageBox::StandardButton resBtn = QMessageBox::question( this, "APP_NAME",
tr("Are you sure?n"),
QMessageBox::No | QMessageBox::Yes,
QMessageBox::Yes);
if (resBtn != QMessageBox::Yes) {
event->ignore();
} else {
event->accept();
}
}
}
如果我不急于关闭窗户,它就会很好。但如果我一个接一个过快关闭,或者通过任务栏中的"人民币->全部关闭"同时关闭,它们就会自动关闭。我插入的调试显示,QApplication::topLevelWindows
的大小远远大于1。但是如果我在关闭下一个窗口之前等待几秒钟,它就会减少。
从窗口关闭到将其从列表中删除之间似乎有一段时间
是否有办法得到我在某一时刻打开的窗口的确切数量?
或者也许有一个更好的方法来处理退出提示在最后窗口的销毁?如果您的所有窗口继承MainWindow
,您可以简单地在MinWindow
类中保留一个静态整数变量,初始值为0。在构造函数中增加1,在closeEvent()
中减少1。然后,在此变量中,当onClose()
触发且value等于1时,获取用户确认。
如果窗口类不同,你可以把它保存在全局可访问的变量中。
如果您使用多个线程,请确保自动增加或减少此变量
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- QT 4.7-在OS X 10.12下,工具提示和Qcombobox弹出窗口空白
- 如何在窗口提示对话框(即错误消息)时获取通知
- Qt::WindowStaysOnBottom提示和无框标志使不要将我的Qt窗口保留在所有窗口的底部
- XLib-当我在主函数中构造XWindowAttributes时,窗口提示的行为会有所不同
- 文件不显示在cmd提示窗口
- 如何从窗口更改emscripten浏览器输入法.提示你做一些更明智的事情
- 如何从命令提示窗口构建和编译visual studio c++代码
- Qt工具提示在显示时将窗口置于前面
- 处理上次窗口关闭时的提示