ZBLOG

使用第三方库QCustomPlot画曲线图 怎么鼠标滑到坐标点,显示坐标数据

要在QCustomPlot中实现鼠标滑到坐标点时显示坐标数据,你可以使用QCPItemTracer类来跟踪鼠标位置并显示数据。

首先,创建一个 QCPItemTracer 对象,并将其添加到你的曲线图上。然后,连接 QCustomPlotmouseMove 信号到一个槽函数,在槽函数中更新 QCPItemTracer 的位置和显示的数据。

以下是一个简单的示例代码:

// 创建一个 QCPItemTracer 对象
QCPItemTracer *tracer = new QCPItemTracer(customPlot);

// 设置 tracer 样式和大小
tracer->setStyle(QCPItemTracer::tsCircle);
tracer->setSize(10);

// 连接 mouseMove 信号到槽函数
connect(customPlot, &QCustomPlot::mouseMove, this, [customPlot, tracer](QMouseEvent* event) {
    // 获得鼠标在图表上的像素坐标
    QPointF pos = customPlot->mapFromGlobal(event->globalPos());

    // 将像素坐标转换为图表坐标
    double x = customPlot->xAxis->pixelToCoord(pos.x());
    double y = customPlot->yAxis->pixelToCoord(pos.y());

    // 更新 tracer 的位置和显示的数据
    tracer->setGraphKey(x);
    tracer->updatePosition();
    
    // 在曲线图上添加一个文本框来显示坐标数据
    QString dataText = QString("X: %1\nY: %2").arg(x).arg(y);
    customPlot->plotLayout()->insertRow(0); // 添加新的行
    QCPTextElement *dataLabel = new QCPTextElement(customPlot, dataText, QFont("Helvetica", 10));
    customPlot->plotLayout()->addElement(0, 0, dataLabel);

    // 设置文本框的位置和边距
    dataLabel->setPositionAlignment(Qt::AlignTop|Qt::AlignLeft);
    dataLabel->setPadding(QMargins(5, 5, 5, 5));
});

请确保在使用 QCustomPlot 绘制曲线图之前已经正确初始化了相关对象,并在适当的时候调用 replot() 函数更新图表。

这样,当鼠标滑动到曲线上的坐标点时,将显示一个跟随鼠标移动的圆形点,并且在图表上方显示坐标数据。你可以根据需要自定义样式和布局。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=7295

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?