一共2000行数据,实际上一开始QTreeView缓存的行数不是那么多的时候没有这个问题。
向下拖动滚动条(或者使用filter)会让model自动读取下面的数据(调用fetchMore),就是在数据量超过一定数量后,就开始出现这种情况了。另外:
当鼠标从QTreeView外面移动进QTreeView的时候(确切说是移动进来并鼠标停在QTreeView的一个固定地方之后)会卡。
鼠标从QTreeView移动到外面不会卡。
刚刚又试了下,卡顿的时间和QTreeView(QTableView也一样)缓存的行数成正比。
毫无疑问QTreeView在鼠标在其中停下来后对其model进行了访问或者处理(总觉的单纯的访问不至于这么慢,1000行的数据就有明显的卡顿现象的处理难道是1000次sort一类的?)。我很疑惑QTreeView到底把时间浪费在哪了。。