Я использую QTableView
и подклассифицирован QAbstractTableModel
. При редактировании ячейки я заметил, что QAbstractTableModel.setData
проходит только через последнюю выбранную ячейку. Есть ли способ получить setData
для работы с несколькими (выделенными) ячейками?PySide QTableView setData для нескольких ячеек
В качестве примера использования:
- Выберите четыре ячейки из таблицы.
- Начать редактирование на одной ячейке.
- Введите значение и нажмите enter для фиксации.
- имеет ценность изменить все четыре ячейки (в настоящее время он просто изменяет ячейку, выбранный последним)
Я попытался к югу от причислять closeEditor
, затем пробегает по selectedIndexes
называть их setData
, но я не знаю, как получить входное значение пользователя от closeEditor
.
Вот моя попытка, почти получившая ее, просто нужна входная величина.
def closeEditor(self, editor, hint):
is_cancelled = (hint == QtGui.QAbstractItemDelegate.RevertModelCache)
if not is_cancelled:
for index in self.selectedIndexes():
if index == self.currentIndex():
continue
input_value = ??? # Don't know how to get this from here!
self.model().setData(index, input_value, QtCore.Qt.EditRole)
return QtGui.QTableWidget.closeEditor(self, editor, hint)
Редактор является «QWidget», поэтому нет текстового свойства. –
Как я писал: если виджет является 'QLineEdit', то он имеет свойство text. То есть это зависит от того, какой виджет используется в качестве редактора. Делегат по умолчанию использовал редактирование строк для текста, спиновых полей для чисел и т. Д. –
Я использую значение по умолчанию, и он не использует ни один из них ... –