我正在开发一个在QGraphicsScene
上显示项目的应用程序。这些
项目有属性,我想在树视图中显示,如果
项目已被选中。如果可能的话,我想坚持物业系统
由QObject
实施。但是,这并不符合我的所有需求,因为我需要
沿着属性存储一些元数据,例如
受到Qt Property Browser和Qt对象框架的启发,我想到了 实施以下系统:
PropertyItem
(它本身继承
QGraphicsItem
或QGraphicsObject
)。它包含
获取和设置属性值的逻辑。PropertyItem
派生的每个类都有一个静态MetaPropertyItem
。MetaPropertyItem
按顺序保存班级MetaProperty
的实例
存储关于诸如类别的属性的元数据
工具提示字符串和属性的类型。Property
类的实例
是为关联的MetaProperty
中的每个MetaPropertyItem
创建的。
然后,这些属性将显示在树视图中,并在项目时删除
被取消选择。我越是想到这个设计,我就越能感受到我正在做的事情 有问题。似乎我只是复制了已经属于Qt的部分:
PropertyItem <--> QObject
MetaPropertyItem <--> QMetaObject
MetaProperty <--> QMetaProperty
Property <--> needs to be implemented
我还发现了这个bug ticket,它建议将元数据添加到Qt属性中。 不幸的是,到目前为止它没有得到任何关注。
寻找其他选择,我也偶然发现了QMetaPropertyBuilder
将(可能?)成为Qt 5的一部分。遗憾的是,关于这个类的文档很少
我从阅读资料中了解到它无法解决我的问题。
因此,我的问题:实际上是否有更好的方法来实现我的目标 寻找没有重新实现另一个Qt框架?