Seb*_*Seb 6 c++ macos qt qdialog
我在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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用红叉或使用"退出"菜单关闭时,会正确显示该对话框.
但是当我使用右键单击停靠栏中的图标关闭应用程序时,会出现两次对话框,两次调用关闭事件.
知道为什么吗?
是的,我认为这对于 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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,布尔变量 m_closing
当然应该false
在您的类中初始化。这样第二次就什么也不做(处理将被跳过)。这对我有用。
归档时间: |
|
查看次数: |
865 次 |
最近记录: |