2.1.1版本 qcustomplot 滚轮只放大x轴数据,y轴数据不动,并且跟y轴轴距对应
时间: 2023-11-28 19:49:49 浏览: 107
qcustomplot2.0.0
在 QCustomPlot 中,滚轮操作默认是同时放大 x 轴和 y 轴的。如果你只想放大 x 轴,可以通过以下代码实现:
```cpp
ui->plot->axisRect()->setRangeZoom(Qt::Horizontal);
```
这样设置后,滚轮操作只会放大 x 轴的数据。如果要同时保持 y 轴轴距不变,可以在滚轮事件中手动调整 y 轴的范围,使其与 x 轴的范围比例相同。示例代码如下:
```cpp
void MainWindow::onPlotMouseWheel(QWheelEvent *event)
{
double factor = qPow(1.2, event->delta() / 240.0); // 计算缩放因子
double x = ui->plot->xAxis->pixelToCoord(event->pos().x()); // 获取鼠标指针所在的 x 坐标
double y = ui->plot->yAxis->pixelToCoord(event->pos().y()); // 获取鼠标指针所在的 y 坐标
double xRange = ui->plot->xAxis->range().size() / factor; // 计算新的 x 轴范围
double yRange = xRange * ui->plot->height() / ui->plot->width(); // 计算新的 y 轴范围,保持比例不变
ui->plot->xAxis->setRange(x - xRange / 2, x + xRange / 2); // 设置新的 x 轴范围
ui->plot->yAxis->setRange(y - yRange / 2, y + yRange / 2); // 设置新的 y 轴范围
ui->plot->replot(); // 重新绘制图形
}
```
将上述代码与 `QCustomPlot` 的 `mouseWheel` 事件关联,即可实现滚轮只放大 x 轴数据,y 轴数据不动,并且跟 y 轴轴距对应的效果。
阅读全文