【发布时间】:2013-06-28 12:25:14
【问题描述】:
我有带有 QAction 的 QSystemTrayIcon,可以打开 QWebView 类型的新窗口。当窗口失去焦点并且我再次选择 QAction 时,窗口应该重新获得焦点。它在 Linux 上可以,但在 Mac OS X 上不行。问题是,当我打开另一个窗口并处于活动状态时,比如说 Google Chrome,当我在我试图打开的窗口上调用 show() 时,它总是在谷歌浏览器下打开,所以我看不到它。聚焦也是如此,当我打开多个窗口时,我的 QWebView 可能是顺序中的最后一个,当我单击 QAction 聚焦窗口时,它将始终位于 Google Chrome 窗口下。我的猜测是,当我单击 QAction(这是我的应用程序进程的一部分)时,它会尝试打开/聚焦窗口,但在操作过程中,Google Chrome 窗口会被安排并获得焦点,因为 QSystemTrayIcon无法保持焦点。因此,当窗口打开/获得焦点时,它不会从谷歌浏览器中窃取焦点,因为操作系统不允许这样做,所以它将被放置在当前焦点窗口下。
这里我如何创建/聚焦窗口:
// ...
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();
}
}
是我做错了什么还是有任何已知的解决方法?
【问题讨论】: