0

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

例如:

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

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

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

有任何想法吗?

4

2 回答 2

2

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

于 2013-06-14T06:54:51.767 回答
0

调用 data() 以获取存储在不同 Qt::ItemDataRole 下的数据(如 Qt::DecorationRole 和 Qt::DisplayRole)。data() 将为同一个项目多次调用。因此,您的调用次数多于修改的项目是正常的。

于 2013-06-14T09:45:15.010 回答