Just to make sure that it's not something complex that's happening, I put
together this simple test case (adapted from the documentation about models):
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
}
ListElement {
name: "Orange"
cost: 3.25
}
ListElement {
name: "Banana"
cost: 1.95
}
}
ListView {
x: 10
y: 200
width: 200; height: 250
model: fruitModel
delegate: Row {
Text { text: "Fruit: " + name }
Text { text: "Cost: $" + cost }
}
MouseArea {
anchors.fill: parent
onClicked: { fruitModel.get(0).name = "bob";
console.log("ListElement.name<http://ListElement.name>: " +
fruitModel.get(0).name) }
}
}
The elements created by the delegate do not update when the model data is
changed.
Please forgive the colors, just imagine the background is black (and the black
text color is white). =)
The doc says: "Data is provided to the delegate via named data roles which the
delegate may bind to."
from: http://doc.qt.nokia.com/4.7-snapshot/qdeclarativemodels.html
Is this a bug, or am I missing something?
Thanks!
Alan
On Jul 22, 2010, at 11:39 AM, ext
[email protected]<mailto:[email protected]> wrote:
Hi,
The docs mention it, but I can't seem to get it to work.
I am trying to get items in a list to bind to values from the model that is
assigned.
Here are some things I have tried:
Component {
id: bardelegate
Rectangle {
...
Rectangle {
id: self
...
opacity: selected ? 0.6 : 1.0
property bool itemSelected: model.selected
onItemSelectedChanged: opacity = itemSelected ? 0.6 : 1.0
Binding { target: self; property: "itemSelected"; value:
model.selected }
states: [
State {
name: "selected"
when: itemSelected
PropertyChanges {
target: self
opacity: 0.6
}
}
]
}
}
...
}
When I grab the model item and change the property: model.get(x).selected = true
The visual item does not change, I have checked to see that the model item
property it getting set correctly: console.log("item selected: " +
model.get(x).selected)
Anyone have any luck with this, is it supposed to work?
Here's the model code:
ListModel {
id: filteritems
ListElement { name: "people"; selected: true }
ListElement { name: "time"; selected: false }
}
My setup is a little more complex, as I am writing all my components in QML
directly instead of any C++ (Crazy? maybe.) So there are a few levels of
components going on, but everything else is working just fine.
Thanks for looking!
Alan
<ATT00001..txt>
_______________________________________________
Qt-qml mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-qml