c++ - Qt Mac - 应用程序在关闭后无法恢复

标签 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

最佳答案

为了解决这个问题,我想知道 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
}

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

相关文章:

C++ - 为什么 const 函数不强制成员指针具有 const-ness?

c++ - 这个 `const char*` 的断言保证是真的吗?

c++ - 将数字(金额)转换为文字的免费跨平台库?

macos - 操作系统: Avoid userprompt when opening embedded binary

c++ - Qt : Efficiently handle QGraphicsItems that have "lots of pixmaps"? (RTS)

c++ - 当从主窗口调用时,Qt 将对话框显示为无框架

c++ - 自己的 Asterisk 模块(SIP 记录器)

适用于 Mac 10.6.7 的 Xcode(开发者工具)

macos - 在 OS X 中查找已安装应用程序的版本

c++ - 如何调整qt布局中的项目大小?