PyQT - Как вы можете сделать QTreeview не редактируемым, но также и выбираемым?

Я только что переключился с wxPython на PyQT, и у меня возникли некоторые проблемы с QTreeview. У меня есть QTreeview, который будет отображать данные, разделенные на категории, которые можно расширять, но данные в этом TreeView не должны редактироваться, но мне нужно, чтобы пользователь мог выбрать данные (двойной щелчок приведет к выполнению другого метода). Я не уверен, как сделать это только для чтения, но также и выбор. Я использую QStandardItemModel с QStandardItem для хранения данных.

Любая помощь приветствуется.

1 ответ

Решение

Вы можете сделать отдельные элементы недоступными для редактирования, выполнив это при создании QSandardItem

item = QStandardItem('my_item_text')
item.setEditable(False)

Вы можете отключить редактирование всего дерева, позвонив

my_treeview.setEditTriggers(QAbstractItemView.NoEditTriggers)

По умолчанию древовидное представление должно позволять вам выбирать элементы, но если вы хотите изменить поведение по умолчанию, вам нужно посмотреть на setSelectionMode() а также setSelectionBehavior() методы дерева (хорошо они для QAbstractItemView который QTreeView наследует от). Документация по С ++ для этих методов может быть найдена здесь, которую я обычно использую поверх документации PyQt, поскольку она часто более полна, и ее нетрудно перевести на код Python. Просто замените все экземпляры :: с .)

Другие вопросы по тегам