n
Dec. 27, 2024, 9:41 p.m.

Нужно запретить перемещение только некоторых итемов, остальные перемещать можно.

У меня есть Представление QTreeView и древовидная модель QStandardItemModel подключенная к представлению. Итемы в модели QStandardItem. В разных ветках дерева могут быть элементы с одинаковым именем (QStandardItem->text()) Перемещение элементов дерева из одной ветки в другую настроено и работает как надо за исключением одной вещи. Мне нужно чтобы при перемещении итема из одной ветки в другую перемещение не происходило если в конечной ветке есть итем с таким-же именем.
На данный момент мне удалось сделать следующее: при переносе элемента в ветку в которой есть итем с таким именем, я вывожу предупреждение, что перемещение невозможно, но в Представлении перемещение все равно успешно происходит и итем перемещается. Как сделать так что-бы и в Представлении итем не перемещался? А остальные итемы естественно должны перемещаться без проблем.
Я подумал, что во время перемещения мне нужно каким-то образом получить индекс модели для элемента на который я перемещаю и затем сделать его, например, неизменяемым (setEditable(false)). Но как можно было бы получить этот индекс я не знаю. Может кто-нибудь подскажет?
Может быть то что мне нужно, вообще должно реализовываться не через запрет изменения итема а как-то иначе? Подскажите.

1

Do you like it? Share on social networks!

1
n
  • Jan. 3, 2025, 12:52 p.m.

Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопределенной функции dragMoveEvent()
Теперь нужно где-то сохранить QModelIndex перетаскиваемого элемента. Полагаю - это можно сделать в переопределенной функции mousePressEvent(), но пока не получается.Получилось сделать это через слот подключенный к сигналу мыши pressed

    Comments

    Only authorized users can post comments.
    Please, Log in or Sign up
    • Last comments
    • Evgenii Legotckoi
      March 9, 2025, 9:02 p.m.
      К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
    • VP
      March 9, 2025, 4:14 p.m.
      Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
    • ИМ
      Nov. 22, 2024, 9:51 p.m.
      Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
    • Evgenii Legotckoi
      Oct. 31, 2024, 11:37 p.m.
      Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
    • A
      Oct. 19, 2024, 5:19 p.m.
      Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html