VControlObject.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #pragma once
  2. #include "Common.h"
  3. // 各个控件的默认尺寸
  4. #define DEFAULT_CONTROL_SIZE QSize(0, 0)
  5. #define DEFAULT_LABEL_SIZE QSize(100, 18)
  6. #define DEFAULT_BUTTON_SIZE QSize(75, 23)
  7. #define DEFAULT_CHECKBOX_SIZE QSize(100, 18)
  8. #define DEFAULT_RADIO_SIZE QSize(100, 18)
  9. #define DEFAULT_GROUP_SIZE QSize(120, 80)
  10. #define DEFAULT_IMAGE_SIZE QSize(500, 400)
  11. #define DEFAULT_EDIT_SIZE QSize(130, 20)
  12. #define DEFAULT_LIST_SIZE QSize(256, 192)
  13. #define DEFAULT_COMBO_SIZE QSize(100, 22)
  14. #define DEFAULT_VALUE_SIZE QSize(104, 70)
  15. #define DEFAULT_PIE_SIZE QSize(200, 200)
  16. #define DEFAULT_WAVE_SIZE QSize(500, 300)
  17. #define DEFAULT_TABLE_SIZE QSize(400, 250)
  18. /// <summary>
  19. /// 所有自定义控件的基类型
  20. /// </summary>
  21. class VControlObject
  22. {
  23. public:
  24. VControlObject( CONTROL_PROPERTY* pProperty = nullptr );
  25. ~VControlObject();
  26. public:
  27. QString getText() const;
  28. QString getTip() const;
  29. QColor getTextColor() const;
  30. QColor getBgColor() const;
  31. QFont getFont() const;
  32. bool getEnable() const;
  33. DataLink getDataLink() const;
  34. void setDataLink(const DataLink& datalink);
  35. // 获得扩展属性的子分组数量
  36. // 2022-1-10,由于有多个子分组,所以此处需要传入ID
  37. int getExPropertyCountByID( const int groupID = 0 );
  38. // 根据对应的子属性关联Key的名字来获取子分组数量
  39. int getExPropertyCountByName( const QString& strKey);
  40. // 根据属性名字获取当前子属性组的ID
  41. int getGroupIDByName(const QString& strKey);
  42. // 更新扩展属性的数量(虚函数)
  43. virtual void updateExPropertyCount(const int newCount, const QString& strPropName);
  44. // 修改扩展属性(虚函数)
  45. virtual void changeExProperties(const QString strValueTile, const QVariant& newValue);
  46. // 更新数据链接
  47. void updateExPropertyDataLink(const QString& strPropertyName, const DataLink& datalink);
  48. // 更新数据链接
  49. void updateExPropertyDataLink(const QString& strPropertyName, const QString& strLinkString);
  50. // 是否是复杂控件(Table、Pie、Wave、Image 等)
  51. bool isComplexControl();
  52. // 是否是复杂控件(Table、Pie、Wave、Image 等)
  53. static bool isComplexControl(VALUE_TYPE type);
  54. // 根据属性名找到对应的DataLink
  55. DataLink getDataLinkByProperty(const QString& strPropertyName);
  56. //// 根据属性名设置对应的DataLink
  57. //bool setDataLinkByProperty(const QString& strPropertyName, const DataLink dataLink);
  58. // 将QObect*转换为VControlObject*
  59. static VControlObject* controlPtr(QObject* object);
  60. // 2022-9-10,为简单控件设置默认的DataLink
  61. void bindDefaultDataLink();
  62. // 2022-9-10,为复杂控件设置默认的刷新索引链接(refreshLink)
  63. void bindDefaultRefreshDataLink();
  64. // 获取控件的Item
  65. QGraphicsProxyWidget* getItem();
  66. protected:
  67. QString textColorQss(const QColor& color);
  68. QString bgColorQss(const QColor& color);
  69. // 从属性标题中获取序号
  70. int indexOfProperty(const QString& propertyName);
  71. public:
  72. // 控件的所有属性信息
  73. CONTROL_PROPERTY m_Property;
  74. // 控件的扩展属性信息(仅复杂控件所特有)
  75. CONTROL_PROPERTY_EX m_PropertyEx;
  76. // 控件的Widget指针
  77. QWidget* m_pWidget;
  78. // Widget控件在Scene中的操作指针
  79. QGraphicsProxyWidget* m_pProxyWidget;
  80. // 2022-10-16,为每一个控件增加一个ID号,用于识别控件(目前用于Undo体系中)
  81. QString m_strID;
  82. // 控件本身的类型
  83. VALUE_TYPE m_Type;
  84. //// 主链接的数量
  85. //int m_nMainLinkCount;
  86. //// 扩展属性分组的数量
  87. //int m_nGroupCount;
  88. //// 扩展属性子分组的数量
  89. //int m_nSubGroupCount;
  90. };