Я пытаюсь заставить простой 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?
Спасибо, Алан
parent()
должен возвращать недопустимыйQModelIndex
(созданный с помощью конструктора по умолчанию). - person Leiaz   schedule 09.06.2014