XNSim/XNMonitor/XNCustomPlot.h
2025-04-28 12:25:20 +08:00

88 lines
1.8 KiB
C++
Executable File

/**
* @file XNCustomPlot.h
* @author jinchao
* @brief 自定义绘图类
* @version 1.0
* @date 2025-03-10
*
* @copyright Copyright (c) 2025 COMAC
*
*/
#pragma once
#include "qcustomplot.h"
/**
* @brief 自定义绘图类
*/
class XNCustomPlot : public QCustomPlot
{
Q_OBJECT
public:
/**
* @brief 构造函数
* @param parent 父窗口
*/
explicit XNCustomPlot(QWidget *parent = nullptr);
/**
* @brief 获取Y轴是否被用户缩放
* @return 是否被用户缩放
*/
bool isYAxisUserScaled() const { return m_yAxisUserScaled; }
/**
* @brief 设置Y轴是否被用户缩放
* @param scaled 是否被用户缩放
*/
void setYAxisUserScaled(bool scaled) { m_yAxisUserScaled = scaled; }
/**
* @brief 设置是否为内部变化
* @param internal 是否为内部变化
*/
void setInternalChange(bool internal) { m_isInternalChange = internal; }
protected:
/**
* @brief 鼠标按下事件
* @param event 鼠标事件
*/
void mousePressEvent(QMouseEvent *event) override;
/**
* @brief 鼠标释放事件
* @param event 鼠标事件
*/
void mouseReleaseEvent(QMouseEvent *event) override;
/**
* @brief 鼠标滚轮事件
* @param event 鼠标事件
*/
void wheelEvent(QWheelEvent *event) override;
signals:
/**
* @brief 鼠标按下信号
* @param event 鼠标事件
*/
void mousePressed(QMouseEvent *event);
/**
* @brief 自定义上下文菜单请求信号
* @param pos 位置
*/
void customContextMenuRequested(const QPoint &pos);
private slots:
/**
* @brief Y轴范围变化信号
* @param range 范围
*/
void onYAxisRangeChanged(const QCPRange &range);
private:
/**
* @brief Y轴是否被用户缩放
*/
bool m_yAxisUserScaled;
/**
* @brief 是否为内部变化
*/
bool m_isInternalChange;
};