【问题标题】:How to make modeless dialog stay on top of its parent in Solaris CDE如何在 Solaris CDE 中使无模式对话框保持在其父级之上
【发布时间】:2009-11-18 09:59:00
【问题描述】:

我在使用 CDE(通用桌面环境)的 Solaris 8/10 机器上遇到 Qt 无模式对话框的问题。

对话框用作绘图面板/弹出窗口,要求用户在继续绘制之前从主应用程序中选择工具。问题是每当用户单击主应用程序工具栏时,对话框就会出现在主应用程序的后面。

请注意,这只是与 CDE 有关的行为,Open Windows 环境或 Solaris Java 环境不会导致此问题。

我的问题是如何让它始终位于其父级(主应用程序)之上?

我尝试将 WX11BypassWM 标志传递给对话框,以绕过窗口管理器,但是边框和框架消失了,导致对话框无法拖动/移动。

更新 1:

关于Andy's answer

我试过Qt::WStyle_StaysOnTop,但它不起作用。

我也尝试过结合:

WX11BypassWM | WStyle_StaysOnTop | WStyle_Title

WStyle_DialogBorder, WType_TopLevel等的其他组合,只有在传入WX11BypassWM时才会停留在最前面。

但每当传入WX11BypassWM 时,显示的对话框将没有边框,也没有标题栏。

这意味着它是一个不可移动的无标题对话。

更新 2:

由于我找不到此问题的解决方案,因此我暂时通过调整主应用程序和无模式对话框的大小并将其重新定位到并排来解决它。

这至少可以让用户在两个界面中导航。

如果有人有更好的建议,请告诉我。

【问题讨论】:

    标签: qt solaris


    【解决方案1】:

    我不确定我是否理解您的问题,但是,是否可以使用:

    在 QtAssistant 中找到:

    enum Qt::WindowType
    flags Qt::WindowFlags
    

    Qt::WindowStaysOnTopHint :

    “通知窗口系统该窗口应位于所有其他窗口的顶部。”

    希望对你有帮助!

    【讨论】:

    • 谢谢安迪,我试过 Qt::WStyle_StaysOnTop,但它不起作用。我还尝试结合“WX11BypassWM | WStyle_StaysOnTop | WStyle_Title”(以及 WStyle_DialogBorder、WType_TopLevel... 的其他组合),它仅在传入 WX11BypassWM 时保持在顶部。但每当传入 WX11BypassWM 时,显示的对话框将不会有边框也不是标题栏。这意味着它是一个不可移动的无标题对话......
    猜你喜欢
    • 2011-08-10
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    相关资源
    最近更新 更多