C++ Qt Mac-关闭后应用程序未恢复

C++ Qt Mac-关闭后应用程序未恢复,c++,macos,qt,C++,Macos,Qt,在Mac中,当我们按下关闭按钮时,默认情况下,应用程序会隐藏以停靠。我的Qt应用程序也会发生同样的情况,但它不会像预期的那样在之后恢复。有许多帖子提供了检测点击停靠图标的代码 我不需要检测,我只需要它应该恢复的默认功能 如果我最小化但不关闭,它将恢复 我使用的修复方法是: void myAPP::closeEvent(QCloseEvent *event) { #ifdef Q_OS_MAC event->ignore(); this->set

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

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

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

我使用的修复方法是:

void myAPP::closeEvent(QCloseEvent *event)
{
    #ifdef Q_OS_MAC
        event->ignore();
        this->setWindowState(Qt::WindowMinimized) ;
        return;
    #endif
}
它使它在关闭时最小化,然后我的应用程序可以正常恢复。但现在的问题是,除非我退出应用程序,否则它会阻止在Mac上关机。关机使应用程序最小化


我正在使用
qt5.4

来解决这个问题,我想知道
关闭事件的来源。如果源是用户而不是最小化,否则如果源是操作系统关闭事件而不是退出

我们可以使用事件->自发()来检查这一点。以下是工作解决方案:

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