12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
-
- #ifndef OBJECTCONTROLLER_H
- #define OBJECTCONTROLLER_H
- #include <QWidget>
- #include <QVariant>
- /// <summary>
- /// 控件向属性表的同步类型
- /// </summary>
- enum class OBJECT_SYNC_TYPE : short
- {
- SYNC_TITLE,
- SYNC_GEOMETRY
- };
- /// <summary>
- /// 需要从控件到属性表需要同步的属性
- /// </summary>
- class QtVariantProperty;
- typedef struct _tagObjectSyncProproty
- {
- OBJECT_SYNC_TYPE type; // 数值类型
- QVariant value; // 数值
- QtVariantProperty* prop; // 对应的属性表指针
- _tagObjectSyncProproty()
- {
- type = OBJECT_SYNC_TYPE::SYNC_TITLE;
- prop = nullptr;
- }
- } OBJECT_SYNC_PROPERTY;
- /// <summary>
- /// 设置控件对象对应的属性表
- /// MEMO: 由于Table、Wave、Pie、Image四个控件是动态增加的属性
- /// 所以和简单控件的固定个数的属性表相比,完全分成了两个流程进行处理
- /// </summary>
- class ObjectControllerPrivate;
- class ObjectController : public QWidget
- {
- Q_OBJECT
- public:
- ObjectController(QWidget *parent = 0);
- ~ObjectController();
- // 设置对象属性
- void setObject(QObject *object);
- QObject *object() const;
- // 清空属性表
- void clearProperties();
- // 2021-12-25增加,删除对应属性表相关的数据结构
- void delObject(QObject* object);
- // 2022-2-13 用于控件数值改变后向属性表同步
- void syncToObject(QObject* pControl, const OBJECT_SYNC_PROPERTY& syncInfo);
- private:
- ObjectControllerPrivate *d_ptr;
- // ComplexObjectController* c_ptr;
- Q_DECLARE_PRIVATE(ObjectController);
- Q_DISABLE_COPY(ObjectController);
- Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty*, const QVariant&));
- private:
- // 是否是基础类型控件
- bool isBasicControl();
- };
- #endif
|