简体   繁体   中英

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

I have an issue that I cannot raise my app Window when it got hidden with MacOS shortcut. It work correctly in all other cases.

In my app i have 1 main qWindow called QWindow* mMainWindow; and following code added to tray button

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

When I just use qt mMainWindow->hide() and then raise it back, mMainWindow works fine. Method mMainWindow->isActive() return correct true state when app is active and false when it is hidden.

But when I hide app using build-in in mac "cmd + h", mMainWindow->isActive() return true regardless if app app is hidden or not. Calling my action item does nothing, mMainWindow stay all the time hidden.

Is there any solution to fix this issue? I have seen people recommend using QWidget instead of QWindow and calling widget->activateWindow() but it is not solution i can use in my case.

I have discovered that if you call hide() before calling show() , show() will behaving correctly.

Workaround to this problem is following

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

there may be issue that when app is already on focus, and you click Show it will, hide and show again, but it is acceptable problem in my case.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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