我有QML
个应用程序,应该有很多对话框。当用户按下ToolButton
时,应该可以看到相应的对话框,以便用户可以修改该对话框的控件。这是最小代码:
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Window 2.0
ApplicationWindow {
visible: true
property variant dialog: Loader{sourceComponent: wind}
toolBar: ToolBar {
Row {
anchors.fill: parent
ToolButton {
iconSource: "1.png"
checkable: true
checked: false
onClicked: dialog.visible=checked
}
}
}
Component {
id: wind
Window{
visible: false
flags: Qt.Dialog
Button{
text: "hello"
}
}
}
}
然而,当我按ToolButton
对话框时,不可见。有什么问题?
答案 0 :(得分:2)
property variant dialog: Loader{sourceComponent: wind}
- 这是错误的,不要指望元素在声明为属性时显示,它必须是其父组件的子元素。
onClicked: dialog.visible=checked
- 这是错误的,您需要使用对话框的item
属性来引用加载器实例化的对象
有效的代码:
ApplicationWindow {
visible: true
toolBar: ToolBar {
Row {
anchors.fill: parent
ToolButton {
checkable: true
checked: false
onClicked: dialog.item.visible = checked
}
}
}
Loader {
id: dialog
sourceComponent: wind
}
Component {
id: wind
Window {
width: 100
height: 100
Button {
text: "hello"
}
}
}
}