QPainter中心缩放
时间: 2024-09-17 22:03:21 浏览: 8
在Qt中,`QPainter`用于绘制图形,包括实现图形的缩放功能。对于以鼠标为中心的缩放,可以结合鼠标滚轮事件(QWheelEvent)来操作。以下是一个简单的实现方式,展示了如何在`MainWindow`类中处理鼠标滚轮事件并调整画布的缩放:
1. 首先,在`MainWindow`类中定义一个槽函数`getWheelSlot()`,该函数会在接收到滚轮滚动事件时被调用[^1]:
```cpp
void MainWindow::getWheelSlot(QWheelEvent *event)
{
if (event->delta() > 0) {
// 滚轮向上滚动,放大
drawFigure.scale(1.1, 1.1);
} else {
// 滚轮向下滚动,缩小
drawFigure.scale(1 / 1.1, 1 / 1.1);
}
}
```
2. 在`eventFilter()`函数中,监听窗口对象的事件,当接收到滚轮滚动事件时,调用`getWheelSlot()`:
```cpp
bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
if (event->type() == QEvent::Wheel) {
getWheelSlot(static_cast<QWheelEvent*>(event));
return true;
}
return QMainWindow::eventFilter(object, event);
}
```
这样,当用户滚动鼠标滚轮时,画布将以鼠标点击位置为中心进行缩放。