#python #pyqt #pyqt5
#python #pyqt #pyqt5
Вопрос:
Мне нужно иметь возможность программно выбирать некоторые строки TableView, следовательно, показывать выбранные строки пользователю. Конечно, пользователь не должен иметь возможности изменять выбранные строки, щелкая здесь и там.
В настоящее время я нашел единственный способ отключить взаимодействие с пользователем с помощью:
self.table_view.setEnabled(False)
Хотя это решает проблему выбора пользователя, это также изменяет вид таблицы, делая все это серым:
Как я могу восстановить исходный стиль, при котором выбранные строки отображаются синим цветом?
Ответ №1:
Откройте QDesigner и загрузите свой файл .ui. Нажмите на свой QTableView и в редакторе свойств (правая боковая панель) прокрутите вниз до фиолетовой области. Там вы увидите editTriggers
, разверните это. Проверьте первый, который говорит NoEditTriggers
.
Это отключит пользователю редактирование ячеек в таблице. Дайте мне знать, если мои инструкции были недостаточно четкими, и я могу предоставить фотографии.
Комментарии:
1. Я кодирую все это с нуля, а не с помощью QDesigner
2. Затем попробуйте
self.table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
.3. Это не сработало. Может быть, потому что речь идет не о редактировании, а о выборе.
Ответ №2:
Если я правильно понимаю ваш вопрос, вам нужно поиграть со свойствами :
- setSelectionMode()
- setSelectionBehavior()
table_view.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection) table_view.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)