在 QML 中,可以通过设置父窗口的属性来实现子窗口显示时父窗口不可点击。具体方法如下:
- 在父窗口中添加一个布尔类型的属性,用于控制是否禁用父窗口。
Item {
property bool disableParent: false
}
- 在子窗口中设置父窗口的
disableParent
属性为 true,并在子窗口关闭时将其恢复为 false。
Window {
id: childWindow
parent: parentWindow
modal: true
Component.onDestruction: {
parentWindow.disableParent = false;
}
onOpened: {
parentWindow.disableParent = true;
}
}
- 在父窗口中添加一个遮罩层,当
disableParent
为 true 时显示遮罩层并禁用交互。
Rectangle {
width: parent.width
height: parent.height
color: "transparent"
MouseArea {
anchors.fill: parent
enabled: !parent.disableParent // 禁止交互
onClicked: {
// 点击遮罩层时不做任何操作
}
}
Rectangle {
anchors.centerIn: parent
width: 200
height: 100
color : "white"
Text {
text : "I am the child window"
anchors.centerIn : parent
font.pixelSize : 20
}
Button {
text : "Close"
anchors.bottom : parent.bottom
anchors.horizontalCenter : parent.horizontalCenter
onClicked : childWindow.close()
}
}
}
通过以上步骤,即可实现子窗口显示时父窗口不可点击的效果。