/** * @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; };