0
之上的其他应用程序之上最小化Qt应用程序。 用ApplicationWindow作为mainwindow在QML上实现的UI。打开应用程序主窗口在系统托盘图标
当我右键单击托盘中的应用程序图标时,会显示一个菜单。其中一个菜单项是“打开”。当点击它,这个代码被称为(最有可能的,冗余):
mainWidget->activateWindow();
window->showNormal();
Qt::WindowState newWindowState = (Qt::WindowState)((window->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
window->setWindowState(newWindowState);
如果托盘图标时,双击相同的代码被调用时,应用程序窗口会打开,但仍然低于其他应用程序。
如何解决这个问题?当窗口仍在其他应用
[16:00:17] [D] GetCurrentThreadId: 1092
[16:00:17] [D] windowFlags: QFlags<Qt::WindowType>(Popup|WindowTitleHint|WindowSystemMenuHint|WindowMinMaxButtonsHint|WindowCloseButtonHint|WindowFullscreenButtonHint)
[16:00:17] [D] windowState: Qt::WindowState(WindowMinimized)
[16:00:17] [W] QWindow::setWindowState does not accept Qt::WindowActive
[16:00:17] [D] GetCurrentThreadId: 1092
[16:00:17] [D] windowFlags: QFlags<Qt::WindowType>(Popup|WindowTitleHint|WindowSystemMenuHint|WindowMinMaxButtonsHint|WindowCloseButtonHint|WindowFullscreenButtonHint)
[16:00:17] [D] windowState: Qt::WindowState(WindowNoState)
输出::
qDebug() << "GetCurrentThreadId: " << GetCurrentThreadId();
qDebug() << "windowFlags: " << mainWidget->windowFlags();
qDebug() << "windowState: " << window->windowState();
mainWidget->activateWindow();
window->showNormal();
Qt::WindowState newWindowState = (Qt::WindowState)((mainWindow()->windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
window->setWindowState(newWindowState);
qDebug() << "GetCurrentThreadId: " << GetCurrentThreadId();
qDebug() << "windowFlags: " << mainWidget->windowFlags();
qDebug() << "windowState: " << window->windowState();
输出当应用程序成功打开
[16:00:23] [D] GetCurrentThreadId: 1092
[16:00:23] [D] windowFlags: QFlags<Qt::WindowType>(Popup|WindowTitleHint|WindowSystemMenuHint|WindowMinMaxButtonsHint|WindowCloseButtonHint|WindowFullscreenButtonHint)
[16:00:23] [D] windowState: Qt::WindowState(WindowMinimized)
[16:00:23] [W] QWindow::setWindowState does not accept Qt::WindowActive
[16:00:23] [D] GetCurrentThreadId: 1092
[16:00:23] [D] windowFlags: QFlags<Qt::WindowType>(Popup|WindowTitleHint|WindowSystemMenuHint|WindowMinMaxButtonsHint|WindowCloseButtonHint|WindowFullscreenButtonHint)
[16:00:23] [D] windowState: Qt::WindowState(WindowNoState)
你可以用你的调试器在这两种情况下检查newWindowState的值吗? – KjMag
我知道你已经找到了解决方案,但是如果你检查它并且感兴趣为什么之前的方法不起作用,我可能会有一个有趣的答案;) – KjMag
在两种情况下我都得到了相同的结果(添加到描述中)。你隐藏的内容非常有趣) –