OneEyeMap.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #ifndef ONEEYEMAP_H
  2. #define ONEEYEMAP_H
  3. #include <QWidget>
  4. #include <memory>
  5. #include <QTimer>
  6. #include "spdlog/spdlog.h"
  7. #include "EyeMapInfo.h"
  8. namespace Ui {
  9. class OneEyeMap;
  10. }
  11. class OneEyeMap : public QWidget
  12. {
  13. Q_OBJECT
  14. public:
  15. explicit OneEyeMap(QWidget *parent = nullptr);
  16. ~OneEyeMap();
  17. /* 根据通道号获取数据指针 */
  18. void getEyeDataPtrFromOscData(int channel);
  19. /* 设置序号 */
  20. void setNum(int num) { m_info.num = num; }
  21. /* 获取序号 */
  22. int getNum() { return m_info.num; }
  23. /* 设置标题 */
  24. void setTitle(const QString &title);
  25. /* 获取标题 */
  26. QString getTitle() { return m_info.title; }
  27. /* 设置颜色 */
  28. void setTitleBarColor(const QColor &color);
  29. /* 获取颜色 */
  30. QColor getTitleBarColor() { return m_info.titleBarColor; }
  31. /* 设置是否显示 */
  32. void setShow(bool isShow);
  33. /* 获取是否显示 */
  34. bool getShow() { return m_info.isShow; }
  35. /* 设置通道信息 */
  36. void setChannelInfo(const OneChannelInfo &info) { m_info.channelInfo = info; }
  37. /* 获取通道信息 */
  38. OneChannelInfo& getChannelInfo() { return m_info.channelInfo; }
  39. /* 设置电压值 */
  40. void setVoltageRange(OscVoltageRange range);
  41. /* 获取电压值 */
  42. OscVoltageRange getVoltageRange() { return m_info.voltageRange; }
  43. /* 设置时间刻度 */
  44. void setTimeGridValue(OscTimeGridValue value) { m_info.tGridValue = value; }
  45. /* 获取时间刻度 */
  46. OscTimeGridValue getTimeGridValue() { return m_info.tGridValue; }
  47. /* 更新组件信息 */
  48. void updateInfo(const OneEyeMapInfo &info);
  49. /* 只更新设置个数页面的信息 */
  50. void updateSettingNum(const OneEyeMapInfo &info);
  51. signals:
  52. void signal_update();
  53. private slots:
  54. void do_update();
  55. protected:
  56. void paintEvent(QPaintEvent *event) override;
  57. /* 缩放事件 */
  58. void resizeEvent(QResizeEvent *event) override;
  59. private:
  60. /* 绘制刻度值区域 */
  61. void drawScaleValue(QPainter &painter);
  62. /* 绘制刻度 */
  63. void drawScale(QPainter &painter);
  64. /* 绘制眼图区域 */
  65. void drawEyeMap(QPainter &painter);
  66. /* 获取一个格子的电压值 */
  67. inline QString getVScaleValue(int index);
  68. /* 获取一个时间值 */
  69. inline QString getTimeValue(int index);
  70. private:
  71. Ui::OneEyeMap *ui;
  72. std::shared_ptr<spdlog::logger> m_logger = nullptr;
  73. /* 组件属性信息 */
  74. // bool m_isShow = false; /* 是否显示 */
  75. // int m_num; /* 序号 */
  76. // QString m_title; /* 标题 */
  77. // QColor m_color; /* 颜色 */
  78. OneEyeMapInfo m_info; /* 组件信息 */
  79. QTimer m_timer;
  80. /* 眼图显示布局 */
  81. QRect m_rectScaleValue; /* 刻度值区域 */
  82. QRect m_rectEyeMap; /* 眼图区域 */
  83. int m_leftMargin = 0; /* 眼图距离刻度区域的左边距 */
  84. int m_topMargin = 0; /* 眼图距离刻度区域的上边距 */
  85. int m_rightMargin = 0; /* 眼图距离刻度区域的右边距 */
  86. int m_bottomMargin = 0; /* 眼图距离刻度区域的下边距 */
  87. int m_hScaleNum = 0; /* 水平刻度 */
  88. int m_vScaleNum = 0; /* 垂直刻度 */
  89. /* 眼图属性 */
  90. // OscVoltageRange m_cRange = OscVoltageRange::CR_2V5; /* 通道输入档位 */
  91. // OscTimeGridValue m_tGridValue = OscTimeGridValue::TGV_200NS; /* 时间刻度值 */
  92. EyeMapMatrix* m_eyeMapMatrix = nullptr; /* 眼图矩阵,从外面获取 */
  93. };
  94. #endif // ONEEYEMAP_H