Qt数据改变信号-不使用提供的小区范围



我希望有人能提供一些帮助的问题,我正在观察与datachchanged信号。在用受限的cell范围发出此信号后,数据模型似乎在每个可见cell上调用data(…)。

例如:

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

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

阅读Qt文档,我明白不能保证只调用5次,但我很好奇是否有一种大多数时间最小化范围的可接受方式。

任何想法?

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

data()被调用来获取存储在不同Qt::ItemDataRole(如Qt::DecorationRole和Qt::DisplayRole)下的数据。对于同一项,Data()将被调用多次。所以,你有更多的调用,而不是修改项,这是正常的。

最新更新