繁体   English   中英

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

[英]Can't show() QWindow when it was hidden with cmd + h on MacOS

我有一个问题,当它被 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并调用QWindow widget->activateWindow()但这不是我可以使用的解决方案。

我发现如果您在调用show()之前调用hide() show()show()将正常运行。

此问题的解决方法如下

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM