首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使一个非模态对话框窗口总是在顶部?

如何使一个非模态对话框窗口总是在顶部?
EN

Stack Overflow用户
提问于 2017-07-06 13:57:51
回答 3查看 6.6K关注 0票数 10

我在我的应用程序中使用一个Dialog {}实例来显示一个小控制器窗口,用户可以与之交互以影响主窗口中的功能(某种程度上是一种远程控制)。我可以使这个对话模式(modality: Qt.WindowModalmodality: Qt.ApplicationModal)或我可以使它与modality: Qt.NonModal非模态.

我的问题是,我需要使它成为非模态,但总是在主窗口顶部。如果我使用Qt.NonModal,我仍然可以点击主表单,但是我的对话框在后面。Dialog类似乎没有flags:属性,所以我不能仅仅将它设置为Qt.WindowsStaysOnTopHint

是否有任何方法可以完全从QML一侧设置这样的对话框标志?或者可以用c++编写一个简单的实用程序方法,我可以从对话框的Component.onCompleted:中调用该方法并传入对话框,在那里设置它的窗口标志?

更新:为了说明我在说什么,下面是我的主窗口顶部的对话框:

下面是我在主窗口下面的对话框:

我希望我的对话框不要像这样在我的主窗口下面,但我仍然希望能够点击并与我的主窗口进行交互。换句话说,我希望我的对话是非模态的,但总是在顶部。

EN

Stack Overflow用户

回答已采纳

发布于 2017-07-07 15:07:40

尝试使用Window而不是Dialog,这样您就可以访问flags属性。

您可以将flags设置为Qt.WindowStaysOnTopHint,使您的窗口始终位于其他窗口之上。您可以找到标志这里的列表。(别忘了用QML中的::替换. )

Main.qml:

代码语言:javascript
运行
复制
import QtQuick 2.5
import QtQuick.Controls 2.0
import QtQuick.Dialogs 1.2

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")


    Button {
        id: btn
        width: 100 ; height : 40
        text: "click me"
    }

    Text {
        anchors.top : btn.bottom
        text: "Button currently pressed"
        visible: btn.pressed
    }

    DialogOnTop {

    }
}

DialogOnTop.qml:

代码语言:javascript
运行
复制
import QtQuick 2.0
import QtQuick.Window 2.0
import QtQuick.Controls 1.4

Window {
    id: myWindow

    width: 200
    height: 200

    flags:  Qt.Window | Qt.WindowSystemMenuHint
            | Qt.WindowTitleHint | Qt.WindowMinimizeButtonHint
            | Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint


    visible: true
    modality: Qt.NonModal // no need for this as it is the default value


    Rectangle {
        color: "lightskyblue"
        anchors.fill: parent
        Text {
            text: "Hello !"
            color: "navy"
            anchors.centerIn: parent
        }
    }
}

结果:

票数 8
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44951046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档