123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #ifndef BASICOBJECTCONTROLLER_H
- #define BASICOBJECTCONTROLLER_H
- #include <QWidget>
- #include <QMetaObject>
- #include <QMetaProperty>
- #include <QVBoxLayout>
- #include <QScrollArea>
- #include <QApplication>
- #include <QDebug>
- #include "VTableControl.h"
- class QtProperty;
- class QtVariantProperty;
- class ObjectController;
- class VTableControl;
- class QtVariantPropertyManager;
- class QtTreePropertyBrowser;
- class BasicObjectController
- {
- BasicObjectController();
- ObjectController* q_ptr;
- Q_DECLARE_PUBLIC(ObjectController)
- public:
- void expandAll();
- void collapseAll();
- void saveExpandedState();
- void restoreExpandedState();
- void slotValueChanged(QtProperty* property, const QVariant& value);
- int enumToInt(const QMetaEnum& metaEnum, int enumValue) const;
- int intToEnum(const QMetaEnum& metaEnum, int intValue) const;
- int flagToInt(const QMetaEnum& metaEnum, int flagValue) const;
- int intToFlag(const QMetaEnum& metaEnum, int intValue) const;
- bool isSubValue(int value, int subValue) const;
- bool isPowerOf2(int value) const;
- // 设置控件属性
- void setBasicControlProperties(const QMetaObject* metaObject);
- // 设置复杂控件属性
- void setComplexControlProperties();
- // 增加新的基础属性
- void addBasicProperties(const QMetaObject* metaObject, QtProperty*& classProperty);
- // 增加新的扩展属性
- void addExtendProperties(QtProperty*& classProperty);
- // 向界面属性表中增加属性内容
- void addPropertiesSubGroup(const PROPERTY_EX_SUBGROUP& prop);
- // 更新基础属性
- void changeBasicProperties(QtProperty* property, const QVariant& value);
- // 更新扩展属性
- void changeExtendProperties(QtProperty* property, const QVariant& value);
- //// 调整Table控件的属性个数
- //void updateTablePropertyCount(const int newCount);
- // 增加新的属性项
- void appendTableProperty(VTableControl* pTable, const int fixCount);
- // 减少新的属性项
- void removeTableProperty(VTableControl* pTable, const int fixCount);
- // 更新基础属性表
- void updateBasicProperties(const QMetaObject* metaObject);
- // 更新扩展属性表
- void updateExtendProperties(const QMetaObject* metaObject);
- public:
- // 绑定的控件对象指针
- QObject* m_object;
- // 属性和QMetaObject的双向对应关系(用于简单控件)
- QMap<const QMetaObject*, QtProperty*> m_classToProperty;
- // 属性和Index索引的对应关系
- QMap<QtProperty*, int> m_propertyToIndex;
- // QMetaObject和索引以及对应属性的关系
- QMap<const QMetaObject*, QMap<int, QtVariantProperty*> > m_classToIndexToProperty;
- // 每个属性是否展开
- QMap<QtProperty*, bool> m_propertyToExpanded;
- // 属性表顶层节点
- QList<QtProperty*> m_topLevelProperties;
- // 2021-9-11 修改 此处直接使用 QtTreePropertyBrowser 指针即可
- QtTreePropertyBrowser* m_browser;
- // 属性数据结构管理者
- QtVariantPropertyManager* m_manager;
- // 只读属性数据结构管理者
- QtVariantPropertyManager* m_readOnlyManager;
- // 2021-12-2 属性指针与属性名字对应关系
- QMap<QtProperty*, QString> m_propertyToName;
- // 2021-12-3 扩展属性根节点
- QtProperty* m_exPropertiesRoot;
- // 2021-12-3 扩展子属性组
- QList<QtProperty*> m_subGroups;
- // 2021-12-23 用于保存对象以及扩展属性的对应关系,用于后续更新
- QMap<const QObject*, QMap<QString, QtVariantProperty*>> m_objectToNameToProperty;
- // 属性和QObject的双向对应关系(用于复杂控件)
- QMap<const QObject*, QtProperty*> m_objectToProperty;
- };
- #endif
|