问题描述
我有一个问题,当它被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
它将再次隐藏并显示,但这在我看来是可以接受的问题。