首页 > 解决方案 > 在 MacOS 上使用 cmd + h 隐藏时无法显示() QWindow

问题描述

我有一个问题,当它被 MacOS 快捷方式隐藏时,我无法提升我的应用程序窗口。它在所有其他情况下都能正常工作。

在我的应用程序中,我调用了 1 个主 qWindow QWindow* mMainWindow; ,并将以下代码添加到托盘按钮

    mMenu->addAction(createAction("Show", [=] {
        if (mMainWindow) {
            mMainWindow->show();
            mMainWindow->raise();
            mMainWindow->requestActivate();
        }

当我只使用 qtmMainWindow->hide()然后将其升起时,mMainWindow工作正常。当应用程序处于活动状态和隐藏时,方法mMainWindow->isActive()返回正确的状态。truefalse

但是当我在mac“cmd + h”中使用内置隐藏应用程序时,无论应用程序是否隐藏,都会mMainWindow->isActive()返回。true调用我的操作项无济于事,mMainWindow始终保持隐藏状态。

有什么解决方案可以解决这个问题吗?我见过人们推荐使用QWidget而不是QWindow调用widget->activateWindow(),但这不是我可以使用的解决方案。

标签: macosqtqwindow

解决方案


我发现,如果您在调用hide()之前先调用show()show()则行为会正确。

此问题的解决方法如下

mMenu->addAction(createAction("Show", [=] {
        if (mMainWindow) {
            mMainWindow->hide();
            mMainWindow->show();
            mMainWindow->raise();
            mMainWindow->requestActivate();
        }
    }));

当应用程序已经处于焦点时,可能会出现问题,并且您单击Show它会再次隐藏并显示,但在我的情况下这是可以接受的问题。


推荐阅读