哟,过了一个月自己把问题解决了:(
大概的方法就是要为某个单元格的数据实现一个保存本单元格Qt.BackgroundRole值的方式,在此基础上有2种选择:
1、常规的方法:在子类化Moel时重载data/setData函数,在函数中判定当role==Qt.BackgroundRole时,data返回保存的本单元格指定颜色的QColor对象;而setData函数就是把指定的颜色保存在本单元格数据中。
这种方法通常应该自定义单元格数据的类,类成员除了文本数据还应该包括颜色数据。
2、可用但不太常用的方法:重载QtableView的painEvent函数,或者重载Delegate的paint函数。这种方法要在函数中判定某个单元格的颜色,并对QBrush等画图工具作出不同设置,从而达到为某个单元格“画”不同背景的效果。
通常可以在Model中保存一个列表,列表记录了背景不同的单元格,而QtableView或Delegate则通过判定单元格是否在列表中来设置不同的画图工具。
我是用PyQt4实现的,C++的没试过,应该也一样吧?