Диаграммы Qt — Как отобразить конкретное значение точки на осях X и Y?

У меня есть диаграмма с QLineSeries, и я хотел бы отобразить значения x и y точки, где находится мышь. Я думаю, что могу справиться с проблемой восстановления точки мыши, но я не знаю, как отобразить ее с помощью Qt Charts.

Я не вижу функций для этого в QValueAxis и других.

Точка не обязательно должна быть отображена на оси, достаточно и под мышью.

1

Решение

Я нашел способ сделать это без большого количества вовлеченного рисунка:

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);
}

Он будет отображать значения вдоль обеих осей

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]