Нужно запретить перемещение только некоторых итемов, остальные перемещать можно.
У меня есть Представление QTreeView и древовидная модель QStandardItemModel подключенная к представлению. Итемы в модели QStandardItem. В разных ветках дерева могут быть элементы с одинаковым именем (QStandardItem->text()) Перемещение элементов дерева из одной ветки в другую настроено и работает как надо за исключением одной вещи. Мне нужно чтобы при перемещении итема из одной ветки в другую перемещение не происходило если в конечной ветке есть итем с таким-же именем.
На данный момент мне удалось сделать следующее: при переносе элемента в ветку в которой есть итем с таким именем, я вывожу предупреждение, что перемещение невозможно, но в Представлении перемещение все равно успешно происходит и итем перемещается. Как сделать так что-бы и в Представлении итем не перемещался? А остальные итемы естественно должны перемещаться без проблем.
Я подумал, что во время перемещения мне нужно каким-то образом получить индекс модели для элемента на который я перемещаю и затем сделать его, например, неизменяемым (setEditable(false)). Но как можно было бы получить этот индекс я не знаю. Может кто-нибудь подскажет?
Может быть то что мне нужно, вообще должно реализовываться не через запрет изменения итема а как-то иначе? Подскажите.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Unknown akadamn
- 24 января 2025 г. 7:14
Qt - Тест 001. Сигналы и слоты
- Результат:84баллов,
- Очки рейтинга4
- Unknown akadamn
- 24 января 2025 г. 6:22
Qt - Тест 001. Сигналы и слоты
- Результат:42баллов,
- Очки рейтинга-8
Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопределенной функции dragMoveEvent()
Теперь нужно где-то сохранить QModelIndex перетаскиваемого элемента. Полагаю - это можно сделать в переопределенной функции mousePressEvent(), но пока не получается.Получилось сделать это через слот подключенный к сигналу мыши pressed