我正在学习 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等的任何调用之后,图表都会被重绘……
- 我应该如何找出axisY->setRange的参数来调整它?我查看了 QLineSeries/QChart/QValue/QChartView 的成员,但没有找到计算 Y 轴新最大值/最小值的方法。
我相信一定有一种方法可以解决我的问题,但我不知道。谢谢!对不起我的英语不好。