强制Qt窗口在XPlane窗口之上

时间:2018-02-16 19:45:56

标签: c++ qt opengl

我正在写一个飞行模拟器应用程序。为此,我的Qt应用程序窗口应该保持在飞行模拟器应用程序窗口的顶部。

飞行模拟器(P3D,FSX,XPlane)提供2种不同的窗口模式,即"窗口"和"全屏"。窗口模式没问题,我可以为我的窗口设置Qt::WindowStaysOnTopHint并且它可以工作。但是,它对于XPlane全屏模式有效(但对P3D / FSX有效)。

我不知道XPlane全屏模式究竟做了什么,只是它使用OpenGL。当我点击进入XPlane窗口时,显然我的窗口失去了焦点。在Windows上,我可以使用ALT+TAB

重新获得它

我尝试过(由计时器触发)widget->activateWindow();没有结果。还有更多"技巧"我可以试试。

1 个答案:

答案 0 :(得分:1)

通常,应用程序不能强制自己到前面。它可以请求被带到前面,但该请求是否被授予由窗口管理器决定。

应用程序(在某些平台上)可以告诉窗口管理器他们将允许将某些其他应用程序放在前面而不是自己(这允许那些应用程序强制将自己带到授权应用程序的前面,但不能超过其他不合作的应用)。一般来说,这是一个合作的事情,没有任何一个应用程序可以强制其所有其他应用程序(恕我直言是一件好事)。