我希望有人可以就我在dataChanged信号中遇到的问题提供一些帮助。在发出具有受限单元格范围的信号后,数据模型似乎在每个可见单元格上调用data(...)。

例如:

QModelIndex bl = index(1, 1);
QModelIndex tr = index(1, 5);
emit dataChanged(bl, tr);


如果可见5行和5列,则此信号将触发对data()的25次调用,而不是预期的5次。

阅读Qt文档,我知道不能保证只打5次电话,但是我很好奇,在大多数情况下是否存在将范围最小化的方法。

有任何想法吗?

最佳答案

data()调用的数量没有限制。这完全取决于视图的实现。例如,有时我注意到,当视图获得焦点时,视图会调用模型的data(),而没有任何dataChanged信号,根本没有任何其他交互。因此,您应该准备好处理它。如果要控制data()调用计数,唯一的方法是实现自己的视图。

07-28 01:32
查看更多