Я пытаюсь заставить мой первый QML TableView
работать в Qt 5.2 (поскольку мы сейчас зациклены на этой версии на работе), используя QAbstractTableModel
на бэкэнде.
Моя основная проблема что по какой-то причине itemDelegate
никогда не стреляет, поэтому я никогда не вижу ничего в виде, кроме контура TableView
. Я также проверил, что theData_
заполнен 2-мерными числами в каждой строке / столбце в конструкторе, и я делаю emit layoutChanged()
, а также emit dataChanged()
в конструкторе.
Я понимаю, что имею нет проверки ошибок для недопустимого QModelIndex
в вызове data()
.
Я также вообще не реализовал index()
.
Также есть необходимость в использовании ROLE
здесь?
Данные, которые я отображаю, представляют собой одно целое число (как QString
) на ячейку, больше ничего в это время.
Спасибо за ваше help
qml:
TableView {
width: 600
height: 600
model: myModel
visible: true
itemDelegate: Rectangle {
color: "lightgray"
width: 100
height: 20
Text {
text: styleData.value
color: "black"
}
}
}
соответствующий код из подкласса QAbstractTableModel:
int MyModel::rowCount(const QModelIndex&) const
{
return 10;
}
int MyModel::columnCount(const QModelIndex&) const
{
return 3;
}
QVariant MyModel::data(const QModelIndex& index, int role) const
{
const int row = index.row();
const int col = index.column();
return QString("%1").arg(this->theData_[col][row]);
}