在MacOS上用cmd + h隐藏QWindow时无法显示QWindow

问题描述

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

在我的应用中,我有1个主要的qWindow称为 QWindow* mMainWindow; 并将以下代码添加到任务栏按钮

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

当我仅使用qt mMainWindow->hide()然后将其升高时,mMainWindow可以正常工作。当应用处于活动状态时,方法mMainWindow->isActive()返回正确的true状态,而在隐藏时,方法false返回正确的状态。

但是当我在Mac“ cmd + h”中使用内置功能隐藏应用时,无论应用是否被隐藏,mMainWindow->isActive()都会返回true调用我的操作项不会执行任何操作,mMainWindow始终保持隐藏状态。

是否有解决此问题的解决方案?我见过有人建议使用QWidget而不是QWindow并致电widget->activateWindow(),但这不是我可以使用的解决方案。

解决方法

我发现,如果您在致电hide()之前先致电show(),则show()的行为将正确。

此问题的解决方法正在关注

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

可能存在以下问题:当应用程序已经成为焦点时,单击Show它将再次隐藏并显示,但这在我看来是可以接受的问题。