Qt Mac - 应用程序关闭后不恢复

时间:2015-11-11 19:48:00

标签: c++ macos qt

在Mac中我们按下关闭按钮应用程序默认隐藏到停靠。我的Qt应用程序也是如此,但事后并没有像预期的那样恢复。有很多帖子提供了检测点击停靠栏图标的代码。

我不需要检测,我只想要它应该恢复的默认功能。

如果我最小化但不是关闭,它会恢复。

我使用的修复是:

void myAPP::closeEvent(QCloseEvent *event)
{
    #ifdef Q_OS_MAC
        event->ignore();
        this->setWindowState(Qt::WindowMinimized) ;
        return;
    #endif
}

它使关闭时最小化,而且我的应用程序正确恢复。但现在的问题是,除非我退出应用程序,否则它会阻止Mac上的关机。关机会使应用最小化。

我正在使用Qt 5.4

1 个答案:

答案 0 :(得分:0)

要解决此问题,我想了解Close Event的来源。如果source是user而不是minim,则else是OS shutdown event而不是exit。

我们可以使用event-> spontaneous()来检查。以下是工作解决方案:

void myAPP::closeEvent(QCloseEvent *event)
{
    #ifdef Q_OS_MAC
        if(event->spontaneous())
        {
            event->ignore();
            this->setWindowState(Qt::WindowMinimized) ;
            return;
        }
    #endif
}