У меня QSystemTrayIcon с QAction, который открывает новое окно типа QWebView. Когда окно теряет фокус, и я снова выбираю QAction, окно должно восстановить фокус. Он работает в Linux, но не работает в Mac OS X. Проблема заключается в том, что когда у меня есть другое окно, открытое и активное, скажем, Google Chrome, когда я вызываю show() в окне, которое я пытаюсь открыть, это всегда открывается под Google Chrome, поэтому я не вижу его. То же самое касается фокусировки, когда у меня открыто несколько окон, и мой QWebView может быть последним в заказе, когда я нажимаю QAction, чтобы сфокусировать окно, он всегда будет находиться в окне Google Chrome. Я предполагаю, что когда я нажимаю QAction, который является частью моего процесса приложения, он попытается открыть/сфокусировать окно, но в середине операции окно Google Chrome получает запланированное и получает фокус, так как QSystemTrayIcon не может удерживать фокус. Из-за этого, когда окно открывается/сфокусировано, оно не украдет фокус из Google Chrome, потому что операционная система не позволяет его, поэтому он будет помещен в окно с точной фокусировкой.
Вот как я создаю/фокусирую окно:
// ...
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();
}
}
Есть ли что-то, что я делаю неправильно или есть какое-либо известное обходное решение?