我有一个 QML C++ 项目,其中 C++ 部分将后端和 QML 用户界面之间的连接联系起来。
我将具有 QAbstractListModel 属性的 QObject 的子类设置为上下文属性。
我的一个组件在 qml 文件中预定义了一个 List 模型。我想用我自己的列表模型替换它。但是如果未设置上下文属性,我想保留该模型。这允许我在没有 c++ 部分的情况下运行程序。将模型设置为上下文属性并没有进行切割,因为本地模型推翻了上下文属性。
我的 QML 看起来像这样
Rectangle {
id: root_rect
objectName: "root_rect"
width: 300
height: 300
color: "#dbdbdb"
ListModel {
id: myModel
ListElement {
name: "foo1"
fin: "bar1"
}
ListElement {
name: "foo2"
fin: "bar2"
}
}
Rectangle {
id: list_bg
color: "#ffffff"
clip: true
anchors.top: parent.top
anchors.topMargin: 10
anchors.bottom: parent.bottom
anchors.bottomMargin: 10
anchors.left: parent.left
anchors.leftMargin: 10
anchors.right: parent.right
anchors.rightMargin: 10
ListView {
id: list_view1
anchors.fill: parent
delegate: Item {
x: 5
height: 40
Row {
id: row1
spacing: 10
Text {
text: name+" "+fin
anchors.verticalCenter: parent.verticalCenter
font.bold: true
}
}
}
model: myModel
//model: myObject.myModel
}
}
}
是否可以同时拥有 qml 文件中的模型,用于在 Designer 中显示默认值和用于 Gui 测试,如果我将 myObject 设置为上下文属性,则可以轻松覆盖?
编辑:我使用 QT 4 和 QtQuick 1.1