2

QLineSeries を使用したチャートがあり、マウスがあるポイントの x 値と y 値を表示したいと考えています。マウスポイントを取得する問題を処理できると思いますが、Qt Charts で表示する方法がわかりません。

QValueAxis などでそれを行う関数が表示されません。

ポイントは必ずしも軸上に表示する必要はありません。マウスの真下でも十分です。

4

1 に答える 1

5

あまり描画を行わずにそれを行う方法を見つけました:

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

両方の軸に沿って値が表示されます

于 2016-12-27T13:44:55.677 に答える