将窗口置于前面 -> raise(),show(),activateWindow() 不起作用
在我的 Qt 应用程序中,我在默认浏览器中打开一个 URL。 之后我想再次将应用程序的主窗口带到前面。
我尝试了所有能找到的方法,但没有一个有效。它所做的只是在(Windows 7 的)任务栏中闪烁 这是一个例子:
this->viewer->show();
this->viewer->raise();
this->viewer->activateWindow();
*viewer 是一个指向 QmlApplicationViewer 的指针,它派生自 QDeclarativeView
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
试试这个:
它在我的项目中工作(在我的项目查看器中是 QMainWindow): https://github.com/iptton/节奏。
try this:
it work in my project ( in my project viewer is QMainWindow): https://github.com/iptton/Rythem .
此问题是 Windows 特有的。
如果活动窗口属于某个进程,那么Windows不允许其他进程更改活动窗口。
(不要尝试以下操作:
https://wiki.qt.io/Qt_project_org_faq#QWidget_::activateWindow。 28.29_-_windows下的行为)
This problem is specific to Windows.
If the active window belongs to some process, then Windows does not allow other processes to change the active Window.
(Do not try the following:
https://wiki.qt.io/Qt_project_org_faq#QWidget_::activateWindow.28.29_-_behavior_under_windows)
我是这样做的:
假设“
this
”是您的QMainWindow
。工作起来就像一个魅力。
I did it like this:
assuming "
this
" is yourQMainWindow
.Worked like a charm.
请注意,这还会打开 OSX 和 Windows 上其他虚拟桌面的窗口。我没有在 Linux 上测试过这个,但它可能可以工作。
Note that this also brings up the window from other virtual desktops on both OSX and Windows. I did not test this on linux, it may work though.
这个问题不是 Windows 特有的……我在 Linux 上也有同样的问题。我的解决方案是在重新打开()窗口之前关闭()窗口。
This issue is not specific to Windows....I have the same issue on Linux. My solution was to close() the window before I re open() it.
对于 Windows,我使用 WinAPI 完成。您还需要知道窗口标题;
For Windows I did it with WinAPI. Also you need to know the window title;
以下内容借自论坛 它对我有用:
The following is borrowed from the forum and it works for me: