我使用的是QTableView
,子类是QAbstractTableModel
。编辑单元格时,我注意到QAbstractTableModel.setData
只经过最后一个选定的单元格。有没有办法让setData
与多个(选定的)细胞协同工作?在
作为使用示例:
我尝试对closeEditor
进行子分类,然后循环使用selectedIndexes
调用它们,但我不知道如何从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)
closeEditor
信号中的editor
是用于编辑的小部件。在如果是这样的话,例如
QLineEdit
你可以通过它的text
属性来读取它的文本。在检索属性值的一种方法是通过QObject的property API
编辑:我把它作为一种解决方法,因为PySide中有一个bug,
editor
只返回一个QWidget
。请看凯文·克拉默的回答!虽然这只是一个小小的工作,但到目前为止,我的解决方案似乎运行良好。如果有更好的办法请告诉我,这有点冗长。在
在
closeEditor
中,我使每个细胞通过setData
,其值为None
。在然后在
QAbstractTableModel
中有一个变量_input_value
,它将存储用户的输入,供其余单元格使用。在相关问题 更多 >
编程相关推荐