Russian Qt Forum
Июнь 23, 2024, 08:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QAbstractItemModel  (Прочитано 3154 раз)
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« : Август 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?

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4733



Просмотр профиля WWW
« Ответ #1 : Август 29, 2021, 08:50 »

Может забыл присвоить эту модель своему view?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Август 29, 2021, 18:57 »

не нашел.

https://doc.qt.io/qt-5/modelview.html

навскидку - надо роль проверять в data(), иначе возвращается лабуда для цвета/сайзХинта и прочего
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #3 : Август 30, 2021, 06:56 »

не нашел.

https://doc.qt.io/qt-5/modelview.html

навскидку - надо роль проверять в data(), иначе возвращается лабуда для цвета/сайзХинта и прочего
Да, роль не проверял. Думал что только текст в ролях. Поправил, всё заработал. Спасибо!!!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.