Название: QAbstractItemModel
Отправлено: juvf от Август 27, 2021, 15:47
Не работает QAbstractItemModel. заголовок #ifndef TESTMODEL_H #define TESTMODEL_H
#include <QAbstractItemModel>
class TestModel : public QAbstractItemModel { Q_OBJECT public: TestModel(QObject *parent = 0);
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; virtual QModelIndex parent(const QModelIndex &index) const; };
#endif // TESTMODEL_H Реализация #include "testmodel.h"
TestModel::TestModel(QObject *parent) :QAbstractItemModel(parent) { }
int TestModel::columnCount(const QModelIndex &parent) const { return 2; }
QVariant TestModel::data(const QModelIndex &index, int role) const { int row = index.row(); int column = index.column(); if (!index.isValid() || row >= rowCount() || column >= columnCount()) return QVariant(); return "Hello word"; }
QModelIndex TestModel::index(int row, int column, const QModelIndex &parent) const { return createIndex(row, column, (void*)0); }
QModelIndex TestModel::parent(const QModelIndex &index) const { return QModelIndex(); }
int TestModel::rowCount(const QModelIndex &parent) const { return 2; }
rowCount() и columnCount() возращают размер модели 2х2. Ожидаю увидеть в QTreeView таблицу 2х2, в каждой клетке должно быть "Hello word". Но клеток нет. только горизонтальный заголовок с двумя колонками. Примеров построения холовордной модели QAbstractItemModel не нашел. Подскажите, чего не хватает, чтобы отобразить таблицу 2х2?
Название: Re: QAbstractItemModel
Отправлено: kambala от Август 29, 2021, 08:50
Может забыл присвоить эту модель своему view?
Название: Re: QAbstractItemModel
Отправлено: Авварон от Август 29, 2021, 18:57
не нашел.
https://doc.qt.io/qt-5/modelview.html навскидку - надо роль проверять в data(), иначе возвращается лабуда для цвета/сайзХинта и прочего
Название: Re: QAbstractItemModel
Отправлено: juvf от Август 30, 2021, 06:56
не нашел.
https://doc.qt.io/qt-5/modelview.html навскидку - надо роль проверять в data(), иначе возвращается лабуда для цвета/сайзХинта и прочего Да, роль не проверял. Думал что только текст в ролях. Поправил, всё заработал. Спасибо!!!
|