设为首页 加入收藏

TOP

基于QCustomPlot绘图,鼠标跟随动态显示曲线上的点的值(二)
2018-12-11 16:09:42 】 浏览:1275
Tags:基于 QCustomPlot 绘图 鼠标 跟随 动态 显示 曲线
ItemPosition::ptAxisRectRatio); m_tracer
->setSize(7); m_label->setPositionAlignment(Qt::AlignTop | Qt::AlignHCenter); m_arrow->end->setParentAnchor(m_tracer->position); m_arrow->start->setParentAnchor(m_arrow->end); m_arrow->start->setCoords(0, 20);//偏移量 break; } case YAxisTracer: { m_tracer->position->setTypeX(QCPItemPosition::ptAxisRectRatio); m_tracer->position->setTypeY(QCPItemPosition::ptPlotCoords); m_tracer->setSize(7); m_label->setPositionAlignment(Qt::AlignRight | Qt::AlignHCenter); m_arrow->end->setParentAnchor(m_tracer->position); m_arrow->start->setParentAnchor(m_label->position); m_arrow->start->setCoords(-20, 0);//偏移量 break; } case DataTracer: { m_tracer->position->setTypeX(QCPItemPosition::ptPlotCoords); m_tracer->position->setTypeY(QCPItemPosition::ptPlotCoords); m_tracer->setSize(5); m_label->setPositionAlignment(Qt::AlignLeft | Qt::AlignVCenter); m_arrow->end->setParentAnchor(m_tracer->position); m_arrow->start->setParentAnchor(m_arrow->end); m_arrow->start->setCoords(20, 0); break; } default: break; } setVisible(false); } } XxwTracer::~XxwTracer() { if(m_plot) { if (m_tracer) m_plot->removeItem(m_tracer); if (m_label) m_plot->removeItem(m_label); if (m_arrow) m_plot->removeItem(m_arrow); } } void XxwTracer::setPen(const QPen &pen) { if(m_tracer) m_tracer->setPen(pen); if(m_arrow) m_arrow->setPen(pen); } void XxwTracer::setBrush(const QBrush &brush) { if(m_tracer) m_tracer->setBrush(brush); } void XxwTracer::setLabelPen(const QPen &pen) { if(m_label) { m_label->setPen(pen); m_label->setBrush(Qt::NoBrush); m_label->setColor(pen.color()); } } void XxwTracer::setText(const QString &text) { if(m_label) m_label->setText(text); } void XxwTracer::setVisible(bool vis) { m_visible = vis; if(m_tracer) m_tracer->setVisible(m_visible); if(m_label) m_label->setVisible(m_visible); if(m_arrow) m_arrow->setVisible(m_visible); } void XxwTracer::updatePosition(double xValue, double yValue) { if (!m_visible) { setVisible(true); m_visible = true; } if (yValue > m_plot->yAxis->range().upper) yValue = m_plot->yAxis->range().upper; switch (m_type) { case XAxisTracer: { m_tracer->position->setCoords(xValue, 1); m_label->position->setCoords(0, 15); m_arrow->start->setCoords(0, 15); m_arrow->end->setCoords(0, 0); setText(QString::number(xValue)); break; } case YAxisTracer: { m_tracer->position->setCoords(0, yValue); m_label->position->setCoords(-20, 0); // m_arrow->start->setCoords(20, 0); // m_arrow->end->setCoords(0, 0); setText(QString::number(yValue)); break; } case DataTracer: { m_tracer->position->setCoords(xValue, yValue); m_label->position->setCoords(20, 0); setText(QString("x:%1,y:%2").arg(xValue).arg(yValue)); break; } default: break; } } XxwTraceLine::XxwTraceLine(QCustomPlot *_plot, LineType _type, QObject *parent) : QObject(parent), m_type(_type), m_plot(_plot) { m_lineV = Q_NULLPTR; m_lineH = Q_NULLPTR; initLine(); } XxwTraceLine::~XxwTraceLine() { if(m_plot) { if (m_lineV) m_plot->remove
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[bzoj3524][Couriers] 下一篇[luogu3810][bzoj3262][陌上花开]

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目