2016-12-30 10 views
2

ポイントからスプラインチャートを作成しました。Qtチャートで移動

enter image description here

今は移動しながら、このキーボード上の矢印キーを使用してグラフ(左および右)と印刷すべての点(x、y)の上を移動したいと思います。

「移動」 - チャートの行の先頭に配置し、このドットを移動するにはキーボード(<、 - >)を使用します。

これを行う方法?

答えて

1

あなたはQGraphicsEllipseItemと、グラフ上の点を描くことができます:あなたはQGraphicsEllipseItemにパラメータとしてアイテムをグラフhttp://doc.qt.io/qt-4.8/qgraphicsellipseitem.html

パス。

QChartView *chartView = new QChartView(chart); 

あなたはキーが押されたキャッチする機能を再実装することができます:これらのキーが押されたとき

void View::keyPressEvent(QKeyEvent *event) 
{ 
    switch (event->key()) 
    { 
    case Qt::Key_Left: 
     ... 
     break; 
    case Qt::Key_Right: 
     ... 
     break; 
    default: 
     QGraphicsView::keyPressEvent(event); 
     break; 
    } 
} 

あなたから行くことができるの

QGraphicsEllipseItem *ellipseItem = new QGraphicsEllipseItem(chart); 

その後QChartViewを作成次のものを指す。ポイントの位置を取得するには、QXYSeries(http://doc.qt.io/qt-5/qxyseries.html)から継承されたあなたのスプラインシリーズの機能を使用します。

QPointF point = splineLine->at(index); 

は、画面内の位置にチャートの位置を変換:

QPointF pointPos = chart->mapToPosition(point); 

は、その後、あなたのellipseItemを配置:

ellipseItem->setPos(pointPos); 

同じことをxとyの値で表示するには、QGraphicsEllipseItemの代わりにQGraphicsSimpleTextItemを使用します。あなたは彼らが互いの上に表示されないので、たとえば、手動で自分の位置を調整する必要があるかもしれません :

textItemX->setPos(pointPos.x() - 5, pointPos.y() +10); 

とテキストを設定します。

QString textX = QString("x: %1").arg(pointPos.x()); 
textItemX->setText(textX); 
関連する問題