Название: Скрыть не используемую ветку в модели Отправлено: UVV от Сентябрь 30, 2009, 06:33 Привет.
Фрагмент кода модели, унаследованной от QAbstractItemModel: Код Отображаю эту модель я в TreeView. В данном случае хотелось бы вот что: Есть 2 главных TreeItem. QString m_moduleName является вторым из них. Нужно сделать так, что если он пустой, то эту ветвь не отображать вообще. Как это сделать правильно? Код, приведённый выше, работает не совсем корректно. Название: Re: Скрыть не используемую ветку в модели Отправлено: spectre71 от Сентябрь 30, 2009, 09:02 В момент изменения данных для модели проверять пуста ли соответствующая ветка и при изменении ее состояний пуста->заполнена или заполнена->пуста, посылать свой сигнал модели которая вызовет необходимые методы (remove.., insert.., reset,.. итд)
Название: Re: Скрыть не используемую ветку в модели Отправлено: UVV от Сентябрь 30, 2009, 09:45 Да, reset() там и не было. Спасибо ;)
Название: Re: Скрыть не используемую ветку в модели Отправлено: spectre71 от Сентябрь 30, 2009, 09:58 Да, reset() там и не было. Спасибо ;) Может лучше beginRemoveRows/endRemoveRows и beginInsertRows/endInsertRowsНазвание: Re: Скрыть не используемую ветку в модели Отправлено: Joss от Сентябрь 30, 2009, 13:38 Я делал через QSortFilterProxyModel:
Код: class TreeModelProxy : public QSortFilterProxyModel Код: bool TreeModelProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { Чтобы прокси пересчитывалась при добавлении веток в пустой узел (или удалении), вызываю Код: emit layoutChanged(); в TreeModel::insertRows и TreeModel::removeRows. Название: Re: Скрыть не используемую ветку в модели Отправлено: UVV от Октябрь 01, 2009, 05:17 Может лучше beginRemoveRows/endRemoveRows и beginInsertRows/endInsertRows Эффективнее?А как быть со случаем, когда parent == root item? Название: Re: Скрыть не используемую ветку в модели Отправлено: UVV от Октябрь 01, 2009, 06:51 Может лучше beginRemoveRows/endRemoveRows и beginInsertRows/endInsertRows Эффективнее?А как быть со случаем, когда parent == root item? Да, QModelIndex() и if (!parent.isValid()) помогли. Тем не менее, вопрос про эффективность всё ещё в силе =) Хотя я уже догадываюсь, что всё-таки без reset() эффективнее ;) |