【问题标题】:Floating/Always above dialog浮动/始终在上方对话框
【发布时间】:2011-05-02 01:41:05
【问题描述】:

我在 GIMP 中注意到,当打开一个对话框时,它不会禁用父窗口。父窗口仍然可以使用,而子窗口浮动在它前面。 我想做同样的事情,但是当我点击我的父窗口时,它会将孩子推到后面,这样父母就会走到前面。

我正在使用 Qt QDialog,但我很乐意编写特定于平台的代码来使其正常工作。

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

但似乎没有什么可以做我所追求的。我目前有一个狡猾的解决方案,当我的应用程序获得焦点时,我将窗口设置为HWND_TOPMOST,然后在它失去焦点时禁用它,但它并不理想,因为消息框被推到这些最顶层的窗口后面。 即。

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

【问题讨论】:

    标签: c++ winapi qt dialog x11


    【解决方案1】:

    看起来我的对话框中的育儿设置不正确!它需要作为父对话框/主窗口的父级,然后才能正常工作。

    【讨论】:

      【解决方案2】:

      您需要调用setWindowFlags(),包括Qt::WindowStaysOnTopHint 标志。

      【讨论】:

      • 但这使它保持在所有窗口的顶部。我只想把它放在它的父级之上。正如这里所讨论的:qtcentre.org/threads/15464-WindowStaysOnTopHint
      • 是的,我误会了你。我只是假设您的养育方式是正确的,因为一旦如此,那么正如您所说,没有其他事情可做。
      猜你喜欢
      • 2010-10-10
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2021-05-25
      • 2018-06-18
      相关资源
      最近更新 更多