QGraphicsView 是 Qt 框架中用于显示和操作 QGraphicsScene 的视图组件。wheelEvent(QWheelEvent *event) 是 QGraphicsView 类中的一个事件处理函数,用于处理鼠标滚轮事件。当用户滚动鼠标滚轮时,会触发这个函数。
函数原型
protected:
void wheelEvent(QWheelEvent *event) override;
参数
event: 指向QWheelEvent对象的指针,包含了滚轮事件的所有相关信息,比如滚动的方向、角度、修饰键(如 Ctrl、Shift 等)的状态等。
常见用法
你可以通过重写 wheelEvent 函数来自定义鼠标滚轮事件的处理逻辑。例如,你可以实现使用滚轮来缩放视图的功能。
以下是一个简单的示例,展示了如何重写 wheelEvent 函数来实现视图缩放:
#include <QGraphicsView>
#include <QWheelEvent>
#include <QtMath>
class CustomGraphicsView : public QGraphicsView {
Q_OBJECT
public:
CustomGraphicsView(QWidget *parent = nullptr) : QGraphicsView(parent) {
setRenderHint(QPainter::Antialiasing, true);
setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
}
protected:
void wheelEvent(QWheelEvent *event) override {
// 获取滚轮滚动的角度
int delta = event->angleDelta().y();
// 设置缩放因子
qreal scaleFactor = 1.15;
if (delta < 0) {
scaleFactor = 1.0 / scaleFactor;
}
// 缩放视图
scale(scaleFactor, scaleFactor);
}
};
解释
- 类定义和构造函数:
- 定义了一个
CustomGraphicsView类,继承自QGraphicsView。 - 在构造函数中,设置了抗锯齿渲染提示,并将变换锚点设置为鼠标下方,这样在缩放时视图会以鼠标位置为中心。
- 定义了一个
- 重写
wheelEvent函数:- 获取滚轮滚动的角度
delta。正值表示滚轮向前滚动,负值表示向后滚动。 - 根据滚动的方向设置缩放因子
scaleFactor。向前滚动则放大视图,向后滚动则缩小视图。 - 调用
scale函数对视图进行缩放。
- 获取滚轮滚动的角度
注意事项
wheelEvent默认不会被QGraphicsView处理,因此你需要重写这个函数来实现自定义的滚轮事件处理逻辑。- 调用
scale函数时,视图会以当前鼠标位置为中心进行缩放,这是通过设置setTransformationAnchor(QGraphicsView::AnchorUnderMouse)实现的。 - 你可以根据实际需求调整缩放因子的大小,以及添加其他处理逻辑,比如限制缩放范围等。
通过重写 wheelEvent 函数,你可以非常灵活地控制 QGraphicsView 在响应鼠标滚轮事件时的行为。
2万+

被折叠的 条评论
为什么被折叠?



