Что я уже сделал:
Я реализую пользовательский QAbstractTableModel
(используемый в QTableView
-виджете), который содержит редактируемые ячейки. Свойства этих ячеек указаны в моем методе flags()
, который выглядит так:
def flags(self, index): # Qt was imported from PyQt4.QtCore
if index.column() < 2:
return Qt.ItemIsEditable | Qt.ItemIsEnabled | \
Qt.ItemIsSelectable
else:
return Qt.ItemIsEnabled | Qt.ItemIsSelectable
Ячейки в первых двух столбцах помечены как редактируемые, как я и хочу.
Что я хочу сделать:
Однако при двойном щелчке по ячейке для запуска редактирования содержащийся в ней текст удаляется и отображается пустое поле.
Но я не хочу удалять и заменять содержащийся текст, потому что содержащийся текст может быть очень длинным и не должен быть перепечатан. Я просто хочу отредактировать то, что уже содержится. При двойном щелчке ячейка должна быть редактируемой с ранее содержащимся внутри текстом (возможно, уже выделенным).
Вопрос:
Как я могу добиться такого поведения? Нужно ли мне редактировать мой метод флагов и указывать разные свойства для этих ячеек?