如何让对话框弹出为独立 window?

How to let dialog popup as standalone window?

我尝试放置一个按钮并单击它会打开一个对话框,但我的对话框在 ApplicationWindow 中打开,而不是作为独立的 windows?

代码

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Dialogs 1.2
import QtQuick.Controls 2.15

ApplicationWindow {
    visible: true
    id: root
    Row {
        Button {
            width: root.width
            height: 20
            text: "bn"
            onClicked: myDlg.open()
        }
    }

    Dialog {
        id: myDlg
        title: "Rabbit"
        Label {
            anchors.fill: parent
            text: "Rabbit"
        }
        standardButtons: Dialog.Ok
        onAccepted: console.log("abc")
    }
}

效果

在 qml 中,不同的模块中有不同的同名组件,这就是 Dialog 的情况:

在OP提供的代码的情况下,正在使用属于“Qt Quick Control 2”模块的对话框,并且由于它继承自Popup,因此它将显示为内部项目到 window.

解决办法是用别名来区分:

import QtQuick 2.15
import QtQuick.Controls 2.15 as QQC
import QtQuick.Dialogs 1.3 as QQD

QQC.ApplicationWindow {
    id: root

    visible: true

    Row {
        QQC.Button {
            width: root.width
            height: 20
            text: "bn"
            onClicked: myDlg.open()
        }
    }

    QQD.Dialog {
        id: myDlg

        title: "Rabbit"
        QQC.Label {
            anchors.fill: parent
            text: "Rabbit"
        }
        standardButtons: QQD.Dialog.Ok
        onAccepted: console.log("abc")
    }
}