我正在尝试使用从另一个平台移植的数据模型在 Qt 中实现 MVC。我在屏幕上有几个小部件,每个小部件都听同一个模型来呈现数据。用户还可以与这些小部件进行交互、编辑它们,从而将更改推送回模型中。
我遇到的具体问题是,如果我的(移植的)数据模型发生变化,并且我将数据推送到带有 setData 的 QTreeWidgetItem 中,则小部件会发出 itemChanged 信号。这反过来会触发监控用户编辑的控制器代码,并使其将相同的数据推送回模型。除非我在某处插入数据比较,否则我最终会陷入无限循环。
控制器是否有某种方法可以在不发出 itemChanged 的情况下悄悄更新项目的数据?或者,是否有更好的方法来区分用户对小部件的编辑和编程更改?我只是在听 itemChanged。