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

Posted

技术标签:

【中文标题】Qt Mac - 关闭后应用程序未恢复【英文标题】:Qt Mac - App not restoring after closing 【发布时间】:2015-11-11 19:47:59 【问题描述】:

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

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

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

我使用的修复是:

void myAPP::closeEvent(QCloseEvent *event)

    #ifdef Q_OS_MAC
        event->ignore();
        this->setWindowState(Qt::WindowMinimized) ;
        return;
    #endif

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

我正在使用Qt 5.4

【问题讨论】:

【参考方案1】:

为了解决这个问题,我想知道Close Event 的来源。如果源是用户而不是最小化,否则如果源是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

【讨论】:

以上是关于Qt Mac - 关闭后应用程序未恢复的主要内容,如果未能解决你的问题,请参考以下文章

Qt 5.2 Mac 10.10.1 架构 x86_64 的未定义符号

从 Mac 为 Windows、Linux 交叉编译 C++/QT [关闭]

Qt 5.4 - Mac OS X 10.6 支持

如何在dock(Mac)中恢复图标? [关闭]

Xamarin.Mac:关闭的窗口未重新打开以单击 Dock 中的应用程序图标

plsql异常关闭后恢复sql