QCustomPlot系列 进行框选放大(二)

前面一章已经记录了 怎么进行框选放大了。
添加如下代码:

 customPlot->selectionRect()->setPen(QPen(Qt::black,1,Qt::DashLine));//设置选框的样式:虚线
customPlot->selectionRect()->setBrush(QBrush(QColor(0,0,100,50)));//设置选框的样式:半透明浅蓝
customPlot->setSelectionRectMode(QCP::SelectionRectMode::srmZoom);

不过使用官方的框选放大功能,也带来一个毛病,就是鼠标左、右、中,三个键都变成了框选放大,失去了拖拽平移功能,这用起来很不爽,我们改一下官方源码

怎么修改。
步骤一: 我们知道 setInteractions函数API是实现拽轴的范围、滚动缩放轴的范围,左键点选图层的功能 我们进入源代码找到这个函数就可以了(还不知道setInteractions函数的 可以我前面一篇),我们这把它限制在右键按下的前提下,

 // 支持鼠标拖拽轴的范围、滚动缩放轴的范围,左键点选图层(每条曲线独占一个图层)
customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);

二 :要改变控制方式 我们就需要修改源代码。
2.1 修改地方一:如下图
在这里插入图片描述

2.2: 修改地方二:如下图 17823行
在这里插入图片描述

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
qcustomplot 是一个基于 Qt C++ 库的开源绘图库,支持多种绘图类型和交互方式,包括框选放大缩小功能。 要在 qcustomplot 中实现框选放大缩小,可以通过以下步骤完成: 1. 在 QCustomPlot 对象上启用交互功能,使用 setInteractions() 函数,并传递需要启用的交互模式,例如: ``` ui->customPlot->setInteractions(QCP::iRangeZoom | QCP::iRangeDrag); ``` 这将启用范围缩放和范围拖动交互模式。 2. 为 QCustomPlot 对象设置鼠标指针,使用 setCursor() 函数,并传递所需的光标类型,例如: ``` ui->customPlot->setCursor(Qt::ArrowCursor); ``` 这将将光标设置为箭头。 3. 使用 QCPSelectionRect 类创建一个选择矩形,并将其添加到 QCustomPlot 对象中,例如: ``` QCPSelectionRect *selectionRect = new QCPSelectionRect(ui->customPlot); ``` 4. 为选择矩形设置样式和颜色,例如: ``` selectionRect->setPen(QPen(Qt::blue, 2, Qt::DashLine)); selectionRect->setBrush(QBrush(QColor(0, 0, 255, 50))); ``` 这将设置矩形的边框为蓝色虚线,填充颜色为半透明蓝色。 5. 为选择矩形连接信号和槽函数,以便在选择矩形改变大小时执行操作,例如: ``` connect(selectionRect, SIGNAL(selectionChanged(QRect, QMouseEvent*)), this, SLOT(selectionChanged(QRect, QMouseEvent*))); ``` 6. 在槽函数中执行所需的操作,例如: ``` void MainWindow::selectionChanged(QRect rect, QMouseEvent *) { ui->customPlot->axisRect()->setRangeZoom(rect); } ``` 这将在选择矩形改变大小时使用范围缩放交互模式进行放大缩小。 通过这些步骤,您可以在 qcustomplot 中实现框选放大缩小功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七 六 伍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值