Я пытаюсь заставить свой первый QML TableView
работать в Qt 5.2 (поскольку мы застряли на этой версии прямо сейчас на работе), используя QAbstractTableModel
на бэкэнде.
Моя главная проблема заключается в том, что по какой-то причине itemDelegate
никогда не срабатывает, поэтому я никогда не вижу ничего в представлении, кроме контура TableView
. Я также проверил, что theData_
заполнен двумерными числами в каждой строке/столбце в конструкторе, и я делаю emit layoutChanged()
, а также emit dataChanged()
в конструкторе.
Я понимаю, что в настоящее время у меня нет проверки ошибок на недопустимый QModelIndex
в вызове data()
.
Я тоже не реализовал index()
вообще.
Также есть ли необходимость использовать здесь ROLE
?
Данные, которые я отображаю, представляют собой одно целое число (как QString
) на ячейку, в настоящее время ничего больше.
Спасибо за вашу помощь
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]);
}