Привести окно вперед → raise(), show(), activateWindow() не работать

В моем Qt-приложении я открываю URL-адрес в браузере по умолчанию. Впоследствии я хочу снова вернуть главное окно моего приложения на передний план.

Я пробовал все подходы, которые я мог найти, но никто не работал. Все, что он делает, мигает в панели задач (окна 7) Вот пример:

this->viewer->show();
this->viewer->raise();
this->viewer->activateWindow();

* viewer - это указатель на QmlApplicationViewer, полученный из QDeclarativeView

Ответ 2

попробуйте следующее:

viewer.setWindowState( (windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
viewer.raise();  // for MacOS
viewer.activateWindow(); // for Windows

он работает в моем проекте (в моем средстве просмотра проекта есть QMainWindow): https://github.com/iptton/Rythem.

Ответ 3

for ( QWindow* appWindow : qApplication.allWindows() )
{
  appWindow->show(); //bring window to top on OSX
  appWindow->raise(); //bring window from minimized state on OSX

  appWindow->requestActivate(); //bring window to front/unminimize on windows
}

Обратите внимание, что это также отображает окно с других виртуальных рабочих столов как на OSX, так и на Windows. Я не тестировал это на linux, но может работать.

Ответ 4

Эта проблема не относится к Windows... У меня такая же проблема для Linux. Мое решение состояло в том, чтобы закрыть() окно перед тем, как открыть его().