我希望有人可以提供一些我正在使用dataChanged信号观察的问题的帮助。在发出具有受限细胞范围的信号后,数据模型似乎在每个可见细胞上调用数据(...)。
例如:
QModelIndex bl = index(1, 1);
QModelIndex tr = index(1, 5);
emit dataChanged(bl, tr);
如果可见5行和5列,此信号将触发25次调用data(),而不是预期的5。
阅读Qt文档,我知道不能保证只拨打5次,但我很好奇大部分时间是否接受最小化范围的方式。
有什么想法吗?
答案 0 :(得分:2)
data()
来电数量没有限制。这完全取决于视图的实现。例如,有时我注意到视图在视图获得焦点时调用模型的data()
,没有任何dataChanged
信号,根本没有任何其他交互。所以,你应该准备好处理它。如果您想控制data()
次来电,那么唯一的方法就是实现自己的观点。
答案 1 :(得分:0)
调用data()来获取存储在不同Qt :: ItemDataRole下的数据(如Qt :: DecorationRole和Qt :: DisplayRole)。 data()将在同一个项目中多次调用。所以,你有比调整项目更多的电话是正常的。