把窗户放在前面 ->raise(),show(),activateWindow() 不起作用

2021-12-09 00:00:00 windows qt winapi c++ foreground

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

In my Qt-application I open a URL in the default-browser. Afterwards I want to bring the main-window of my application to the front again.

我尝试了我能找到的所有方法,但都没有奏效.它所做的只是在任务栏(Window 7)中闪烁举个例子:

I tried all approaches I could find but none worked. All it does is blink in the taskbar (of Window 7) Here’s an example:

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

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

*viewer is a pointer to a QmlApplicationViewer which is derived from QDeclarativeView

推荐答案

此问题特定于 Windows.如果活动窗口属于某个进程,则 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.

(请勿尝试以下操作:https://wiki.qt.io/Qt_project_org_faq#QWidget_::activateWindow.28.29_-_behavior_under_windows)

(Do not try the following: https://wiki.qt.io/Qt_project_org_faq#QWidget_::activateWindow.28.29_-_behavior_under_windows)

相关文章