在我的QTableView中,我想要複選框的第一列,但我得到填充了複選框的所有行列,並且所有這些列都默認選中。我無法改變複選框的狀態。如何獲取QTableView的第一列中的複選框pyqt
class MyTableModel(QtCore.QAbstractTableModel):
def __init__(self, listData=[[]], headers=[], parent=None):
super(MyTableModel, self).__init__(parent)
self.__listData = listData
self.__headers = headers
def data(self, index, role):
row = index.row()
column = index.column()
value = self.__listData[row][column]
if role == QtCore.Qt.CheckStateRole:
if self.__listData[row] == 0:
return QtCore.QVariant(QtCore.Qt.Unchecked)
else:
return QtCore.QVariant(QtCore.Qt.Checked)
if role == QtCore.Qt.EditRole:
return value
if role == QtCore.Qt.DisplayRole:
return value
您是否考慮過使用'QStandardItemModel'(由'QStandardItem's填充)而不是創建自己的模型?它免費提供了很多這種行爲,除非您有特定需要創建自定義模型,否則建議您這樣做。 –
好吧,我還沒有直接跳到這個階段,我有一個特定的需求,所以對於有複選框選中的行可以保持並且不選中什麼得到清除或不被處理。 –
我得到複選框的要求。如果您要使用它,我在說已經在'QStandardItemModel'中實現了這個功能。我的問題是,你是否需要不在'QStandardItemModel'中的功能?如果你這樣做,那麼詳細說明它們並將它們包含在你的代碼片段中可能是一個好主意,這樣它們可以被合併到問題的答案中。如果你不這樣做,那麼我建議切換到'QStandardItemModel' –