Russian Qt Forum

Qt => Model-View (MV) => Тема начата: proton от Ноябрь 02, 2009, 09:12



Название: QSortFilterProxyModel::index() возращает невалидный индекс
Отправлено: proton от Ноябрь 02, 2009, 09:12
Отнаследовал EventProxyModel от QSortFilterProxyModel, релиализовал функцию filterAcceptsRow():
Код:
bool EventProxyModel::filterAcceptsRow (int source_row, const QModelIndex & source_parent) const
{
QModelIndex source_index = index(source_row, 2, source_parent);
int iid = data(source_index, Qt::UserRole).toInt();
if (iid!=my_id) return false;
        return true;
}

Сначала все работает нормально, проблема в том, что когда строка уже скрыта, то index(source_row, 2, source_parent) возвращает пустой индекс.

Где мой косяк?


Название: Re: QSortFilterProxyModel::index() возращает невалидный индекс
Отправлено: lit-uriy от Ноябрь 02, 2009, 10:24
ну модельный индекс запросто может быть недействительным (invalid), просто проверяй этот момент и всё
Код
C++ (Qt)
bool QModelIndex::isValid () const


Название: Re: QSortFilterProxyModel::index() возращает невалидный индекс
Отправлено: proton от Ноябрь 10, 2009, 23:53
ну модельный индекс запросто может быть недействительным (invalid), просто проверяй этот момент и всё
Код
C++ (Qt)
bool QModelIndex::isValid () const
Ну естественно он недействителен, в этом, как раз и проблема, что когда строка скрыта индекс не действителен.


Название: Re: QSortFilterProxyModel::index() возращает невалидный индекс
Отправлено: break от Ноябрь 11, 2009, 02:58
virtual QModelIndex mapFromSource ( const QModelIndex & sourceIndex ) const
virtual QModelIndex mapToSource ( const QModelIndex & proxyIndex ) const

Здесь не помогут? - наверное source_row и source_paren - имеются ввиду исходные индексы относительно уже FilterProxyModel а не исходной модели в которой индексы этих строк все еще валидные... но может я и не прав...