浮动/总是在对话框上方

Floating/Always above dialog

本文关键字:对话框 浮动      更新时间:2023-10-16

我注意到在GIMP中,当一个对话框被打开时,它不会禁用父窗口。父窗口仍然可以使用,而子窗口漂浮在它的前面。我想做同样的事情,无论如何,当我点击父窗口时,它把子窗口推到后面,这样父窗口就到了前面。

我正在使用Qt QDialog的,但很高兴做平台特定的代码来得到这个工作。

我一直在这里找:http://msdn.microsoft.com/en-us/library/ff700543 (v = vs.85) . aspx

但似乎没有什么能满足我的要求。我目前有一个狡猾的解决方案,当我的应用程序接收焦点时,我将窗口设置为HWND_TOPMOST,然后在失去焦点时禁用此功能,但这并不理想,因为消息框被推到这些最顶部的窗口后面。ie .

SetWindowPos(winId(), stayOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOACTIVATE);

看起来我的对话框上没有正确的育儿设置!它需要父对话框/主窗口,然后它就工作了。

您需要调用包含Qt::WindowStaysOnTopHint标志的setWindowFlags()