【发布时间】:2017-03-22 18:27:27
【问题描述】:
我有一个自定义的QTableModel,我在 PyQt 中使用QTableView 显示它。我有一些字段设置为可检查,我想添加检查所有和不检查按钮。我觉得应该有一种方法可以从代码中调用setData(),从而使检查状态以及我已经在setData()中编写的代码发生变化。实际上有办法做到这一点吗?
这是我根据要求使用的 setData:
if role == Qt.CheckStateRole:
row = index.row()
column = index.column()
if row == 0 and column != 0:
self._data.parsingConfiguration['columnEnabled'][column-1] = True if value == Qt.Checked else False
self.dataChanged.emit(self.createIndex(1, column), self.createIndex(len(self._data.data),column))
if column-1 == self._data.parsingConfiguration['groupNumberColumn']:
self.setGroupNumber(self.getFirstEnabledMember())
elif column-1 == self._data.parsingConfiguration['timeStepColumn']:
self.setTimeStep(self.getFirstEnabledMember())
self.emit(SIGNAL("layoutChanged()"))
return True
if column == 0 and row != 0:
self._data.parsingConfiguration['rowEnabled'][row-1] = True if value == Qt.Checked else False
self.dataChanged.emit(self.createIndex(row, 1), self.createIndex(row, self._data.numColumns+1))
return True
return False
【问题讨论】:
-
澄清一下:您想要 QTableView 之外的两个小部件,它们的激活会更改模型项的“已检查”状态,对吧?可以发帖
setData吗? -
我第二个@PierreGM。显示代码。这太笼统了。
-
已添加代码,抱歉我不是更清楚。最终我想知道是否有一种可行的方法可以自己调用 setData 以便我可以将代码保存在一个地方。
标签: python checkbox pyqt qtableview