gpt4 book ai didi

c++ - 退出应用程序调用两次关闭事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:28 25 4
gpt4 key购买 nike

我在 OSX 上用 Qt/c++ 编写了一个应用程序。退出应用程序时,我正在捕获关闭事件以显示对话框

void MainUI::closeEvent (QCloseEvent *event)
{
if( DeviceUnplugged == false) {
ExitDialog = new DialogExit;
ExitDialog->exec();
if(ExitDialog->result() == QDialog::Accepted) {
m_device.CloseDevice();
event->accept();
}
else {
event->ignore();
}
}
}

当使用红叉或使用菜单“退出”关闭时,对话框正确显示。

但是当我使用右键单击停靠栏中的图标关闭应用程序时,对话框出现两次,关闭事件被调用两次。

知道为什么吗?

最佳答案

是的,我认为这对 Mac 来说是正常的,至少我的 Qt 应用程序中也有这个(仅在 Mac 上)。

我使用了以下解决方法:

void MainUI::closeEvent (QCloseEvent *event)
{
if (m_closing)
{
event->accept();
return;
}
if( DeviceUnplugged == false) {
ExitDialog = new DialogExit;
ExitDialog->exec();
if(ExitDialog->result() == QDialog::Accepted) {
m_device.CloseDevice();
m_closing = true;
event->accept();
}
else {
event->ignore();
}
}
}

默认情况下, bool 变量 m_closing 应该在您的类中初始化为 false。这样第二次什么也不会做(处理将被跳过)。这对我有用。

关于c++ - 退出应用程序调用两次关闭事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30068710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com