Qt Graphics View Framework 图形视图框架

2023-11-10

QT2D绘图我们使用QPainter实现少量绘图是很理想的,但是如果是要绘制大量的2D图形并且需要能够控制管理时就会显得力不从心。

好在QT视图体系提供了QGraphics View Framework的框架。使用这个框架可以将各图形项进行单独或分组的控制管理。

 

它包含三个大类:QGraphicsItem 项类(或者叫做图元类),QGraphicsScene 场景类,和 QGraphicsView 视图类。QGraphicsItem是在场景中的图形项,QGraphicsScene相当于容器包含和管理QGraphicsItem。项类通过QGraphicsScene::addItem(),(QGraphicsScene::add*())被加入到SceneQGraphicsView是个视图窗体部件。我们可以将scene绑定到view。并且一个scene可以被绑定到多个view中。

 

    QGraphicsScene scene;

    myPopulateScene(&scene);

    QGraphicsView view(&scene);

    view.show();

 

QGraphicsScene是一个图形项的集合,它包括三层:背景层background layer, 项层item layer 和前景层foreground layer。可以通过重新实现drawBackground() drawForeground() 来控制背景层和前景层。

 

这个体系使用三种不同的坐标系统——项坐标,场景坐标和视口坐标(Item coordinates, scene coordinates, and view coordinates.)。


 

下面看一个简单的例子具体如何使用:

 

int main(int argc, char *argv[])

{

   QApplication a(argc, argv);

   QGraphicsScene scene;

   QGraphicsView view(&scene);

   view.show();

   // add a rectangle item

   scene.addRect(QRectF(-10, -10, 20, 20));

   // a white semi-transparent foreground

   scene.setBackgroundBrush(Qt::yellow);

   // a grid foreground

   scene.setForegroundBrush(QBrush(Qt::lightGray, Qt::CrossPattern));

   return a.exec();

}


官方Example中有许多例子相关的例子,可以查看学习。




FROM:  http://blog.csdn.net/xuguangsoft/article/details/8578042

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt Graphics View Framework 图形视图框架 的相关文章

  • 快排函数 -- qsort函数(Quick Sort)

    文章目录 1 qsort函数简介 1 1 函数原型 1 2 参数含义 2 比较函数介绍 3 比较函数使用案例 3 1 整型数组 3 2 浮点型数组 3 3 结构体类型 字符串 4 利用冒泡排序模拟实现qsort函数的功能 1 qsort函数
  • 图形验证码文字识别——pytesseract

    图形验证码内容识别 pytesseract 一 目的 二 实现方式 三 环境准备 四 代码实现 五 拓展 一 目的 我们工作中会遇到一些需要把图片中的文字识别出来使用的例子 比如 图形验证码 提取图片中的文章等 如果工作量比较小或者不需要重
  • 你知道数据发散和数据倾斜么?

    该问题已同步到小程序 全栈面试题 问题 在数据开发日常工作当中 数据发散和数据倾斜问题是比较常见的 那么我们该如何判断呢 同时该如何规避这两种问题呢 注意 该问题也经常会被面试官拿来提问面试者 解答 基于以上问题 大佬们给出了如下的回答 数
  • MLAPI你想需要关注的新的Unity网络框架

    在乱翻PackageManager的时候 无意间看到这么一个玩意 Multiplayer HLAPI 熟悉的unity的朋友知道 unity5的时代 unity大力推广过他自己的Unet框架 内置在unity中 现在时过境迁 你不仅找不到U
  • C++语法基础之栈和队列

    栈 头文件 lt stack gt 实例化 stack在内部默认使用std deque存储数据 但是可以指定使用vector或者list存储数据 示例 std stack
  • GB28181学习(四)——网络设备信息查询

    要求 源设备向目标设备发送信息查询命令 目标设备将结果通过查询应答命令返回给源设备 设备信息查询命令包括 设备目录 设备信息 设备状态信息 设备配置 预置位 看守位 巡航轨迹列表 巡航轨迹 PTZ精准状态 存储卡状态等 信息查询的范围 本地
  • self、__doc__、__init__、__name__

    1 self参数用于类定义中 不可省略 独立的函数或方法中不含有self参数 self不是Python的关键字 可替换成别的 在类实例化时 self自动绑定到self实例上 指向类实例对象本身 已完成类对自身属性的调用 gt gt gt c
  • springboot之用户操作日志

    自定义注解 SysLog作用于方法 import java lang annotation Target ElementType METHOD Retention RetentionPolicy RUNTIME Documented pub
  • FreeRTOS系统配置文件详解

    简介 在实际使用FreeRTOS 的时候我们时常需要根据自己需求来配置FreeRTOS 而且不同架构的MCU 在使用的时候配置也不同 FreeRTOS 的系统配置文件为FreeRTOSConfig h 在此配置文件中可以完成FreeRTOS
  • 如何安装Chocolatey

    最近在研究包管理器的工作原理 便想着安一个chocolatey下来 安装程序也方便一些 结果在csdn一找 人差点没给我气死 转载 以讹传讹 胡诌 过时的一大堆 都不咋靠谱 写这篇文章的目的就是让大家知道 Chocolatey到底是怎么安装
  • 摄影:相机的白平衡怎么用?

    转自 https baijiahao baidu com s id 1627541021956100392 wfr spider for pc 白平衡 顾名思义就是保持白色的平衡 拥有还原环境色彩的能力 白平衡作为拍摄过程中的一项重要设置

随机推荐

  • Oracle的package用法测试

    oralce的package由 包头和包体构成 包头声明要做的事情 包体做具体的实现 话不多说直接上代码 create or replace package pkg firste test as procedure p update lab
  • Stable Diffusion与Midjourney比较,哪个更符合普通人需求?

    先来说一下它们的区别 主要有两点 成本和出图速度 第一点 成本 Stable Diffusion是一款开源且免费使用的模型 可以在本地部署 但需要高性能电脑配置支持 虽然跑图速度还不错 但必须配备稳定的网络环境 Midjourney也需要稳
  • 【C写文件】C/C++读写文本文件、二进制文件/文件读写

    目录 一 目的 二 C语言文本文件读写 1 文本文件写入 2 文本文件读取 三 C语言二进制文件读写 1 二进制文件写入 2 二进制文件读取 四 C 文本文件读写 1 文本文件写入 2 文本文件读取 五 C 二进制文件读写 1 二进制文件写
  • nginx动态配置配置

    nginx中的conf文件配置测试 upstream backServer server 127 0 0 1 11111 upsync 192 168 212 134 8500 v1 kv upstreams itmayiedu upsyn
  • Spring 6.X IoC 容器

    目录 一 Spring IoC 容器和 Bean 简介 1 1 容器概述 1 3 使用 一 Spring IoC 容器和 Bean 简介 下面主要介绍 Spring 框架对控制反转 IoC 原理的实现 首先要说明的是 IoC 也称为依赖注入
  • FileOutputStream的基本使用

    package com wondream myframework app basictest io import org apache commons logging Log import org apache commons loggin
  • Flutter插件介绍以及常用插件推荐

    Flutter插件 Flutter使用的Dart语言无法直接调用Android系统提供的Java接口 这时就需要使用插件来实现中转 Flutter官方提供了丰富的原生接口封装 android alarm manager 访问Android系
  • Qt Assistant介绍

    简介 Qt Assistant也就是我们常说的Qt助手 是一款用于呈现在线文档的工具 简介 一分钟学会使用 Qt参考文档 Qt Assistant详解 命令行选项 工具窗口 文档窗口 工具栏 菜单 文件菜单 编辑菜单 查看菜单 前往菜单 书
  • Mac M1 mysql安装指南

    https segmentfault com a 1190000020656076111 https zhuanlan zhihu com p 360858309 看这两篇足够了
  • ES6如何声明一个类?类如何继承?

    在 JavaScript 中 您可以使用关键字 class 来声明一个类 类是一种模板 用于创建对象的构造函数 其中包含了属性和方法 以下是声明一个类的基本语法 class ClassName constructor 构造函数 用于创建对象
  • CSDN湘苗培优,遇见更好的自己

    现在 只要你是IT技术爱好者 想要高起点步入职场 快人一步不是梦 湘苗培优 你不容错过 点击蓝色的 湘苗培优 小编带你深入了解如何实现它
  • 深度特征融合---理解add和concat之多层特征融合

    一 如何理解concat和add的方式融合特征 在各个网络模型中 ResNet FPN等采用的element wise add来融合特征 而DenseNet等则采用concat来融合特征 那add与concat形式有什么不同呢 事实上两者都
  • iOS15适配 UINavigationBar和UITabBar设置无效,变成黑色以及uiscrollview为根试图无法到顶

    今天更新了xcode13 运行项目发现iOS15以上的手机导航栏和状态栏之前设置的颜色等属性都不起作用了 都变成了黑色 滚动的时候才能变成正常的颜色 经确认得用UINavigationBarAppearance和UITabBarAppear
  • tms sparkle实现apk下载安装。

    缘起 存放在pc端的apk 如何下载到手机端并安装 一种是通过IM通讯工具 或是复制到u盘上 或是ftp下载 还有就是通过云盘安装 但是以上方法都不是非常方便 思路 下面介绍一种思路 将apk文件存放在pc端的某一路径下 然后生成html文
  • 个人笔记篇-SpringBoot集成Socket

    前言 在我的另一篇文章中 有简单介绍过Socket的相关概念链接 SpringBoot简单集成WebSocket 初步了解后 本次再进行一个深入通俗的理解 Socket作为一种通信机制 通常也被称为 套接字 它类似于人们之间的 打电话行为
  • golang学习笔记

    目录 golang学习笔记 golang知识点 go打开本地文档方法 fmt 打印占位符特殊作用 slice本质 strings包 Stringer Interface golang学习笔记 go官方学习内容是最好最权威的入门go语言的资料
  • 2021最新Java笔试题及答案,Java面试真题精选

    二 回顾整理阿里面试题 基本就这样了 还有一些零星的问题想不起来了 答案也整理出来了 自我介绍 JVM如何加载一个类的过程 双亲委派模型中有哪些方法 HashMap如何实现的 HashMap和ConcurrentHashMap区别 Conc
  • 【安全开发】python—基于正则表达式的爬虫

    0x00 前置 1 搜索引擎 百度 谷歌 企业内部知识库 2 互联网 公网 无需授权 深网 需要授权 暗网 非正式渠道 无法使用常规手段访问 友情提醒 没事别看 3 规则 爬取互联网公开的信息 但正常情况也需要遵守robots协议 网络爬虫
  • 【华为OD机试 2023 B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • Qt Graphics View Framework 图形视图框架

    QT的2D绘图我们使用QPainter实现少量绘图是很理想的 但是如果是要绘制大量的2D图形并且需要能够控制管理时就会显得力不从心 好在QT视图体系提供了QGraphics View Framework的框架 使用这个框架可以将各图形项进行