退出申请致电两倍
Quit application call twice the closeevent
我已经在OSX上写了QT/C 的应用程序。退出应用时,我正在捕获CloseEvent以显示对话框
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对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();
}
}
}
默认情况下,Boolean变量M_ closing
当然应在您的课程中由false
初始化。这样,第二次什么都没做(将跳过处理)。这对我有用。
看起来这是一个qt错误:请参阅:https://bugreports.qt.io/browse/qtbug-43344
使用QT-5.6_4,
也有这个问题在我的情况下,它在使用CMD Q时发生了,但使用红色X按钮时没有发生。
使用了类似的补丁。
我避免了接受或忽略,因为这是一个错误,我认为我们不应该"与之交谈" :-)
相反,我只是在调用更多时返回。
static int numCalled = 0;
if (numCalled++ >= 1)
return;
相关文章:
- 重复使用预分配的向量<复杂<double>>作为<double>长度两倍的向量
- 计算C++两倍的差值
- 为什么当我进入退出条件时,程序会打印两倍的默认条件而不是退出 while 循环?
- 内存移动的性能与memcpy相比是两倍?
- Qt 是 JSON 精度的两倍
- 不完整的多线程光线追踪器花费的时间是预期的两倍
- C++随机函数给出的相同整数是输出的两倍
- 为什么我的最终向量是它应该大小的两倍并且具有前导 0?
- 为什么即使在从int到两倍的类型施放后,小数也没有小数
- 如何将固定精度的两倍格式化为给定的长度
- 从Q开始关闭QDialog时,请致电Destructor
- getsockopt() 返回的值是之前由 setsockopt() 设置的值的两倍
- MF SinkWriter mp4文件的播放持续时间是添加音频样本时的一半,图像的播放速度也是添加音频样本的两倍
- 无论如何,是否可以使用setCursorPos(int,int)函数,但没有采用两个int使它需要速度较慢的两倍
- 在C 中,当CIN为Bash Heredoc时,请致电叉会导致反复的输入片段
- 是一个包含两个INT(只有两个INT)的结构,保证是大小(INT)的两倍
- C++ "time.h"测量的运行时间是实际值的两倍
- 退出申请致电两倍
- SSE42 & STTNI - PcmpEstrM比PcmpIstrM慢两倍,是真的吗?
- 在同一台机器上,是否保证两倍值的不精确性是一致的