88 lines
1.8 KiB
C++
Executable File
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;
|
|
};
|