Как у QSqlQueryModel переопределить метод data и получить в нем значение ячейки?

Подскажите пожалуйста как выводить в переопределенном методе data значение ячейки?

QVariant PlayerModel::data(const QModelIndex &index, int role) const
{
    QVariant value = index.data();  // тут моя програмка крашится. 

    switch (role){
    case Qt::DisplayRole:
        return value;
    default:
       return QVariant::Invalid;
    }
}


даже если я знаю тип данных ячейки тоже не могу получить значение - вылетает:
int column = index.column();
if(column==2) int val = index.data().toInt();
  • Вопрос задан
  • 899 просмотров
Решения вопроса 1
@agvares
QModelIndex::data() реализован так, что возвращает QAbstractItemModel::data(). Вы переопределяете QAbstractItemModel::data() и вызываете в нём QModelIndex::data(), чтобы получить значение. Происходит бесконечный взаимный вызов функций и программа вылетает. В общем, для получения текущего значения в QAbstractItemModel::data() необходимо использовать метод родительского класса:
QVariant value = QSqlQueryModel::data(index, role);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
gbg
@gbg
Любые ответы на любые вопросы
Чтобы модифицировать значения в data, вам нужно реализовать свой фильтр на основе QAbstractProxyModel
Ответ написан
Комментировать
@happy_yar Автор вопроса
Да мне не то чтобы модифицировать. Мне нужно в зависимости от значения изменить фон ячейки.
Это же можно сделать без делегата и своего фильтра?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы