Почему моя модель не отображается в QListView?

Я пытаюсь получить простой QAbstractItemModel для отображения в QListView, но немного борюсь. Вот моя реализация модели:

TestModel::TestModel(QObject *parent) : QAbstractItemModel(parent)
{
}

QVariant TestModel::data(const QModelIndex &index, int role) const
{
if(role == Qt::DisplayRole)
{
return QVariant("FRED");
}

return QVariant();
}

Qt::ItemFlags TestModel::flags(const QModelIndex &index) const
{
return Qt::ItemIsSelectable |  Qt::ItemIsEditable | Qt::ItemIsEnabled;
}

QVariant TestModel::headerData(int section, Qt::Orientation orientation, int role) const
{
if(role == Qt::DisplayRole)
{
return QVariant("BING");
}

return QVariant();
}

QModelIndex TestModel::index(int row, int column, const QModelIndex &parent) const
{
return createIndex(row, column);
}

QModelIndex TestModel::parent(const QModelIndex &index) const
{
return createIndex(0, 0);
}

int TestModel::rowCount(const QModelIndex &parent) const
{
return 1;
}

int TestModel::columnCount(const QModelIndex &parent) const
{
return 1;
}

Если я установлю модель моего QListView на экземпляр вышеупомянутой модели, то ничего не появится. Однако, если я использую QTableView вместо этого, он заполняется, как и ожидалось.

Что мне нужно сделать, чтобы этот простой пример работал с QListView?

Спасибо,
Алан

0

Решение

Модель списка не имеет родительской иерархии.
Следовательно, parent метод должен быть реализован как,

QModelIndex TestModel::parent(const QModelIndex &index) const
{
return QModelIndex();
}
1

Другие решения


По вопросам рекламы [email protected]