OneEyeMap.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef ONEEYEMAP_H
  2. #define ONEEYEMAP_H
  3. #include <QWidget>
  4. #include <memory>
  5. #include <QTimer>
  6. #include "spdlog/spdlog.h"
  7. #include "OscData.h"
  8. #include "GlobalInfo.h"
  9. namespace Ui {
  10. class OneEyeMap;
  11. }
  12. class OneEyeMap : public QWidget
  13. {
  14. Q_OBJECT
  15. public:
  16. explicit OneEyeMap(QWidget *parent = nullptr);
  17. ~OneEyeMap();
  18. /* 设置序号 */
  19. void setNum(int num) { m_num = num; }
  20. /* 获取序号 */
  21. int getNum() { return m_num; }
  22. /* 设置标题 */
  23. void setTitle(const QString &title) { m_title = title; }
  24. /* 获取标题 */
  25. QString getTitle() { return m_title; }
  26. /* 设置颜色 */
  27. void setColor(const QColor &color) { m_color = color; }
  28. /* 获取颜色 */
  29. QColor getColor() { return m_color; }
  30. /* 设置是否显示 */
  31. void setShow(bool isShow) { m_isShow = isShow; }
  32. /* 获取是否显示 */
  33. bool getShow() { return m_isShow; }
  34. signals:
  35. void signal_update();
  36. private slots:
  37. void do_update();
  38. protected:
  39. void paintEvent(QPaintEvent *event) override;
  40. /* 缩放事件 */
  41. void resizeEvent(QResizeEvent *event) override;
  42. private:
  43. /* 绘制刻度值区域 */
  44. void drawScaleValue(QPainter &painter);
  45. /* 绘制刻度 */
  46. void drawScale(QPainter &painter);
  47. /* 绘制眼图区域 */
  48. void drawEyeMap(QPainter &painter);
  49. /* 获取一个格子的电压值 */
  50. inline QString getVScaleValue(int index);
  51. /* 获取一个时间值 */
  52. inline QString getTimeValue(int index);
  53. private:
  54. Ui::OneEyeMap *ui;
  55. std::shared_ptr<spdlog::logger> m_logger = nullptr;
  56. /* 眼图属性信息 */
  57. bool m_isShow = false; /* 是否显示 */
  58. int m_num; /* 序号 */
  59. QString m_title; /* 标题 */
  60. QColor m_color; /* 颜色 */
  61. QTimer m_timer;
  62. QRect m_rectScaleValue; /* 刻度值区域 */
  63. QRect m_rectEyeMap; /* 眼图区域 */
  64. int m_leftMargin = 0; /* 眼图距离刻度区域的左边距 */
  65. int m_topMargin = 0; /* 眼图距离刻度区域的上边距 */
  66. int m_rightMargin = 0; /* 眼图距离刻度区域的右边距 */
  67. int m_bottomMargin = 0; /* 眼图距离刻度区域的下边距 */
  68. int m_hScaleNum = 0; /* 水平刻度 */
  69. int m_vScaleNum = 0; /* 垂直刻度 */
  70. OscChannelRange m_cRange = OscChannelRange::CR_2V5; /* 通道输入档位 */
  71. OscTimeGridValue m_tGridValue = OscTimeGridValue::TGV_200NS; /* 时间刻度值 */
  72. };
  73. #endif // ONEEYEMAP_H