Не удается показать () QWindow, когда он был скрыт с помощью cmd + h в MacOS

У меня проблема из-за того, что я не могу открыть окно приложения, если оно было скрыто с помощью ярлыка MacOS. Во всех остальных случаях он работает корректно.

В моем приложении у меня есть 1 основное окно qWindowQWindow* 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() но это не решение, которое я могу использовать в моем случае.

1 ответ

Я обнаружил, что если ты позвонишь hide() перед звонком show(), show() будет вести себя правильно.

Обход этой проблемы следующий

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

может возникнуть проблема, когда приложение уже находится в фокусе, и вы нажимаете Show он будет, скрываться и показываться снова, но в моем случае это приемлемая проблема.

Другие вопросы по тегам