Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Larry от Декабрь 19, 2010, 14:09



Название: наследование QAbstractItemModel
Отправлено: Larry от Декабрь 19, 2010, 14:09
Добрый день, форумчане! Попытался создать свою модель на основе QAbstractItemModel. Переписал методы: rowCount, data, headerData, columnCount, но при запуске выдает ошибку, что невозможно создать объект абстрактного класса...какие методы надо перегрузить еще...Пробовал создавать на основе QAbstractListModel и QAbstractTableModel все работает нормально. Уже третий день не могу найти причину...


Название: Re: наследование QAbstractItemModel
Отправлено: Kolobok от Декабрь 19, 2010, 14:31
QAbstractTableModel переопределяет всего 2 метода. Посмотри, какой из них абстрактный в QAbstractItemModel.


Название: Re: наследование QAbstractItemModel
Отправлено: Larry от Декабрь 19, 2010, 14:47
QAbstractTableModel и QAbstractListModel переопределяют dropMimeData и index...я должен их оба переопределить или хватит  только метода index?


Название: Re: наследование QAbstractItemModel
Отправлено: Larry от Декабрь 19, 2010, 14:59
переопределил оба метода,..почти переопределил, просто сделал заглушку, т.е. вернул значения в index QModelIndex, а из dropMimeData, чтобы проверить скомпилится или нет...та же самая ошибка :(

Код:
QModelIndex StringListModel index(int row, int column, const QModelIndex& parent) const
{
return QModelIndex();
}
bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent)
{
return false;
}

что еще может быть?


Название: Re: наследование QAbstractItemModel
Отправлено: Kolobok от Декабрь 19, 2010, 16:25
еще QModelIndex parent ( const QModelIndex & index )
Не знаю, почему его нет в описании QAbstractTableModel. Наверное, потому что заглушка.

dropMimeData не абстрактный. Его не обязательно переопределять.


Название: Re: наследование QAbstractItemModel
Отправлено: Fat-Zer от Декабрь 19, 2010, 17:07
Вроде компилято же пишет замечания, что нужно перегружать...
надо поидее все эти перегрузить:
Код:
	QVariant data(const QModelIndex &index, int role) const;
QModelIndex index(int row, int column,
  const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &index) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
ЗЫ: Посмотрите пример с деревом


Название: Re: наследование QAbstractItemModel
Отправлено: Larry от Декабрь 19, 2010, 18:31
Все заработало, большое спасибо всем кто откликнулся :). Минимальный набор методов, как написал Fat-Zer...Еще раз спасибо :)