QCustomPlot 标记点和文本标签

本文介绍如何在QCustomPlot中创建标记点和文本标签。标记点用于指示图表上的特定数据点,而文本标签则在用户点击数据点时显示详细信息。通过循环遍历曲线数据并与鼠标点击位置比较,可以实现标记功能。同时,通过创建新的文本标签并获取点击点的数据,可以实现数据的可视化展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标记点

1、含义:指向QCPGraph的数据点的Item
2、new一个新的标记点

m_sameTimeTracer = new QCPItemTracer(SameTimeCompareCustomPlot);
m_sameTimeTracer->setParent(SameTimeCompareCustomPlot); //设置标记点的父类
m_sameTimeTracer->setPen(QColor(255,255,255));
m_sameTimeTracer->setBrush(QBrush(QColor(255,0,0),Qt::SolidPattern));
m_sameTimeTracer->setStyle(QCPItemTracer::tsCircle);    //设置标记点的样式
m_sameTimeTracer->setSize(10);  //标记点的大小
m_sameTimeTracer->setVisible(false);

3、思路:
循环遍历当前曲线的数据点,并将数据点的坐标与鼠标点击的位置坐标进行对比,当鼠标点击的位置在数据点附近的小范围内,则标记该数据点为标记点

QRect rect(0,0,1,1);    //设置小矩形框作为数据点附近的范围
QPoint p;
double posKey;
p.setX(e->pos().x());
p.setY(e->pos().y());
foreach(QCPData data,graph->data()->values())
{
      key = data.key;
      value = data.value;
      posKey = SameTimeCompareCustomPlot->xAxis->coordToPixel(key);
      if(qAbs(posKey-e->pos().x())<=10)
      {
         double posx = graph->keyAxis()->coordToPixel(key);
         double posy = graph->valueAxis()->coordToPixel(value);
         rect.setRect(posx-10,posy-10,21,21);
         if(!rect.contains(e->pos()))
            continue;
          
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值