gpt4 book ai didi

c++ - 覆盖 QML 文件中设置的 ListModel

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:13 25 4
gpt4 key购买 nike

我有一个 QML C++ 项目,其中 C++ 部分连接后端和 QML 用户界面之间的连接。

我将 QObject 的子类设置为上下文属性,它具有 QAbstractListModel 属性。

我的一个组件在 qml 文件中预定义了一个列表模型。我想用我自己的列表模型替换它。但如果未设置上下文属性,我想保留该模型。这使我可以在没有 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
}
}
}

如果我将 myObject 设置为上下文属性,是否可以同时拥有 qml 文件中的模型用于在 Designer 中显示默认值和用于 Gui 测试以及无痛覆盖?

编辑:我使用 QT 4 和 QtQuick 1.1

最佳答案

我不知道这是否适用于 QtQuick 1,但您可以依赖异常处理。这样的东西适用于 QtQuick 2:

ListView {
id: list_view1
anchors.fill: parent
delegate: Item {
...
}
model: myModel
Component.onCompleted:{
try{
model = myObject.myModel
}
catch(exception){
console.log("myObject unknown, switching to default model")
model = myModel
}
}
}

关于c++ - 覆盖 QML 文件中设置的 ListModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27274503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com