Russian Qt Forum
Ноябрь 22, 2024, 00:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вставка строк в QSortFilterProxyModel древовидной модели  (Прочитано 3554 раз)
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« : Сентябрь 11, 2019, 18:14 »

Здравствуйте
У меня в QTreeView вставлена модель QSortFilterProxyModel, которая берет данные из QAbstractItemModel(sourceModel).
Я хочу вставлять строки в древовидную модель следующим образом: пользователь правой кнопкой мыши нажимает на элемент, которому хочет добавить child; во всплывающем окне пишет его имя и, по идее, должен вставиться новый элемент.
Функцией QTreeView::selectedIndexes, можно определить (если я правильно понимаю) только индекс для QSortFilterProxyModel. Строка вставляется в ее sourceModel. Чтобы вставку выполнить надо знать индекс родителя в sourceModel, а не в QSortFilterProxyModel.
В целом хочу сделать древовидную модель, в которую можно вставить элемент и элементы которого могут сортироваться (в пределах одного уровня, чтобы дети одного родителя могли идти по алфавиту)
Можно, сделать сортировку через пользовательскую функцию пределах модели QAbstractItemModel, но, кажется, что правильнее через QSortFilterProxyModel.

Можете идеологически подсказать, как организовать вставку строки в такую древовидную модель, когда пользователь через графический интерфейс указывает, какому родителю вставить ребенка?
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #1 : Сентябрь 12, 2019, 07:50 »

Соотношения индексов sourceModel и QSortFilterProxyModel можно получить с помощью методов

Код
C++ (Qt)
virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override;
virtual QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection) const override;
virtual QItemSelection mapSelectionToSource(const QItemSelection &proxySelection) const override;
virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const override;
 
Записан
YvenTitan
Самовар
**
Offline Offline

Сообщений: 174


Просмотр профиля
« Ответ #2 : Сентябрь 12, 2019, 09:42 »

Спасибо, помогло!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.324 секунд. Запросов: 22.