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
在兩種情況下我都得到了相同的結果(添加到描述中)。你隱藏的內容非常有趣) –