QwtPlotZoomer设置zoomBase,比当前x轴范围小,设置失败的解决方法。

项目场景:

qwt项目中开发中有个需求是设置zoomBase的x轴范围,比当前范围要小。但是当前x轴范围不可以变化。


问题分析

QwtPlotZoomer类设置zoomBase,如果当前x轴范围比设置的矩形x轴范围大,则设置失败。
此时zoomBase默认设置为plot当前范围的矩形。


解决方案:

如果想设置比当前x轴范围小的zoomBase。

  1. 先把当前x轴范围记录下来。
const auto xAxisDiv = m_qwtPlot->axisScaleDiv(QwtPlot::xBottom);
  1. 设置当前范围为你想要设置的zoomBase。调用QwtPlot中的 void setAxisScale( int axisId, double min, double max, double step = 0 )函数。

  2. 设置zoomBase。调用QwtPlotZoomer中的setZoomBase( const QRectF & )函数

  3. 设置成功了之后。把记录下来的x轴范围恢复。

 m_qwtPlot->setAxisScaleDiv(QwtPlot::xBottom, xAxisDiv);

这样我们就达到了想要的效果,既设置了zoomBase,又能保证当前的x轴范围不变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值