Sim*_*bbs 16 qt qt4 pyqt pyqt4 qgraphicsview
我正在研究地图应用程序,需要使用表格,表格和地图中的图形对象来显示数据对象.我正在使用PyQt,但这并不重要,因为这是一个Qt问题而不是Python问题.
如果我只需要表格和表单视图,这将很容易,我只使用Qt模型/视图框架.但是,我需要地图视图来提供仅使用Graphics View框架才真正可用的功能,这实际上是它自己的模型/视图框架,QGraphicsScene充当数据模型.
我可以想到两种方法来做到这一点.一种是从QAbstractItemModel子类化的权威模型开始,将其链接到QAbstractItemView的子类,并从那里生成并更新场景中的QGraphicsItems.这看起来很丑陋,因为我不知道如何通过与QGraphicsItem的交互来处理用户与数据项的交互和更改.
我能想到的另一种方法是将QGraphicsScene视为权威数据源,将数据对象存储在每个QGraphicsItem的.data()属性中.然后,我将QAbstractItemModel子类化并编写它,以便它在数据存储中访问场景中的数据,然后其他视图将其用作模型.我如何将更改传播到场景中的数据直到模型?
无论采取哪种方法,看起来框架都没有处理差距.在模型/视图中,假设所有更改都在模型中进行.在图形视图中,假定所有更改都在场景中进行.
那么你选择哪种方法QAbstractItemModel(权威) - > QAbstractItemView-> QGraphicsScene或者QGraphicsScene(权威) - > QAbstractItemModel->其他视图.你为什么选择一个而不是另一个?你有什么期望?有没有其他人需要弥合Qt的双模型/视图框架之间的差距,你是如何做到的?
Ada*_*m W 12
化QAbstractItemModel(权威) - > QAbstractItemView-> QGraphicsScene
毫无疑问.我以前做过这个,它确实需要一些重复(至少有些是我无法避免的),但没什么不好的.
这也允许您在标准视图中表示您的数据以及相当不错的场景.
我最好的建议是要存储QHash的QPersistantModelIndex到QGraphicsItem和QGraphicsScene中QAbstractItemView创建.这使您可以快速进入模型/视图land(QModelIndex)到Graphics View land(QGraphicsItem)
| 归档时间: |
|
| 查看次数: |
5344 次 |
| 最近记录: |