QCustomPlot 设置游标详细笔记
在 QT 下开发虚拟示波器程序时,需要用到曲线显示控件,开源的有 QCustomPlot 和
QWT,其中 QCustomPlot 可以直接利用其源码,而不需要使用链接库的方式,因此,得到
了大量的应用,为了简化,我使用了 QCustomPlot 1.3.0 的源代码并进行了修改实现完整的
功能。
1、X 轴和 Y 轴坐标迹线
常见示波器上,可以设置 X 轴和 Y 轴坐标迹线并且可以移动。为此,在借鉴网上代码
(hp://www.manongjc.com/arcle/22306.html 基于 QCustomPlot 绘图,鼠标跟随动态显示
曲线上的点的值)基础上,定义 ScopeTraceLine 类,与网上提供代码相比,增加了代表位
置的坐标值变量和获取属性函数,并做出了相应的修改。
///
/// rief The ScopeCrossLine class:用于显示鼠标移动过程中的鼠标位置的直线
///
class ScopeTraceLine : public QObject
{
public:
explicit ScopeTraceLine(QCustomPlot *_plot, LineType _type = VercalLine, QObject
*parent = Q_NULLPTR);
~ScopeTraceLine();
void initLine();
void updatePosion(double xValue, double yValue);
void setSelected(bool selected);
void setVisible(bool vis);
LineType GetType()const{return m_type;}
double getPosionX()const{return m_xValue;}
double getPosionY()const{return m_yValue;}
protected:
bool m_visible;//是否可见
LineType m_type;//类型
QCustomPlot *m_plot;//图表
QCPItemStraightLine *m_lineV; //垂直线
QCPItemStraightLine *m_lineH; //水平线
double m_xValue;
double m_yValue;
};
具体实现函数如下:
ScopeTraceLine::ScopeTraceLine(QCustomPlot *_plot, LineType _type, QObject *parent)
: QObject(parent),
m_type(_type),
m_plot(_plot)
{
m_lineV = Q_NULLPTR;
评论1
最新资源