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. Просто замените все экземпляры ::
с .
)