123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- #ifndef ONEEYEMAP_H
- #define ONEEYEMAP_H
- #include <QWidget>
- #include <memory>
- #include <QTimer>
- #include "spdlog/spdlog.h"
- #include "EyeMapInfo.h"
- #include "OscDataInfo.h"
- namespace Ui {
- class OneEyeMap;
- }
- class OneEyeMap : public QWidget
- {
- Q_OBJECT
- public:
- explicit OneEyeMap(QWidget *parent = nullptr);
- ~OneEyeMap();
- /* 根据通道号获取示波器指针 */
- void getOneOscFromGlobalOscData();
- /* 设置对应的示波器是否已经打开 */
- void setOpen(bool isOpen) { m_isOpen = isOpen; }
- /* 获取UID */
- // EyeMapUID getUID() { return m_info.uid; }
- /* 设置UID */
- // void setUID(EyeMapUID uid);
- /* 设置序号 */
- void setNum(int num) { m_info.num = num; }
- /* 获取序号 */
- int getNum() { return m_info.num; }
- /* 设置标题 */
- void setTitle(const QString &title);
- /* 获取标题 */
- QString getTitle() { return m_info.title; }
- /* 设置颜色 */
- void setTitleBarColor(const QColor &color);
- /* 获取颜色 */
- QColor getTitleBarColor() { return m_info.titleBarColor; }
- /* 设置是否显示 */
- void setShow(bool isShow);
- /* 获取是否显示 */
- bool getShow() { return m_info.isShow; }
- /* 设置通道信息 */
- void setChannelInfo(const OneChannelInfo &info) { m_info.channelInfo = info; }
- /* 获取通道信息 */
- OneChannelInfo& getChannelInfo();
- /* 设置电压值 */
- void setVoltageRange(OscVoltageRange range);
- /* 获取电压值 */
- OscVoltageRange getVoltageRange() { return m_info.voltageRange; }
- /* 设置时间刻度 */
- void setTimeGridValue(OscTimeGridValue value);
- /* 获取时间刻度 */
- OscTimeGridValue getTimeGridValue() { return m_info.tGridValue; }
- /* 更新组件信息 */
- void updateInfo(const OneEyeMapInfo &info);
- /* 只更新设置个数页面的信息 */
- void updateSettingNum(const OneEyeMapInfo &info);
- /* 获取眼图显示区域的大小 */
- QSize getEyeMapSize() { return m_rectEyeMap.size(); }
- /* 重置眼图显示区域为默认 */
- void resetEyeMap();
- signals:
- // void signal_update();
- private slots:
- /* 刷新页面 */
- void do_update();
- /* 设备离线了 */
- void do_deviceOffline(int oscNum);
- /* 设备上线了 */
- void do_deviceOnline(int oscNum);
- protected:
- void paintEvent(QPaintEvent *event) override;
- /* 缩放事件 */
- void resizeEvent(QResizeEvent *event) override;
- private:
- /* 绘制背景 */
- void drawBackground(QPainter &painter);
- /* 绘制刻度值区域 */
- void drawScaleValue(QPainter &painter);
- /* 绘制刻度 */
- void drawScale(QPainter &painter);
- /* 绘制眼图区域 */
- void drawEyeMap(QPainter &painter);
- /* 绘制暂无设备 */
- inline void drawNoDevice(QPainter &painter);
- /* 绘制参考渐变色 */
- inline void drawRefColor(QPainter &painter);
- /* 获取一个格子的电压值 */
- inline QString getVScaleValue(int index);
- /* 获取一个时间值 */
- inline QString getTimeValue(int index);
-
- private:
- Ui::OneEyeMap *ui;
- std::shared_ptr<spdlog::logger> m_logger = nullptr;
- /* 组件属性信息 */
- bool m_isOpen = false; /* 是否示波器 */
- OneEyeMapInfo m_info; /* 组件信息 */
- QTimer m_timer;
- /* 眼图显示布局 */
- QRect m_rectScaleValue; /* 刻度值区域,除了标题栏之外的其他区域,包括下面的眼图区域 */
- QRect m_rectEyeMap; /* 眼图区域 */
- QRect m_rectRefColor; /* 参考颜色区域 */
- QRect m_rectNoDevice; /* 暂无设备区域 */
- int m_leftMargin = 0; /* 眼图距离刻度区域的左边距 */
- int m_topMargin = 0; /* 眼图距离刻度区域的上边距 */
- int m_rightMargin = 0; /* 眼图距离刻度区域的右边距 */
- int m_bottomMargin = 0; /* 眼图距离刻度区域的下边距 */
- int m_hScaleNum = 0; /* 水平刻度 */
- int m_vScaleNum = 0; /* 垂直刻度 */
- /* 眼图属性 */
- // OscVoltageRange m_cRange = OscVoltageRange::CR_2V5; /* 通道输入档位 */
- // OscTimeGridValue m_tGridValue = OscTimeGridValue::TGV_200NS; /* 时间刻度值 */
- OneOscilloscope* m_osc = nullptr; /* 示波器指针 */
- EyeColorMatrix* m_colorMatrix = nullptr; /* 本地眼图矩阵 */
- QPixmap* m_pixmapNoDevice = nullptr; /* 暂无设备图片 */
- QPixmap* m_pixmapDeviceOffline = nullptr; /* 设备离线图片 */
- };
- #endif // ONEEYEMAP_H
|