我有QSystemTrayIcon和QAction,打開QWebView類型的新窗口。當窗口失去焦點並且我再次選擇QAction時,窗口應該重新獲得焦點。它在Linux上運行,但不在Mac OS X上運行。問題是,當我打開另一個窗口並處於活動狀態時,讓我們說谷歌瀏覽器,當我在打開的窗口中調用show()時,它總是在Google Chrome瀏覽器下打開,所以我沒有看到它。聚焦也是一樣,當我打開多個窗口時,我的QWebView可能是順序中的最後一個,當我點擊QAction來關注窗口時,它總是在Google Chrome窗口下。我的猜測是,當我單擊QAction(這是應用程序進程的一部分)時,它會嘗試打開/關注窗口,但在操作過程中,Google Chrome窗口會進行調度並獲得焦點,因爲QSystemTrayIcon不能持有重點。因此,當窗口被打開/關注時,它不會從Google Chrome中竊取焦點,因爲操作系統不允許它,所以它將被置於當前聚焦的窗口之下。Mac OS X上的QWidget沒有專注於Qt 5.x
在這裏,我如何創建/聚焦窗口:
// ...
QPointer<QWebView> view;
// ...
void TrayIcon::webView() {
if (!this->view) {
this->view = new QWebView();
this->view->load("http://example.com");
this->view->show();
} else {
this->view->activateWindow();
this->view->raise();
}
}
有什麼我做的不正確或是否有任何已知的解決方法嗎?
不幸的是,這在Windows 10不工作 –