#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;
};