我想设计一个多视图的应用程序使用Qt的模型/视图框架,这样我可以将很多复杂的逻辑了我的QGraphicsItem
类。
如在下面的图中所示,该应用程序由两个(或更多)观看相同的一系列红色垂直辅助线的每个包含A1
, B1
, C1
...在沿着每个视图相同的水平位置。
我想,以确保当用户拖动的引导线一个视图,说从点A1
到A_1'
如上面的图中,在其它视图所有相应的引导线移动通过相同的距离,并在相同的方向,例如从A2
到A2'
。 此外,它不应该是可能的拖动一个引导线穿过另一个即引导线必须保持其相对的订单。 这是我想搬出我的指导课,到模型的逻辑的一部分。
我知道拖动引导线触发的QGraphicsItem :: itemChange,如下图所示的片段。 我不知道是如何最好地
- 候选值转发给模型验证(和存储)。 我知道该视图界面中的“通过信号和槽的机制与模式进行互操作的标准接口。” 最大的问题,在我看来,是
QGraphicsItem::itemChange
必须立即返回验证值不能依靠异步信号插槽机制。 - 通知在变更的其它视图的引导线,而不会触发创建通知的级联,例如其中
A1
和B1
无休止地通知对方。
-
class GuideLine( QtGui.QGraphicsLineItem ):
...
# Called when item is about to change to value
def itemChange( self , change , value ):
# TODO
# 1. validate value in model
# 2. if change is valid notify peers in other views
pass