私はQtChartsを学んでいます。チャートをズームし、それに応じてY軸の範囲を調整して、線の論理的な可視部分をChartViewの実際の可視領域に完全にプロットできるようにする必要があります。
例えば:
auto chart = new QtCharts::QChart;
auto lines = new QtCharts::QLineSeries;
QDateTime dt = QDateTime::currentDateTime();
for( int i = 0; i < 100; ++i ) {
lines->append( dt.toMSecsSinceEpoch(), std::pow( i, 2 ) );
dt = dt.addMSecs( 500 );
}
chart->addSeries( lines );
auto axisX = new QtCharts::QDateTimeAxis( chart );
axisX->setTickCount( 13 );
axisX->setFormat( "ss.zzz" );
chart->addAxis( axisX, Qt::AlignBottom );
lines->attachAxis( axisX );
auto axisY = new QtCharts::QValueAxis( chart );
axisY->setLabelFormat( "%i" );
chart->addAxis( axisY, Qt::AlignLeft );
lines->attachAxis( axisY );
auto cv = new QtCharts::QChartView( chart );
setCentralWidget( cv );
resize( 800, 600 );
cv->show();
ズームインするときは、チャートの「zoomin」メソッドを呼び出します。
chart->zoomIn();
ただし、次のように、行は「ビューの表示領域からはみ出します」。
そこで、チャートの scroll メソッドを呼び出しました。
chart->scroll( 0, -50 );
しかし、それは明らかに私の製品プログラム内では適用できません。
- axisY->setRange、chart->zoom、chart->scrollなどを呼び出した後、チャートが再描画されると信じているため、何度も「再描画」するつもりはありません...
- axisY->setRange の引数を調整するにはどうすればよいですか? QLineSeries/QChart/QValue/QChartView のメンバーを調べましたが、Y 軸の新しい最大値/最小値を計算する方法が見つかりませんでした。
私の問題を解決できる方法があるに違いないと信じていますが、わかりません。ありがとう!下手な英語でごめんなさい。