30

私の Qt アプリケーションでは、デフォルト ブラウザで URL を開きます。その後、アプリケーションのメインウィンドウを再び前面に表示したいと思います。

見つけたすべてのアプローチを試しましたが、どれもうまくいきませんでした。タスクバー (ウィンドウ 7 の) で点滅するだけです。以下に例を示します。

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

*viewer は、QDeclarativeView から派生した QmlApplicationViewer へのポインターです。

4

7 に答える 7

34

これを試して:

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

それは私のプロジェクトで動作します(私のプロジェクトビューアでは QMainWindow です):https://github.com/iptton/Rythem

于 2012-05-30T01:33:14.427 に答える
7

この問題は Windows に固有のものです。アクティブなウィンドウが何らかのプロセスに属している場合、Windows は他のプロセスがアクティブなウィンドウを変更することを許可しません。

(以下は試さないでください: https://wiki.qt.io/Qt_project_org_faq#QWidget_::activateWindow.28.29_-_behavior_under_windows )

于 2011-05-22T12:29:04.487 に答える
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 でこれをテストしていませんが、動作する可能性があります。

于 2017-01-10T09:37:59.807 に答える