Я изучаю 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();
Но линия "выходит из видимой области просмотра", например:
Я хочу, чтобы это выглядело вот так:
Итак, я вызвал метод прокрутки диаграммы:
chart->scroll( 0, -50 );
Но, очевидно, он не может быть применен в моей программе продукта, как:
- Я не хочу «перерисовывать» несколько раз, так как я верю, что диаграмма будет перекрашиваться после любых вызовов к axisY-> setRange и chart-> zoom, и chart-> scroll, и так далее ...
- Как мне указать аргументы оси Y-> setRange, чтобы настроить его? Я просмотрел элементы QLineSeries / QChart / QValue / QChartView, но не нашел способа вычислить новое максимальное / минимальное значение оси-Y.
Я считаю, что метод может решить мою проблему, но я не знаю. Спасибо! Извините за мой бедный Энгли sh.