c++ - Qt 图表 - 如何在 x 和 y 轴上显示特定点值?

标签 c++ qt qtcharts

我有一个带有 QLineSeries 的图表,我想显示鼠标所在点的 x 和 y 值。我想我可以处理检索鼠标点的问题,但我不知道如何用 Qt Charts 显示它。

我在 QValueAxis 和其他函数中没有看到执行此操作的函数。

该点不一定要显示在轴上,直接在鼠标下方就足够了。

最佳答案

我找到了一种不需要太多绘图的方法:

void StatisticsChartView::mouseMoveEvent(QMouseEvent * event)
{
    /* Setting the mouse position label on the axis from value to position */
    qreal x = (event->pos()).x();
    qreal y = (event->pos()).y();

    qreal xVal = _chart->mapToValue(event->pos()).x();
    qreal yVal = _chart->mapToValue(event->pos()).y();

    qreal maxX = axisX->max();
    qreal minX = axisX->min();
    qreal maxY = axisY->max();
    qreal minY = axisY->min();

    if (xVal <= maxX && xVal >= minX && yVal <= maxY && yVal >= minY)
    {
        QPointF xPosOnAxis = _chart->mapToPosition(QPointF(x, 0));
        QPointF yPosOnAxis = _chart->mapToPosition(QPointF(0, y));

        /* m_coordX and m_coordY are `QGraphicsSimpleTextItem` */
        m_coordX->setPos(x, xPosOnAxis.y() + 5);
        m_coordY->setPos(yPosOnAxis.x() - 27, y);

        /* Displaying value of the mouse on the label */
        m_coordX->setText(QString("%1").arg(xVal, 4, 'f', 1, '0'));
        m_coordY->setText(QString("%1").arg(yVal, 4, 'f', 1, '0'));
    }

    QGraphicsView::mouseMoveEvent(event);
}

它将沿两个轴显示值

关于c++ - Qt 图表 - 如何在 x 和 y 轴上显示特定点值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41281693/

相关文章:

c++ - 未定义对 Qt 项目中 glew 方法的引用

android - QT Widget 使用 OpenCV 错误部署到 Android

c++ - qt 图表删除标题/图例/的空间

c++ - 十进制转二进制输出

qt - 如何设置 Qt 应用程序在哪里找到 Qt 模块?

c++ - QtCharts——后台、前台显示

python - 将我选择的颜色附加到 QPieSeries 的每个切片

c++ - Metalog 所有日志都打印有[kernel]

c++ - 您如何在测试 gmock 下模拟属于该类的函数?

c++ - 显式实例化类模板中的自动构造函数