C++ Qt显示/显示/升起车窗的正确方式

C++ Qt显示/显示/升起车窗的正确方式,c++,qt,pyqt4,C++,Qt,Pyqt4,很多时候,我发现我需要展示并把一扇窗户带到前面。例如,当用户试图重新加载同一个文档时,我只需调出旧文档。为此,我有如下代码: widget->raise(); widget->activateWindow(); widget->showNormal(); 我开始觉得我错过了一个快捷功能。当然,这种行为很常见。是否有一些首选功能可以完成上述所有操作和/或只在每个目标操作系统上执行正确的操作 注意:我刚刚注意到一个缺陷,因此一个特殊的函数现在更加重要。如果窗口最小化,activ

很多时候,我发现我需要展示并把一扇窗户带到前面。例如,当用户试图重新加载同一个文档时,我只需调出旧文档。为此,我有如下代码:

widget->raise();
widget->activateWindow();
widget->showNormal();
我开始觉得我错过了一个快捷功能。当然,这种行为很常见。是否有一些首选功能可以完成上述所有操作和/或只在每个目标操作系统上执行正确的操作



注意:我刚刚注意到一个缺陷,因此一个特殊的函数现在更加重要。如果窗口最小化,
activateWindow
将不起作用。即使您首先将上述内容重新排序为showNormal,也会发生这种情况。

不需要这种复杂情况。这就足够了:

widget->raise();
widget->show();
顺便说一下,您可以调用
show()
一次,除非您
hide()
它,否则无需再次调用
show()

这是一个有效的“快捷方式”:

您可以将其与窗口的最后一个
Qt::WindowState
耦合。
不过,这种表示法并不十分明确。

这不会还原已最小化的窗口,也不会使窗口具有焦点。仍然需要
activateWindow
showNormal
。@edA-qamort-ora-y您在问题中没有提到窗口可以最小化。我可能认为调用
showNormal
清楚地表明窗口可以最小化。是的,我已经看过很多文档了。每个操作系统做的事情略有不同,因此我需要几个调用。在这种情况下,我的应用程序是当前的顶级窗口,所以它通常可以正常工作。听起来像是一个bug,它在PySide中对我来说很好。如果没有重现问题的SSCE,很难进行评估。事实上,这似乎是一个bug,
activateWindow()
单独对我来说也很有效。你能用一个更新的Qt版本(比如5.6或5.7)来测试这个吗?不幸的是raise(),showNormal()-它们都不适合我。但是setWindowsState(Qt::WindowActive)在我的案例中运行良好。谢谢…奇怪。。。这对我不起作用,但
activateWindow()
起作用。也许这已经在Qt5.7中修复了?
widget->setWindowState(Qt::WindowActive) ;