如何让对话框弹出为独立 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")
}
}
我尝试放置一个按钮并单击它会打开一个对话框,但我的对话框在 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")
}
}