Python 在PYQT的自定义模型中具有复选框的Listview
我正在为listview编写我的自定义列表模型类。在List_Model类的data方法中,我选中了Checkstaterole,以查看我希望在listview中显示的复选框。但是,我无法在自定义模型类中单独选中和取消选中复选框Python 在PYQT的自定义模型中具有复选框的Listview,python,python-2.7,pyqt,pyqt4,model-view,Python,Python 2.7,Pyqt,Pyqt4,Model View,我正在为listview编写我的自定义列表模型类。在List_Model类的data方法中,我选中了Checkstaterole,以查看我希望在listview中显示的复选框。但是,我无法在自定义模型类中单独选中和取消选中复选框 如何分别选中和取消选中复选框?在QT UI中检查所有复选框的ID。简单地说,您需要单独识别这些复选框,并且应该能够处理这些复选框的启用/禁用。@Barun Sharma。。。我在问我如何能单独跟踪。。。你能不能在这个案例中分享一下我的模型…我该怎么做。。?在listvi
如何分别选中和取消选中复选框?在QT UI中检查所有复选框的ID。简单地说,您需要单独识别这些复选框,并且应该能够处理这些复选框的启用/禁用。@Barun Sharma。。。我在问我如何能单独跟踪。。。你能不能在这个案例中分享一下我的模型…我该怎么做。。?在listview中,我们必须有模型……在模型中,我如何跟踪?您的问题非常不清楚。你说的“轨道”是什么意思?请给出一个您无法解决的问题的实际代码示例。@ekhumoro我已经为我的应用程序添加了完整的代码,并试图使我的问题更清楚。如果我需要分享更多细节,请告诉我。@Juna。我还是不知道问题出在哪里。若你们想保存状态,你们需要把它存储在某个地方——就像你们已经在处理颜色一样。通常,一个item类用于此目的,因此许多信息可以组合在一起-但我想您可以使用
dict
。是否确实需要编写自定义模型?为什么你就不能用一个?
class List_Model(QtCore.QAbstractListModel):
def __init__(self, colors=[], parent=None):
QtCore.QAbstractListModel.__init__(self, parent)
self.__colors = colors
def rowCount(self, parent):
return len(self.__colors)
def data(self, index, role):
if role == QtCore.Qt.DisplayRole:
row = index.row()
value = self.__colors[row]
return value.name()
if role == QtCore.Qt.DecorationRole:
row = index.row()
value = self.__colors[row]
pixmap = QtGui.QPixmap(26,26)
pixmap.fill(value)
icon = QtGui.QIcon(pixmap)
return icon
if role == QtCore.Qt.CheckStateRole:
return QtCore.Qt.Checked
def flags(self, index):
return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsUserCheckable
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
listview = QtGui.QListView()
listview.show()
red = QtGui.QColor(255,0,0)
green = QtGui.QColor(0,255,0)
blue = QtGui.QColor(0,0,255)
model = List_Model([red, green, blue])
listview.setModel(model)
sys.exit(app.exec_())