Russian Qt Forum
Сентябрь 30, 2024, 20:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: наследование QAbstractItemModel  (Прочитано 6965 раз)
Larry
Гость
« : Декабрь 19, 2010, 14:09 »

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

QAbstractTableModel переопределяет всего 2 метода. Посмотри, какой из них абстрактный в QAbstractItemModel.
Записан
Larry
Гость
« Ответ #2 : Декабрь 19, 2010, 14:47 »

QAbstractTableModel и QAbstractListModel переопределяют dropMimeData и index...я должен их оба переопределить или хватит  только метода index?
Записан
Larry
Гость
« Ответ #3 : Декабрь 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;
}

что еще может быть?
Записан
Kolobok
Гость
« Ответ #4 : Декабрь 19, 2010, 16:25 »

еще QModelIndex parent ( const QModelIndex & index )
Не знаю, почему его нет в описании QAbstractTableModel. Наверное, потому что заглушка.

dropMimeData не абстрактный. Его не обязательно переопределять.
Записан
Fat-Zer
Гость
« Ответ #5 : Декабрь 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;
ЗЫ: Посмотрите пример с деревом
« Последнее редактирование: Декабрь 19, 2010, 17:10 от Fat-Zer » Записан
Larry
Гость
« Ответ #6 : Декабрь 19, 2010, 18:31 »

Все заработало, большое спасибо всем кто откликнулся Улыбающийся. Минимальный набор методов, как написал Fat-Zer...Еще раз спасибо Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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