Qt-Qcustomplot坐标轴缩放、拖动等调整

62 篇文章 104 订阅
11 篇文章 13 订阅

Qcustomplot入门请点击: Qcustomplot入门教程
Qcustomplot中可以设置坐标轴属性:
1、 setInteractions函数

//设置基本坐标轴(左侧Y轴和下方X轴)可拖动、可缩放、曲线可选、legend可选、设置伸缩比例,使所有图例可见
CustomPlot->setInteractions(QCP::iRangeDrag|QCP::iRangeZoom| QCP::iSelectAxes |
                                  QCP::iSelectLegend | QCP::iSelectPlottables);

QCP还有iMultiSelect等其他属性,读者可自行尝试
这种方法只能设置基础坐标轴

2、setRangeZoomAxes函数
使坐标轴可以伸缩
在2.0系列版本的Qcustomplot中,可以对通过坐标轴列表对两套坐标轴进行设置:

   QList<QCPAxis*> axes;
   axes << CustomPlot->yAxis2 << CustomPlot->xAxis2 << CustomPlot->yAxis << CustomPlot->xAxis;
   CustomPlot->axisRect()->setRangeZoomAxes(axes);

但在1.0系列版本中只能设置一套,并且两套坐标轴都进行设置只能有一套坐标轴起作用:

CustomPlot->axisRect()->setRangeZoomAxes(ui->widget->xAxis, ui->widget->yAxis);

3、根据图像最高点最低点自动缩放坐标轴
绘制实时数据时,需要每次数据绘制完成就调用此函数,否则不会生效(是根据当前点调整坐标)。

//Y轴
CustomPlot->graph(2)->rescaleValueAxis(true); 
//X轴 
CustomPlot->graph(2)->rescaleKeyAxis(true); 
//X、Y轴 
CustomPlot->graph(2)->rescaleAxes(true); 

4、setRangeZoomFactor
设置伸缩比例 setRangeZoomFactor( double horizontalFactor, double verticalFactor );可以分别设定X,Y方向

Customplot->axisRect()->setRangeZoomFactor(1.2,2.2);/x方向为1.2

5、重载鼠标滚轮事件和按钮事件
这种方法相对来说比较麻烦,尝试了上面的方法后我放弃了使用这种方法,但这种方法的灵活性是以上方法无法比拟的

其他Qcustomplot坐标轴属性可参考:
https://www.cnblogs.com/swarmbees/p/6059812.html

  • 26
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
QCustomPlot是一个功能丰富的开源绘图库,可以在Qt程序中添加绘图功能。对于框选缩放QCustomPlot提供了一些方便的方法。 首先,我们可以通过设置QCustomPlot坐标轴范围来实现框选缩放。当用户在绘图区域按下鼠标左键并移动时,我们可以根据鼠标移动的距离计算出要缩放的范围,然后使用以下方法设置坐标轴范围: ```cpp QCustomPlot::xAxis->setRange(lower, upper); QCustomPlot::yAxis->setRange(lower, upper); ``` 其中,`xAxis`和`yAxis`分别表示横轴和纵轴,`lower`和`upper`表示要设置的范围。 其次,我们可以通过设置QCPAxisRect的范围来实现框选缩放。QCPAxisRect是QCustomPlot中包含坐标轴的一个矩形区域,我们可以根据用户框选的范围设置该区域的范围,从而实现缩放效果。以下是设置QCPAxisRect范围的示例代码: ```cpp QCPAxisRect *axisRect = QCustomPlot::axisRect(); axisRect->setRangeZoom(Qt::Horizontal|Qt::Vertical); axisRect->setRangeZoomFactor(factor); ``` 其中,`setRangeZoom`函数设置了框选缩放的方向,`setRangeZoomFactor`函数设置了框选缩放的比例因子。 最后,我们可以通过设置QCPAxisRect的鼠标交互属性来启用框选缩放功能。以下是启用框选缩放功能的代码: ```cpp QCPAxisRect *axisRect = QCustomPlot::axisRect(); axisRect->setRangeDrag(Qt::Horizontal|Qt::Vertical); axisRect->setRangeZoom(Qt::Horizontal|Qt::Vertical); ``` 通过设置`setRangeDrag`函数,我们可以启用拖动平移功能,`setRangeZoom`函数可以启用框选缩放功能。 总的来说,QCustomPlot提供了多种方法来实现框选缩放功能,开发者可以根据自己的需求选择适合的方法来实现。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值