Qt dataChanged信号 - 不使用提供的单元格范围

时间:2013-06-13 22:21:48

标签: c++ qt qt5

我希望有人可以提供一些我正在使用dataChanged信号观察的问题的帮助。在发出具有受限细胞范围的信号后,数据模型似乎在每个可见细胞上调用数据(...)。

例如:

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

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

阅读Qt文档,我知道不能保证只拨打5次,但我很好奇大部分时间是否接受最小化范围的方式。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

data()来电数量没有限制。这完全取决于视图的实现。例如,有时我注意到视图在视图获得焦点时调用模型的data(),没有任何dataChanged信号,根本没有任何其他交互。所以,你应该准备好处理它。如果您想控制data()次来电,那么唯一的方法就是实现自己的观点。

答案 1 :(得分:0)

调用data()来获取存储在不同Qt :: ItemDataRole下的数据(如Qt :: DecorationRole和Qt :: DisplayRole)。 data()将在同一个项目中多次调用。所以,你有比调整项目更多的电话是正常的。