【发布时间】:2017-07-06 13:57:51
【问题描述】:
我在我的应用程序中使用Dialog {} 的实例来显示一个小的控制器窗口,用户可以与之交互以影响主窗口中的功能(类似于遥控器)。我可以将此对话框设为模态(modality: Qt.WindowModal 或 modality: Qt.ApplicationModal),也可以使用modality: Qt.NonModal 将其设为非模态。
我的问题是我需要将其设为非模态但始终位于主窗口的顶部。如果我使用Qt.NonModal,我仍然可以单击主窗体,但我的对话框会在它后面。 Dialog 类似乎没有 flags: 属性,所以我不能只将其设置为 Qt.WindowsStaysOnTopHint。
有没有什么方法可以像这样纯粹从 QML 方面设置对话框的标志?或者是否可以在 C++ 中编写一个简单的实用程序方法,我可以从对话框的Component.onCompleted: 调用并传入对话框以在那里设置其窗口标志?
更新:为了说明我在说什么,这是我的主窗口顶部的对话框:
这是我的主窗口下方的对话框:
我希望我的对话框不会像这样进入我的主窗口下方,但我仍然希望能够单击并与我的主窗口进行交互。换句话说,我希望我的对话框是非模态的,但总是在顶部。
【问题讨论】:
-
也许你可以用鼠标区域过滤掉对话框外的点击事件?
-
@sk2212:我认为这行不通。我希望用户能够单击主窗口或此浮动遥控器并与之交互。基本上只是标准的工具窗口行为。
-
嗯...您能从您的窗口和对话框中创建一个简单的屏幕截图吗?我还是不明白你的意思。
-
主窗口是
Dialog的父窗口吗?这应该足以让Dialog保持领先——我认为。 -
@G.M.:主窗口是 Dialog 的父窗口(我认为,它目前是内联定义的),但它仍然位于主窗口下方。