在Mac中,当我们按关闭按钮时,默认情况下,应用会隐藏以停靠。我的Qt应用程序也发生了同样的情况,但是之后没有按预期恢复。有很多帖子提供了检测停靠图标点击的代码。

我不需要检测,只需要恢复默认功能即可。

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

我使用的解决方法是:

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

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

我正在使用Qt 5.4

最佳答案

为了解决这个问题,我想知道Close Event的来源。如果source是用户而不是最小化,否则,如果source是OS shutdown event则退出。

我们可以使用event-> spontaneous()进行检查。以下是有效的解决方案:

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

关于c++ - Qt Mac-应用关闭后无法还原,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33658663/

10-15 23:39