将窗口放在前面 -\> raise(),show(),activateWindow() 不起作用

新手上路,请多包涵

在我的 Qt 应用程序中,我在默认浏览器中打开一个 URL。之后我想再次将我的应用程序的主窗口放在前面。

我尝试了所有我能找到的方法,但都没有奏效。它所做的只是在任务栏中闪烁(窗口 7)这是一个示例:

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

*viewer 是指向从 QDeclarativeView 派生的 QmlApplicationViewer 的指针

原文由 Hedge 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

此问题特定于 Windows。如果活动窗口属于某个进程,则 Windows 不允许其他进程更改活动窗口。

(不要尝试以下操作: https ://wiki.qt.io/Qt_project_orgfaq#QWidget::activateWindow.28.29_-_behavior_under_windows)

原文由 Johan Råde 发布,翻译遵循 CC BY-SA 3.0 许可协议

以下是从 论坛 借来的,对我有用:

 auto eFlags = viewer.windowFlags();
viewer.setWindowFlags(eFlags|Qt::WindowStaysOnTopHint);
viewer.show();
viewer.setWindowFlags(eFlags);
viewer.show();

原文由 sercxjo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题