Как получить доступ к данным в делегате QML TableViewColumn?
Как получить доступ к текущему элементу в TableViewColumn
?
TableView {
id: atcTableView
model: myatclist
...
TableViewColumn {
...
}
TableViewColumn {
id: atcTableViewColFreq
role: "frequency"
title: "Frequency"
width: 120
delegate: Component {
Text {
text: "Freq is " + currentItem / model / model.frequency
}
}
}
На этот похожий вопрос " Как вы получаете доступ к ролям currentItem из списка в QML? " Я пробовал все виды комбинаций model
, modelData
, currentItem
и что-то вроде model.role
,
Если я удалю делегата полностью, частота будет отображаться правильно. Модель основана на QAbstractListModel
, Есть намеки?
Кстати, я могу видеть в отладке QML, какие свойства доступны в делегате?
Редактировать на основе комментария Какаду
delegate {
Text {
text: "freq is " + frequency
}
}
дает мне: ReferenceError: frequency is not defined
3 ответа
Решение
delegate: Text { text: view.model.get(styleData.row).frequency }
Попробуйте использовать styleData.value:
delegate: {
Text { text: styleData.value }
}
Это описано здесь (ищите свойство itemDelegate)
Вы должны определить роль в QAbstractItemModel.
QHash YourClassModel:: roleNames () const {
roles[Qt::UserRole + 1] = "frequency"; return roles;
}