#pyqt #pyqt5
#pyqt #pyqt5
Вопрос:
У меня есть QTableWidget с данными, по которым я хотел бы, чтобы пользователь мог дважды щелкнуть и скопировать определенную часть текста. Единственное, что я хочу отключить, это возможность пользователя изменять этот текст, что означает, что установка флага ~Qt.ItemIsEditable
слишком ограничительна. Как я могу добиться этого в PyQt5?
Комментарии:
1. qtreewidget или QTableWidget?
Ответ №1:
Примечание: Это решение работает для всех типов классов, которые наследуются от QAbstractItemView, таких как QTableWidget или QTreeWidget.
Возможное решение — использовать изменение редактора, чтобы он был доступен только для чтения через делегата.
class StyledItemDelegate(QStyledItemDelegate):
def createEditor(self, *args):
editor = super().createEditor(*args)
if isinstance(editor, QLineEdit):
editor.setReadOnly(True)
return editor
delegate = StyledItemDelegate(view)
view.setItemDelegate(delegate)