crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Проблема использования QSortFilterProxyModel вместе с кастомной иерархической моделью
tp4
  опции профиля:
сообщение 24.11.2011, 19:08
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 1.10.2009
Пользователь №: 1128

Спасибо сказали: 1 раз(а)




Репутация:   0  


Здравствуйте, господа!

Имеется кастомная иерархическая модель, унаследованная от QAbstractModelItem. Написана своя прокси модель. Наследовался от QSortFilterProxyModel'и (переопределил методы: data, setData, headerData, mapToSource, mapFromSource, hasChildren, rowCount). Помимо функциональности QSortFilterProxyModel она также умеет выкидывает некоторые столбцы, а также меняет местами оставшиеся. Все работает, если нулевой столбец из исходной модели соответствует нулевому столбцу в прокси-модели. Если же прокси-модель перемещает этот столбец, то отображение некорректно: Стрелочки (или крестики) рисуются правильно - напротив тех элементов, у которых есть потомки. Но при попытке раскрыть такой элемент оказывается, что внутри нет элементов.
Вот некоторые методы прокси-модели:

bool MySortFilterProxyModel::hasChildren(const QModelIndex &parent) const
{
    if (parent.isValid() && parent.column() != 0)
        return false;

    QModelIndex source_parent = mapToSource(parent);
    return  sourceModel()->hasChildren( source_parent.sibling(source_parent.row(), 0) );
}



int MySortFilterProxyModel::rowCount(const QModelIndex &parent) const
{
    if (parent.isValid() && parent.column() != 0)
        return 0;

    QModelIndex source_parent = mapToSource(parent);
    return sourceModel()->rowCount( source_parent.sibling(source_parent.row(), 0) );
}


Причем MySortFilterProxyModel::rowCount возвращает правильное количество столбцов. Но также замечен вызов метода rowCount исходной модели, минуя вызов MySortFilterProxyModel::rowCount. Это происходит при вызове QSortFilterProxyModel::index(). Может быть проблема связана с этим?

Буду рад вашей помощи. Спасибо.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
tp4
  опции профиля:
сообщение 5.12.2011, 17:53
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 1.10.2009
Пользователь №: 1128

Спасибо сказали: 1 раз(а)




Репутация:   0  


Попробую задать вопрос более обшего характера в рамках этого треда.
Как правильно написать свою прокси-модель, которая будет удалять и менять местами столбцы из иерархической модели, унаследованной от QAbstractItemModel?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 15:19