我想從QML中的ListView中訪問角色。從本質上講,我有這個在我的QML:如何從QML中的listview中訪問currentItem的角色?
ListView {
id: myId
model: myModel
delegate: Item {
Text {
text: model.text
}
Text {
text: model.moreText
}
}
}
myModel
是QAbstractListModel實現。這個QML部分是一個可重用的組件,因此該模型可以具有各種數據類型的任意數量的不同角色。我想要做的是綁定到ListView的currentItem
屬性的給定角色的值。換句話說,我想有可能在ListView的屬性到當前選擇的項目結合如下頁面上的其他一些Component
:
Text {
text: myId.currentItem.text // Or myId.currentItem.model.text (or something similar)
}
請記住,我需要這個一般可用,因爲我會爲許多模型類型做很多工作,我試圖不爲每個模型和ListView編寫那種自定義代碼。
它似乎應該很容易訪問當前選定項目的屬性,但據我所知,這是不可能的。由於模型在只有一個角色時似乎被區別對待,這個問題變得更加複雜。我的意思是,有時你通過model.roleName
訪問你的角色,而當你只有一個角色時,你使用modelData
。
如果有人有任何建議,我會很感激。非常感謝!
編輯
我發現這一點:
http://comments.gmane.org/gmane.comp.lib.qt.qml/1778
然而,這似乎並沒有爲我工作。當我嘗試在我的QML腳本中使用數據時出現類型錯誤,並且沒有可用的類型轉換,因此我不知道該怎麼做。歡迎任何建議!
謝謝!
傑克
非常感謝您的回覆!嗯...我以爲徹底地嘗試了這一點,但可能會有一些我錯過的細微差別。很高興知道它在爲某人工作!我會再次給這個解決方案,看看這是否有訣竅。我很欣賞model.role和modelData之間的解釋。我會讓你知道結果如何。再次感謝! – 2011-03-09 19:59:51
看起來確實有效。不知道我以前錯過了什麼。無論哪種方式,這個解決方案花了幾個小時才找到希望,現在它在StackOverflow上,其他人將能夠快速找到它。再次感謝! – 2011-03-10 12:14:41
有什麼辦法可以抽象出不同的模型類型嗎?我在問,因爲我想在測試期間處理QML ListModel,並在C++應用程序中使用相同的QML代碼處理對象列表。 – ssc 2013-08-29 11:18:27