#ifndef BASICOBJECTCONTROLLER_H #define BASICOBJECTCONTROLLER_H #include #include #include #include #include #include #include #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 m_classToProperty; // 属性和Index索引的对应关系 QMap m_propertyToIndex; // QMetaObject和索引以及对应属性的关系 QMap > m_classToIndexToProperty; // 每个属性是否展开 QMap m_propertyToExpanded; // 属性表顶层节点 QList m_topLevelProperties; // 2021-9-11 修改 此处直接使用 QtTreePropertyBrowser 指针即可 QtTreePropertyBrowser* m_browser; // 属性数据结构管理者 QtVariantPropertyManager* m_manager; // 只读属性数据结构管理者 QtVariantPropertyManager* m_readOnlyManager; // 2021-12-2 属性指针与属性名字对应关系 QMap m_propertyToName; // 2021-12-3 扩展属性根节点 QtProperty* m_exPropertiesRoot; // 2021-12-3 扩展子属性组 QList m_subGroups; // 2021-12-23 用于保存对象以及扩展属性的对应关系,用于后续更新 QMap> m_objectToNameToProperty; // 属性和QObject的双向对应关系(用于复杂控件) QMap m_objectToProperty; }; #endif