QGraphicsView 以鼠标点为中心进行缩放的设置

2 篇文章 0 订阅

QGraphicsView 以鼠标点为中心进行缩放的设置:

setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
setResizeAnchor(QGraphicsView::AnchorUnderMouse);

注:上述起作用的前提是垂直和水平方向场景比视图大,可以简单理解为有水平和垂直滚动条。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QGraphicsView是一个Qt库中的组件,用于显示和编辑 QGraphicsScene 中的内容。它提供了一个视图窗口,用户可以通过鼠标缩放、平移和交互操作场景中的图形。当启用鼠标缩放功能时,用户通常双击鼠标左键或者按住滚轮进行缩放。 具体操作如下: 1. **启用缩放功能**:在`QGraphicsView`实例的构造函数或配置中设置其为可缩放,例如使用`setTransformationAnchor(Qt::AnchorUnderMouse)`来指定锚点随鼠标位置变化,或`setDragMode(QGraphicsView::ScrollHandDrag)`设置鼠标滚动缩放模式。 ```cpp QGraphicsView view; view.setTransformationAnchor(Qt::AnchorUnderMouse); view.setDragMode(QGraphicsView::ScrollHandDrag); ``` 2. **缩放事件处理**:你可以监听`QGraphicsView`的`wheelEvent()`或`mousePressEvent()`等信号来响应用户的缩放动作,并调整视图的缩放比例。 ```cpp connect(view, &QGraphicsView::wheelEvent, this, &YourClass::handleWheelZoom); ``` - `handleWheelZoom(QWheelEvent *event)`函数可以读取事件的delta值来决定缩放的幅度。 3. **缩放后的调整**:在缩放操作后,可能需要重新调整视口大小(viewportSize)和视口中心(viewportCenter)以保持场景的比例。 ```cpp void handleWheelZoom(QWheelEvent *event) { qreal scaleFactor = 1.0 + event->delta() / 240.0; // 假设滚轮向下转一圈为-240 view.scale(scaleFactor, scaleFactor); // 缩放视图 // 更新视口位置和大小,保持场景比例不变 view.setViewportPosition(view.mapToScene(view.viewport()->rect().center())); view.setViewportSize(view.sceneRect().size()); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值