程序运行截图如下:

关键的函数:

逻辑:通过滚轮事件,识别滚轮放大上移还是下移动,调用这个函数

源码如下:

mygraphicsview.h

#ifndef MYGRAPHICSVIEW_H
#define MYGRAPHICSVIEW_H#include <QObject>
#include <QGraphicsView>QT_BEGIN_NAMESPACE
class QWheelEvent;
QT_END_NAMESPACEclass MyGraphicsView : public QGraphicsView
{Q_OBJECT
public:explicit MyGraphicsView(QWidget *parent = 0);~MyGraphicsView();protected:void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;void magnify();void shrink();void scaling(qreal scaleFactor);private:qreal m_scalingOffset;
};#endif // MYGRAPHICSVIEW_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
class QGraphicsScene;
QT_END_NAMESPACEnamespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;QGraphicsScene *m_scene;
};#endif // WIDGET_H

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

mygraphicsview.cpp

#include "mygraphicsview.h"
#include <QWheelEvent>
#include <QPoint>
#include <QDebug>MyGraphicsView::MyGraphicsView(QWidget *parent): QGraphicsView(parent)
{m_scalingOffset=1;
}MyGraphicsView::~MyGraphicsView()
{}void MyGraphicsView::magnify()
{if(m_scalingOffset>1.3)return;m_scalingOffset+=0.1;scaling(m_scalingOffset);
}void MyGraphicsView::shrink()
{if(m_scalingOffset<0.9)return;m_scalingOffset-=0.1;scaling(m_scalingOffset);
}void MyGraphicsView::scaling(qreal scaleFactor)
{qDebug()<<this->sceneRect();scale(scaleFactor,scaleFactor);
}void MyGraphicsView::wheelEvent(QWheelEvent *event)
{QPoint sroll=event->angleDelta();sroll.y()>0?magnify():shrink();}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QGraphicsRectItem>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);m_scene=new QGraphicsScene;QGraphicsRectItem *item=new QGraphicsRectItem;item->setPos(0,0);item->setBrush(QBrush(Qt::red));item->setRect(0,0,100,100);m_scene->addItem(item);ui->graphicsView->setSceneRect(-100,-100,100,100);ui->graphicsView->setScene(m_scene);}Widget::~Widget()
{delete ui;
}

Qt工作笔记-视图(QGraphicsView)的放大和缩小(通过滚轮)相关推荐

  1. Qt工作笔记-视图/模型以及过滤代理模型的使用

    程序运行截图如下: 代码如下: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>class QSortFilterP ...

  2. Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包

    原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...

  3. Qt工作笔记-图形视图框架中的分组,以及添加平行拖动图元

    啥意思,感觉本人语文学得菜,不好描述. 直接看程序运行截图: 1.隐藏鼠标: 2.图元分组: 3.视图与场景坐标转换 程序源码如下: mygraphicsitem.h #ifndef MYGRAPHI ...

  4. qt场景中视图QGraphicsView的缩放

    继承QGraphicsView自定义视图,重写wheelevent()事件,在滚轮事件中实现视图的放大和缩小. 放大缩小的主要代码: void GraphicsView::wheelEvent(QWh ...

  5. Qt工作笔记-QMainWindow自定义窗体中利用状态栏进行窗体放缩

    目录 原理 关键代码 原理 在QDialog和QWidget中一般使用重写: void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;void ...

  6. Qt 图片 等比例显示、放大、缩小、平移图像 显示

    功能 初始加载图片,对任意大小图片,显示固定尺寸的缩略图 按住ctrl +滚轮:缩放 按住鼠标拖动图片 双击还原图片大小 实时显示鼠标所指像素的rgb 头文件 #pragma once #includ ...

  7. Qt工作笔记-ListWidget拖动(拖拽)到QGraphicsScene【补坑】【Qt视图框架补坑】

    关于以前的这篇博文,进行补坑 https://blog.csdn.net/qq78442761/article/details/80957186 坑的位置在这,采用上面这篇博文的配法,无法得到图元在场 ...

  8. Qt工作笔记-右键删除视图中的Item【坐标映射】

    程序运行截图如下: 关键: 当处理场景中的图形项时,将坐标或者一个任意的形状从场景映射到图形项.或者从一个图形项映射到另一个图形项.或者从视图映射到场景,这些坐标变换都是很常用的.例如,在QGraph ...

  9. Qt工作笔记-QGraphicsView框架容易忽视的坐标问题-“画布”QgraphicsScene到底放在了哪儿?

    转载地址: https://blog.csdn.net/tianyuan521521/article/details/46290525 前言 最近一直使用QGraphicsView框架在我的一个实际项 ...

最新文章

  1. sql根据某个字段拼接另外字段
  2. POJ1195Mobile phones
  3. Jquery中$(document).ready(function(){ })函数的使用详解
  4. seo全攻略_SaaS 企业推广获客全攻略(2):如何做好企业官网?
  5. .net去除html标签代码
  6. 进程间通信-字符串的传递
  7. 热门话题“看第一学历招人公平吗?”数据告诉你,网友们都是如何想的
  8. Access访问错误集锦:Access关键字
  9. Cogs 647. [Youdao2010] 有道搜索框(Trie树)
  10. 利用模板类型实现累加
  11. 中文字符集编码Unicode,gb2312,cp936,GBK,GB18030
  12. 电工基础知识入门必背的知识
  13. 三次方在python中如何表示_python中计算三次方怎么表示
  14. 微信活码系统程序源码
  15. 万豪酒店Marriott 积分兑换标准房晚必备:全球 Marriott Cat9 等级酒店列表 汇总
  16. 360浏览器代码修改浏览模式
  17. libxml使用实例
  18. 孟母三迁:学习中环境对人的影响特别的重要
  19. JTAG 标准IEEE STD 1149.1-2013学习笔记(三)Test data registers
  20. 【SqlServer系列】表连接

热门文章

  1. 程序员常挂在嘴边的10句话:刚刚还是好的啊!
  2. 15分钟,教你用Python爬网站数据,并用BI可视化分析!
  3. 今天的一下子跳出来了的超级玛丽
  4. 女人,就是不适合做IT!
  5. 控件安全注册方法3选
  6. 拦截Windows消息
  7. 第 4 节:前端面试指南 — JavaScript篇
  8. 个人开发者福利:没有注册公司,如何发布自己的小程序
  9. 第十二节:ES6 Proxy代理 和 去银行存款有什么关系?
  10. java的servlet是干嘛的_Servlet能够做什么?