我已經從點創建了樣條曲線圖。現在在qt圖表中移動
我想用鍵盤上的箭頭這張圖(左和右)和打印的所有點(X,Y)上,而移動移動。
「移動」 - 我的意思是,放置在圖線「比圖線寬度大點」的開始位置,並使用鍵盤(< - , - >)移動該點。
如何做到這一點?
我已經從點創建了樣條曲線圖。現在在qt圖表中移動
我想用鍵盤上的箭頭這張圖(左和右)和打印的所有點(X,Y)上,而移動移動。
「移動」 - 我的意思是,放置在圖線「比圖線寬度大點」的開始位置,並使用鍵盤(< - , - >)移動該點。
如何做到這一點?
您可以用QGraphicsEllipseItem圖形繪製點:http://doc.qt.io/qt-4.8/qgraphicsellipseitem.html
與你擦肩而過圖表項目作爲參數傳遞給QGraphicsEllipseItem。
QGraphicsEllipseItem *ellipseItem = new QGraphicsEllipseItem(chart);
然後創建一個QChartView:
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;
}
}
當這些鍵被按下,你可以從一個去指向下一個。要檢索點位置,使用來自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值相同的東西,但使用QGraphicsSimpleTextItem而不是QGraphicsEllipseItem。 您可能需要手動調整以便它們不會顯示在對方的頂部自己的位置,例如:
textItemX->setPos(pointPos.x() - 5, pointPos.y() +10);
和設置文本:
QString textX = QString("x: %1").arg(pointPos.x());
textItemX->setText(textX);