这里以pyqt自带demo中的simpletreemode.pyw文件为例,简单介绍在pyqt的TreeView里使用checkbox。所有的工作实际上都是在TreeModel类中完成的。
首先,在TreeModel类的__init__函数中加入self.checkLisk = []这句话,定义一个list用来保存被选中的checkbox信息。
第二步,修改flag函数
主要就是为第一例的显示方式增加了一个ItemIsUserCheckable
然后,再在data函数中,进行如下修改
最后,增加setData函数,这个函数在simpletreemodel.pyw中,并不存在,它是QAbstractItemModel中定义的函数,当TreeModel中的项发生变化是,会调用这个函数,并且需要这个函数发出一个dataChanged信号。在这个函数中,需要判断改动的项目是否是checkbox,并且根据改动情况对checkList进行修改。然后发送dataChanged信号。虽然我不知道dataChange的槽函数都进行了那些工作,但它肯定调用了相应的data函数,然后,会将刚才点击复选框的内容进行重设