#ifndef ONEEYEMAP_H #define ONEEYEMAP_H #include #include #include #include "spdlog/spdlog.h" #include "OscData.h" #include "GlobalInfo.h" namespace Ui { class OneEyeMap; } class OneEyeMap : public QWidget { Q_OBJECT public: explicit OneEyeMap(QWidget *parent = nullptr); ~OneEyeMap(); /* 设置序号 */ void setNum(int num) { m_num = num; } /* 获取序号 */ int getNum() { return m_num; } /* 设置标题 */ void setTitle(const QString &title) { m_title = title; } /* 获取标题 */ QString getTitle() { return m_title; } /* 设置颜色 */ void setColor(const QColor &color) { m_color = color; } /* 获取颜色 */ QColor getColor() { return m_color; } /* 设置是否显示 */ void setShow(bool isShow) { m_isShow = isShow; } /* 获取是否显示 */ bool getShow() { return m_isShow; } signals: void signal_update(); private slots: void do_update(); protected: void paintEvent(QPaintEvent *event) override; /* 缩放事件 */ void resizeEvent(QResizeEvent *event) override; private: /* 绘制刻度值区域 */ void drawScaleValue(QPainter &painter); /* 绘制刻度 */ void drawScale(QPainter &painter); /* 绘制眼图区域 */ void drawEyeMap(QPainter &painter); /* 获取一个格子的电压值 */ inline QString getVScaleValue(int index); /* 获取一个时间值 */ inline QString getTimeValue(int index); private: Ui::OneEyeMap *ui; std::shared_ptr m_logger = nullptr; /* 眼图属性信息 */ bool m_isShow = false; /* 是否显示 */ int m_num; /* 序号 */ QString m_title; /* 标题 */ QColor m_color; /* 颜色 */ QTimer m_timer; QRect m_rectScaleValue; /* 刻度值区域 */ QRect m_rectEyeMap; /* 眼图区域 */ int m_leftMargin = 0; /* 眼图距离刻度区域的左边距 */ int m_topMargin = 0; /* 眼图距离刻度区域的上边距 */ int m_rightMargin = 0; /* 眼图距离刻度区域的右边距 */ int m_bottomMargin = 0; /* 眼图距离刻度区域的下边距 */ int m_hScaleNum = 0; /* 水平刻度 */ int m_vScaleNum = 0; /* 垂直刻度 */ OscChannelRange m_cRange = OscChannelRange::CR_2V5; /* 通道输入档位 */ OscTimeGridValue m_tGridValue = OscTimeGridValue::TGV_200NS; /* 时间刻度值 */ }; #endif // ONEEYEMAP_H