- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
本质上,我有一个普通的 ListView:
Rectangle {
id: mylist
ListModel {
id: mylistModel
ListElement {
text: "blah1"
}
ListElement {
text: "blah2"
}
ListElement {
text: "blah3"
}
}
Component {
id: mylistDelegate
Text {
id: mylistDelegateText
text: text
property bool mylistDelegateTextEnabled: false
}
}
ListView {
id: mylistView
model: mylistModel
delegate: mylistDelegate
}
}
请忽略我可能通过 chop 代码以专注于重要内容而引入的任何问题。
无论如何,现在我的问题是我想访问 ListElement 的指定委托(delegate)并查看 mylistDelegateTextEnabled 在 javascript 循环中的值。例如,此循环遍历当前列表并为我提供模型中 ListElements 的文本:
for(var i = 0; i < mylistModel.count; ++i) {
console.log(mylistModel.get(i).text);
}
这显然工作正常。
现在我想要的基本上是这样的:
for(var i = 0; i < mylistModel.count; ++i) {
console.log(mylistModel.get(i).text);
console.log(mylistModel.get(i).delegate.mylistDelegateTextEnabled);
}
唉,这似乎没那么容易。
感谢帮助。
最佳答案
您不能以这种方式访问委托(delegate),因为它们是 transient 对象,由 ListView
自行决定创建和销毁。如 documentation 中所述对于代表:
Delegates are instantiated as needed and may be destroyed at any time. State should never be stored in a delegate.
是否有特殊原因导致您不能向 ListModel
添加 textEnabled
标志?例如:
import QtQuick 1.0
Rectangle {
id: mylist
width:300
height:300
ListModel {
id: mylistModel
ListElement {
name: "blah1"
textEnabled:false
}
ListElement {
name: "blah2"
textEnabled:false
}
ListElement {
name: "blah3"
textEnabled:false
}
}
Component {
id: mylistDelegate
Text {
id: mylistDelegateText
text: name
color: textEnabled?"red":"black"
MouseArea {
anchors.fill:parent;
onClicked: {
mylistModel.setProperty(index, "textEnabled", !textEnabled);
}
}
}
}
ListView {
id: mylistView
model: mylistModel
delegate: mylistDelegate
width:100;
height:100
}
}
关于javascript - 如何在 QML 中访问 ListView 的 ListModel 的 ListElement 的映射委托(delegate)数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775858/
我有一个listview谁的代表中有一个中继器,应该由文本填充。如果中继器的模型属性是这样硬编码的: model: ['String 1', 'String 2', 'String 3']; 它可以完
我有一个如下所示的 ListModel: ListModel { id: liveFeedModel ListElement { modelSrc: [ ListEle
我在 QML 中有一个自定义对象,它使用 Loader 动态加载 qml 对象并设置它的属性。我想访问 ListElement 的所有属性,并将其传递给加载器。 model: ListModel {
我是 QML、QtQuick 和 Python 的新手。我想使用 QML 显示文件列表(完整路径)。看来我应该使用 ListView 和 ListElements。我发现的示例和教程都使用硬编码且非常
我有一个 ListModel: ListModel { ListElement { property: "value" } ListElement { property:
我正在尝试使列表元素内的链接可点击。列表元素使用 :after 伪元素设置样式,因为隐藏了链接中的最后一个字符。 这是我的 jsfiddle 我需要纯 CSS 解决方案。我可以使用 JavaScrip
在 QML ListView 中,我想在单击 MouseArea 时调用一个函数: ListView{ anchors.fill: parent orientation: ListVi
Qt QML 有一个 ListModel可用于表示列表数据。它提供了许多向列表添加元素的方法,但我能找到的唯一检索元素的方法是 get()期望索引的方法。 我想检查我的 ListModel 是否包含特
我尝试访问 ListElement (QML):color 的属性; ListModel { id:myListModel ListElement {name:"one" ;color
嗯,我正在学习使用 QML,但我有一个疑问。在我的示例中,我在 QML 中有一个带有 ListElements 的 ListModel,并且有一个带有矩形、PathView 等的 QML 主文件。 我
本质上,我有一个普通的 ListView: Rectangle { id: mylist ListModel { id: mylistModel Lis
我是一名优秀的程序员,十分优秀!