Russian Qt Forum

Qt => Model-View (MV) => Тема начата: juvf от Август 27, 2021, 15:47



Название: 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(), иначе возвращается лабуда для цвета/сайзХинта и прочего
Да, роль не проверял. Думал что только текст в ролях. Поправил, всё заработал. Спасибо!!!