Hed*_*dge 21 c++ windows winapi qt foreground
在我的Qt应用程序中,我在默认浏览器中打开一个URL.之后我想把我的应用程序的主窗口再次放到前面.
我尝试了所有可以找到的方法,但都没有用.它只是在任务栏(窗口7)中闪烁.这是一个例子:
this->viewer->show();
this->viewer->raise();
this->viewer->activateWindow();
Run Code Online (Sandbox Code Playgroud)
*viewer是指向QmlApplicationViewer的指针,该QmlApplicationViewer派生自QDeclarativeView
小智 25
试试这个:
viewer.setWindowState( (windowState() & ~Qt::WindowMinimized) | Qt::WindowActive);
viewer.raise(); // for MacOS
viewer.activateWindow(); // for Windows
Run Code Online (Sandbox Code Playgroud)
它在我的项目中工作(在我的项目查看器中是QMainWindow):https://github.com/iptton/Rythem.
此问题特定于 Windows。如果活动窗口属于某个进程,则 Windows 不允许其他进程更改活动窗口。
(不要尝试以下操作:https : //wiki.qt.io/Qt_project_org_faq#QWidget_ :: activateWindow.28.29 _-_ behavior_under_windows)
我是这样做的:
{
this->show(); // Restore from systray
this->setWindowState(Qt::WindowState::WindowActive); // Bring window to foreground
}
Run Code Online (Sandbox Code Playgroud)
假设“ this”是您的QMainWindow. 像魅力一样工作。