OneEyeMap.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. signals:
  19. void signal_update();
  20. private slots:
  21. void do_update();
  22. protected:
  23. void paintEvent(QPaintEvent *event) override;
  24. /* 缩放事件 */
  25. void resizeEvent(QResizeEvent *event) override;
  26. private:
  27. /* 绘制刻度值区域 */
  28. void drawScaleValue(QPainter &painter);
  29. /* 绘制刻度 */
  30. void drawScale(QPainter &painter);
  31. /* 绘制眼图区域 */
  32. void drawEyeMap(QPainter &painter);
  33. /* 获取一个格子的电压值 */
  34. inline QString getVScaleValue(int index);
  35. /* 获取一个时间值 */
  36. inline QString getTimeValue(int index);
  37. private:
  38. Ui::OneEyeMap *ui;
  39. std::shared_ptr<spdlog::logger> m_logger = nullptr;
  40. QTimer m_timer;
  41. QRect m_rectScaleValue; /* 刻度值区域 */
  42. QRect m_rectEyeMap; /* 眼图区域 */
  43. int m_leftMargin = 0; /* 眼图距离刻度区域的左边距 */
  44. int m_topMargin = 0; /* 眼图距离刻度区域的上边距 */
  45. int m_rightMargin = 0; /* 眼图距离刻度区域的右边距 */
  46. int m_bottomMargin = 0; /* 眼图距离刻度区域的下边距 */
  47. int m_hScaleNum = 0; /* 水平刻度 */
  48. int m_vScaleNum = 0; /* 垂直刻度 */
  49. OscChannelRange m_cRange = OscChannelRange::CR_2V5; /* 通道输入档位 */
  50. OscTimeGridValue m_tGridValue = OscTimeGridValue::TGV_200NS; /* 时间刻度值 */
  51. };
  52. #endif // ONEEYEMAP_H