QT开发中文网

QGraphicsView 如何设置一个点随着放大而放大,缩小而缩小

要实现这样的效果,可以使用QGraphicsViewsetTransform()方法来设置变换矩阵。具体步骤如下:

  1. 创建一个自定义的QGraphicsView子类,并重写其wheelEvent()方法。
class CustomGraphicsView : public QGraphicsView {
public:
    void wheelEvent(QWheelEvent *event) override;
};
  1. wheelEvent() 方法中,根据滚轮事件的delta值判断放大或缩小,并调整视图的变换矩阵。
void CustomGraphicsView::wheelEvent(QWheelEvent *event) {
    // 获取当前的缩放因子
    qreal currentScale = transform().m11();
    
    // 根据滚轮事件的delta值判断是放大还是缩小
    int delta = event->angleDelta().y();
    qreal scaleFactor = (delta > 0) ? 1.2 : 0.8; // 自定义缩放因子
    
    // 根据缩放因子和滚轮事件位置进行变换
    QPointF mousePos = mapToScene(event->pos());
    translate(mousePos.x(), mousePos.y());
    scale(scaleFactor, scaleFactor);
    translate(-mousePos.x(), -mousePos.y());
}
  1. 在主窗口或其他地方创建并使用自定义的 CustomGraphicsView 对象。
CustomGraphicsView *view = new CustomGraphicsView();

通过以上步骤,当在 QGraphicsView 中滚动鼠标滚轮时,画布上的点会随着视图的放大和缩小而相应地放大和缩小。请注意根据实际需求调整变换因子和其他参数。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=10443

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?