PropertyDataLinkEdit.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #pragma once
  2. #include "Common.h"
  3. /// <summary>
  4. /// 本类是用于在 VariantFactory 类中用于关联自定义属性对话框的类
  5. /// 工作原理:
  6. /// 1. 首先自定义属性类型,例如 TagDataLinkPropertyType ,将其注册到控件的自定义属性中
  7. /// 2. 在 VariantManager 中关联此自定义属性
  8. /// 3. 在界面中需要编辑此属性时,会触发自定义的 VariantFactory::createEditor 虚函数
  9. /// 4. 在此虚函数中创建此 Edit,大体的用途就是作为自定义属性编辑对话框和VariantManager之间的桥梁
  10. /// 一方面显示自定义属性对话框,一方面把编辑的数据通过VariantManager传递到objectcontroller中进行界面显示
  11. /// </summary>
  12. class VControlObject;
  13. class PropertyDataLinkEdit : public QWidget
  14. {
  15. Q_OBJECT
  16. public:
  17. PropertyDataLinkEdit(
  18. QWidget *parent,
  19. const QString& strPropertyName
  20. );
  21. ~PropertyDataLinkEdit();
  22. DataLink getValue() const;
  23. //// 保存绑定控件类型名字,用于根据不同类型的控件显示不同的属性对话框数据
  24. //void setControlClass(const QString& className);
  25. //// 保存绑定控件的指针
  26. //void setControlPtr(QObject* pControlObject);
  27. signals:
  28. void dataLinkChanged(const QString& szVal);
  29. public slots:
  30. // 设置属性对话框的初始值
  31. void setValue(const QString& datalinkString);
  32. // 点击...后弹出属性设置对话框
  33. void buttonClicked();
  34. private:
  35. // 本控件关联的ControlObject
  36. VControlObject* m_pControlObject;
  37. // Edit控件
  38. QLineEdit* m_editInput;
  39. // 关联的DataLink信息
  40. DataLink m_DataLink;
  41. // 属性名称
  42. QString m_strPropertyName;
  43. // QString m_ClassName;
  44. // VALUE_TYPE m_ControlType;
  45. //// 类型名字和VALUE_TYPE类型枚举对应关系(主要针对控件类型)
  46. //QMap<QString, VALUE_TYPE> m_ControlTypeNames;
  47. };