#pragma once #include "Common.h" /// /// 本类是用于在 VariantFactory 类中用于关联自定义属性对话框的类 /// 工作原理: /// 1. 首先自定义属性类型,例如 TagDataLinkPropertyType ,将其注册到控件的自定义属性中 /// 2. 在 VariantManager 中关联此自定义属性 /// 3. 在界面中需要编辑此属性时,会触发自定义的 VariantFactory::createEditor 虚函数 /// 4. 在此虚函数中创建此 Edit,大体的用途就是作为自定义属性编辑对话框和VariantManager之间的桥梁 /// 一方面显示自定义属性对话框,一方面把编辑的数据通过VariantManager传递到objectcontroller中进行界面显示 /// class VControlObject; class PropertyDataLinkEdit : public QWidget { Q_OBJECT public: PropertyDataLinkEdit( QWidget *parent, const QString& strPropertyName ); ~PropertyDataLinkEdit(); DataLink getValue() const; //// 保存绑定控件类型名字,用于根据不同类型的控件显示不同的属性对话框数据 //void setControlClass(const QString& className); //// 保存绑定控件的指针 //void setControlPtr(QObject* pControlObject); signals: void dataLinkChanged(const QString& szVal); public slots: // 设置属性对话框的初始值 void setValue(const QString& datalinkString); // 点击...后弹出属性设置对话框 void buttonClicked(); private: // 本控件关联的ControlObject VControlObject* m_pControlObject; // Edit控件 QLineEdit* m_editInput; // 关联的DataLink信息 DataLink m_DataLink; // 属性名称 QString m_strPropertyName; // QString m_ClassName; // VALUE_TYPE m_ControlType; //// 类型名字和VALUE_TYPE类型枚举对应关系(主要针对控件类型) //QMap m_ControlTypeNames; };