是一种基于图形项的(Graphic Item)模型/视图模式。

由场景、视图、图形项组成。

1.场景:QGraphicScence类,

场景不可见,是管理图像项的容器。

场景坐标:等价于Qpainter的逻辑坐标,一般以场景的中心为原点。

主要函数

1.QGraphicsItemGroup *createItemGroup(const QList<QGraphicsItem *> &items); //创建图形项组

2.void destroyItemGroup(QGraphicsItemGroup *group);

3.QGraphicsItem *focusItem() const;获取当前焦点的图形项

4.void addItem(QGraphicsItem *item); //添加图形项

5.void removeItem(QGraphicsItem *item); //删除图形项

6.QGraphicsLineItem *addLine(const QLineF &line, const QPen &pen = QPen());//添加直线,其他的图像项类似

7.QGraphicsItem *itemAt(const QPointF &pos, const QTransform &deviceTransform) const;//获取某个位置的顶层图形项

8. QList<QGraphicsItem *> items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const;

9.QList<QGraphicsItem *> selectedItems() const;//选中的图形项列表

10.void clearSelection();清除选中列表

2.视图:QgraphicView类,其基类为QWideget,所以很多操作函数都有

用于显示场景的内容,当视图比场景小时,提供卷滚条移动。

用来接收键盘和鼠标输入信号。

视图坐标:和设备坐标相同,是物理坐标。缺省以左上角为原点((0,0)。单位是像素,只跟widget或视口有关,与场景无关。

坐标映射:

1.将视图坐标转化为场景坐标: QGraphicScence 类的  QPointF mapToScene(const QPoint &point) const;

2.将场景坐标转化为视图坐标:QGraphicScence 类的   QPoint mapFromScene(const QPointF &point) const;

可以进行平移、旋转、缩放等变换。

void rotate(qreal angle);
    void scale(qreal sx, qreal sy);
    void shear(qreal sh, qreal sv);
    void translate(qreal dx, qreal dy);

主要函数:

1.void setScene(QGraphicsScene *scene);  //设置关联显示的场景

2.inline void setSceneRect(qreal x, qreal y, qreal w, qreal h); //设置关联的场景在视图的矩形区域

3.QGraphicsItem *itemAt(const QPoint &pos) const; //获取视图坐标的某一位置的图形项,  (直接通过视图找到图形项,应该要在场景中设置好)

4.QList<QGraphicsItem *> items(const QPoint &pos) const;//

5.void setBackgroundBrush(const QBrush &brush);

6.QTransform transform() const;

3.图形项:QGraphicsItem类。

图像项坐标:局部的逻辑坐标,一般以图件的中心为原点。其中心为(0,0)。

一个图形项的位置是其中心点在父坐标系统的坐标,对于没有父图形项的图形项,其父对象就是场景,

图形项的位置就是在场景中的坐标。

每个图形项在场景都有一个坐标,有函数QGraphicsItem::scenePos。

QGraphicsItem为基类,以下为常见的子类

QGraphicsLineItem:提供了一个直线项
QGraphicsPixmapItem:提供了一个图像项

QAbstractGraphicsShapeItem:

QGraphicsSimpleTextItem:提供了一个简单的文本标签项
QGraphicsRectItem:提供了一个矩形项
QGraphicsEllipseItem:提供了一个椭圆项
QGraphicsPathItem:提供了一个路径项
QGraphicsPolygonItem:提供了一个多边形项

QGraphicsObject:

QGraphicsTextItem:提供了一个格式化的文本项

QGraphicsItemGroup :组合

主要函数:

1、void setFlags(GraphicsItemFlags flags); //设置图形项的操作属性,可选择,可移动,可焦点。 ItemIsMovable = 0x1,
        ItemIsSelectable = 0x2, ItemIsFocusable = 0x4,

2.QPointF pos() const;

3.void setPos(const QPointF &pos);

4.qreal zValue() const;

5.void setZValue(qreal z);

6.QPointF mapFromScene(const QPointF &point) const;

7.QPointF mapToScene(const QPointF &point) const;

8.void setData(int key, const QVariant &value);

9.QVariant data(int key) const;

10.void setRotation(qreal angle);

11.void setScale(qreal scale);

qt Graphic View 学习相关推荐

  1. Qt Model/View 学习(4) - 实现自己的QAbstractTableModel类(支持显示与修改)

    目录 0. 前言 1. Data设计 2. Model类设计 2.1 数据显示与对齐.字体修改 2.2 数据修改 3. 小结 0. 前言 可算到了这一篇了! 上一篇文章中把Qt::ItemDataRo ...

  2. Qt学习笔记-Qt Graphic View Framework

    逻辑: 1.创建一场景 -> QGraphicsScene 2.创建一个视图 -> QGraphicsView 3.往场景添加Item -> QGraphicsSimpleTextI ...

  3. Qt Model/View 学习笔记 (四)

     创建新的Models 介绍 model/view组件之间功能的分离,允许创建model利用现成的views.这也可以使用标准的功能 图形用户接口组件像QListView,QTableView和Q ...

  4. Qt 小例子学习26 - 画网格

    Qt 小例子学习26 - 画网格 GraphicsScene.h #ifndef GRAPHICSSCENE_H #define GRAPHICSSCENE_H#include <QGraphi ...

  5. Qt 小例子学习8 - 选择器

    Qt 小例子学习7 - 选择器 dialog.cpp #include "dialog.h" #include "ui_dialog.h"#include &l ...

  6. Qt Model/View(MVD)模型分析

           最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道M ...

  7. QT Model/View 编程:MVC模型视图编程:实例实现(二)

    目录 样例001:现有模型中使用视图Using views with an existing model 样例002:使用模型索引 样例003:使用模型 样例004:使用模型的多个视图 样例005:委 ...

  8. android自定义View学习(一)----创建一个视图类

    创建一个视图类 精心设计的自定义视图与其他精心设计的类非常相似.它使用易于使用的界面封装了一组特定的功能,它可以高效地使用CPU和内存,等等.不过,作为一个设计良好的班级,自定义视图应该: 符合And ...

  9. (一) Qt Model/View 的简单说明

    目录: (一) Qt Model/View 的简单说明 .预定义模型 (二)使用预定义模型 QstringListModel例子 (三)使用预定义模型QDirModel的例子 (四)Qt实现自定义模型 ...

  10. 自定义View学习之仿QQ运动步数进度效果

    自定义View学习的小记录之第一篇 自定义View学习之QQ计步器 如何实现 1.分析想要得到什么效果 2.确定自定义属性,编写attrs.xml 3.在布局中使用 4.在自定义View中获取自定义属 ...

最新文章

  1. Swift直接解析YApi接口为模型
  2. 解决IntelliJ无法导入maven包的问题
  3. 训练、标注成本节省90%!华为云自动化AI开发平台ModelArts 3.0发布,从训练数据到模型落地一站式打通...
  4. 一个架构师谈什么是架构以及怎么成为一个架构师--转载
  5. pbr 多出口_PBR+多出口NAT+IP SLA
  6. php上传预览源码,php批量上传五[带预览]-PHP源码
  7. Qt实践|HTTP知识点-使用百度AI语音识别服务
  8. 建筑建模学习笔记2——3DMax房屋框架建模
  9. python输入三次密码程序_请教各位大神,为啥以下代码输入修改密码后连输错三次还是能输入...
  10. java布尔类型比较器_浅谈Java中几种常见的比较器的实现方法
  11. 和ufs_宏旺半导体告诉你手机eMMC和UFS到底是什么意思?有什么区别?
  12. 流媒体服务器Wowza Streaming Engine 4安装升级教程
  13. php 公众号 群发,php实现微信公众号无限群发
  14. 发送邮件被对方服务器退回_如何更好地给老外发邮件,可以了解下
  15. h5新语义化标签(重要)
  16. Android 内存卡 / Micro SD 卡 / TF 卡 / 存储卡 剩余容量 / 剩余内存 / 可用空间、总容量的 2 种获取方式
  17. 痛心!中兴通讯子公司研发工程师跳楼坠亡...
  18. 数据挖掘之关联规则挖掘的一些定义
  19. mysql导入sql文件、数据库时报错ERROR: ASCII '\0' appeared in the statement
  20. [经验分享] 分享一波超级良心、好用的趣味网站!

热门文章

  1. 算法(四)、时间复杂度、排序、查找
  2. bzoj 4556 字符串
  3. 【备份】golang开发环境搭建
  4. matlab 函数整理(资料备份儿)
  5. Android的Theme主题切换
  6. iview 级联选择组件_iView Cascader级联选择器
  7. python下载问题_初学者下载使用Python遇到的问题看它就行了
  8. swoft使用redis
  9. cisco虚拟3a服务器,思科Cisco基于服务器的AAA实验详解
  10. ECharts半圆环形图