两个视图,一个模型:如何在模型更改时更新视图

时间:2013-04-24 11:36:08

标签: qt model-view-controller user-interface

我正在设计一个Qt用户界面,并为同一型号(汽车)提供两种不同的视图(QGraphicsObject类)。

当要更新汽车的模型时(在两个小部件中的一个),我希望更新两个视图(当然模型也是如此)。

这样做的直观方法是更新模型,让视图捕获“信号”或类似的东西,当这种情况发生自我更新时。

我想知道这是否是推荐的行为(在MVC中),因为它强制模型与其视图具有一些双向连接(而在MVC中,模型不应该有其视图列表)。

另外,在Qt中实现这一点的好方法是什么? (使用Qt信号?当模型被更改时引发标志?)

1 个答案:

答案 0 :(得分:0)

你的模型看起来如何?在Qt中,有一个类似列表,类似于表格和类似树的模型的标准API,model-view programming。但是,它与您显然使用的QGraphicsScene的效果不佳。您还没有说过您想要用于沟通的内容,或者您​​正在建模的数据是如何构建的,因此很难确定您应该在这里做些什么。

也就是说,通常的MVC模式(与Qt中使用的QAbstractItemModel API相匹配)是让模型通知任何附加的视图有关基础数据的任何更改;在Qt中,这是通过视图连接的信号完成的。当视图想要修改数据时,它们会调用模型上的方法。当模型接受修改时,它会发出标准信号,以便之后更新所有视图。