Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 30.12.2020
Сообщений: 11
PyQt5

Запретить drag&drop для одного из элементов TreeView

05.12.2022, 16:46. Показов 604. Ответов 4
Метки pyqt (Все метки)

Студворк — интернет-сервис помощи студентам
В главном окне для treeView устанавливются модель файловой системы и разрешения на drag&drop. В папке, которую отображает treeView, содержится еще несколько папок с файлами. Нужно запретить перемещение папки, если ее имя System. Как обработать это событие?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MainWindow(QtWidgets.QMainWindow, gui.Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
 
        self.dirModel = QtWidgets.QFileSystemModel()
        self.dirModel.setRootPath(path)
        self.treeView.setModel(self.dirModel)
        self.treeView.setRootIndex(self.dirModel.index(path))
 
        self.treeView.setDragDropMode(QAbstractItemView.InternalMove)
        self.treeView.setDragEnabled(True)
        self.treeView.setAcceptDrops(True)
        self.treeView.setDropIndicatorShown(True)
        self.dirModel.setReadOnly(False)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2022, 16:46
Ответы с готовыми решениями:

PyQt5 Drag&Drop path file to QLineEdit
Здравствуйте! Делаю видео конвертер. Задача: перетащить файл в приложение из файловый системы Windows на пустую строчку QLineEdit и...

Drag&Drop Multiselect узлов и дочерних элементов treeview
Доброго времени суток. Знаю, что в treeview мультивыделение не поддерживает, за исключением checkboxes выделения. Так вот, как при помощи...

Drag&Drop из DataGridView в TreeView
Нужно реализовать перетаскивание в каталоге из DataGridView в TreeView, желательно с отрисовкой. Как, например, это реализовано в...

4
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
05.12.2022, 17:32
по событию dragEnterEvent, по имени папки например
https://pythonworld.ru/gui/pyqt5-dragdrop.html
0
3 / 3 / 0
Регистрация: 30.12.2020
Сообщений: 11
05.12.2022, 17:56  [ТС]
vic5710, проблема в том, что не понимаю как переопределить этот метод именно для treeview этого окна, во всех туториалах идет переопределение внутри создаваемого класса QTreeView, у меня он создан автоматически через QtDesigner
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
05.12.2022, 18:36
Лучший ответ Сообщение было отмечено llmnmstd как решение

Решение

проще через модель сделать (и надежней)
Python
1
2
3
4
5
6
7
8
class FileSystemModel(QFileSystemModel):
    def __init__(self):
        super().__init__()
    
    def flags(self,index):
        if 'System' in self.data(index):
            return Qt.NoItemFlags
        return QFileSystemModel.flags(self,index)
1
3 / 3 / 0
Регистрация: 30.12.2020
Сообщений: 11
05.12.2022, 18:48  [ТС]
vic5710, Вы мой спаситель! большое спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2022, 18:48
Помогаю со студенческими работами здесь

Drag & Drop запретить перетаскивать элемент за границы
есть примерно такая верстка <ul class="menu"> <li class="menu1"></li> <li class="menu2"></li> <li...

Drag&Drop нескольких записей из dataGridView в treeView
Всем привет. Как сделать по одной записи я знаю (код ниже) В dataGridView есть мультивыделение, поэтому и встал вопрос, как сделать...

Как проскролить Treeview во время Drag&Drop?
B VB6 это легко делается использованием Win32 API функции SendMessage(...), в . NET это почему-то неработает. Фрагмент кода: Private...

Реализация Drag&Drop для большого количества элементов
К примеру, на форме у меня присутствует 50 текстбоксов, которые должны принимать текстовые данные, и 10 текстбоксов , которые содержат эти...

Drag&Drop: как определить, что некий итем TreeView был перетянут в строку ListView?
Доброго времени суток! Подскажите как используя с++ и WINAPI определить, что некий итем treeview был притащен в строку listview?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru