LINUX.ORG.RU

переопределение data у QSortFilterProxyModel

 , , ,


0

1

Есть class NewSortFilterProxyModel : public QSortFilterProxyModel работающий с QSqlTableModel и осуществляющий сортировку по более чем одному столбцу сразу.

Потребовалось некоторым строкам в таблице определить бекграунд, для этого переопределяю метод data:

QVariant NewSortFilterProxyModel::data(const QModelIndex &index, int role) const
{
    if(!index.isValid())
        return QVariant();
    bool val = sourceModel()->index(index.row(), 5).data(Qt::DisplayRole).toBool();
    switch (role) {
    case Qt::DisplayRole:
        return sourceModel()->data(index);
    case Qt::BackgroundRole:
        if(!val)
            return QBrush(Qt::gray);
    default:
        return QVariant();
    }
}

Собственно после этого отваливается любая сортировка, так понимаю нужно что то вернуть по case Qt::InitialSortOrderRole но не пойму что именно -_- как сортировку починить?

★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

Ответ на: комментарий от anonymous

Спасибо что тыкнули носом!!!! чет я в документации запутался и не туда гляжу, видно на сегодня хватит кодингом....

Noob_Linux ★★★★
() автор топика

Если нужно просто отсортировать по одному столбцу, а на одинаковых элементах по другому, то не нужно городить свой класс, а можно просто сделать цепочку из двух прокси.

unC0Rr ★★★★★
()
Ответ на: комментарий от unC0Rr

Мне нужна сортировка для произвольного числа столбцов, все определяет пользователь, как ему удобно.

Noob_Linux ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.