QGraphicsView 坐标系统详解

QT:Graphics View的坐标系介绍 在 Qt 的 Graphics View 框架中,存在三种不同的坐标系,分别是 物品坐标系(Item Coordinates)、场景坐标系(Scene Coordinates) 和 视图坐标系(View Coordinates)。这三种坐标系在图形的绘制、定位和交互中起着关键作用, 阅读详情

QGraphicsView的坐标系统是Qt图形视图框架中的一个重要概念,它涉及到视口坐标、场景坐标和项坐标这三种不同的坐标系统。以下是这些坐标系统的详细解释:

视口坐标(Viewport Coordinates)

视口坐标是指QGraphicsView窗口的坐标系统,其原点位于视口的左上角,x轴向右为正,y轴向下为正。视口坐标与屏幕像素直接对应,因此在没有变换的情况下,视口中的一个单位等于屏幕上的一个像素。

场景坐标(Scene Coordinates)

场景坐标是QGraphicsScene的坐标系统,其原点通常是场景的中心,但也可以通过setSceneRect函数来设置场景的原点和范围。场景坐标是相对于整个场景的,不受视口变换的影响。

项坐标(Item Coordinates)

项坐标是每个QGraphicsItem的本地坐标系统,通常以项的中心为原点(对于中心对称的项),或者以左上角为原点(对于非中心对称的项,如对话框类)。项坐标是局部的,只与该项相关,不随场景坐标或视口坐标的变化而变化。

坐标转换函数

QGraphicsView提供了几个函数来在这三种坐标系统之间进行转换:

  • mapToScene():将视口坐标转换为场景坐标。
  • mapFromScene():将场景坐标转换为视口坐标。
  • mapToScene()和mapFromScene()也有对应的版本用于QGraphicsItem,可以将项坐标转换为场景坐标,或者将场景坐标转换为项坐标。

变换矩阵

QGraphicsView还允许通过变换矩阵来变换场景的坐标系统,这样可以实现场景的缩放、旋转等效果。可以使用QGraphicsView::matrix()函数来获取或设置变换矩阵。

理解这些坐标系统及其转换机制对于在Qt中有效地使用图形视图框架至关重要。通过这些坐标系统和转换函数,开发者可以在不同的坐标系统之间灵活地进行转换,以实现复杂的图形界面和交互功能。

Qt中QGraphicsView三种坐标系统详解 在QGraphicsView中支持三种不同的坐标系统---视口坐标、场景坐标、项坐标 场景坐标就是系统窗口(QGraphicsScene)的坐标,它(0,0)作为它的左上角坐标. 视口坐标相当于场景坐标的数学变换,如当一个窗口坐标为(0,0)至(100,100)那么这个窗口就是实实在在的由100*100个像素组成,此时把坐标变换为(-50,50)(即场景坐标(0,0))至(50,-50)(即场 阅读详情

相关推荐

QGraphicsView 全详解

视口类型的视口可以是任何类型的QWidget,包括QGLWidget,这使得可以在视口中使用OpenGL进行渲染。视口事件:可以通过重写的函数来处理视口级别的事件,例如触摸事件和多点触控事件。类提供了许多常用的函数、信号和槽,用于管理和操作图形视图。

github_37290846的博客 6447

qt graphics view 坐标系

qt graphics view 坐标系 graphics view 有3个有效的坐标系 图形项坐标(graphics item) 场景坐标(graphics scene) 视图坐标(graphics view)

abc 9751

QGraphicsView图形视图框架使用(一)坐标变换

在设计静态用户交互界面的时候常见的QWidget控件已经够用了。但是如果用户想同时使用多个自绘控件并与其进行交互,常见的静态控件实现起来就比较困难了。比如在一些平面的2D游戏里面,使用者需要同时在界面里面对多个对象进行操作,显然静态控件系统是无法实现的。针对这种场景,QT提供了图形视图框架(Graphics View)来进行处理,这里就简单的介绍一下图形视图框架的用法......

yang1fei2的博客 6327

Qt高级开发视频教程

#课程服务在线答疑:本课程设有专门的讨论留言区,学习中遇到任何问题,直接给老师留言即可,老师都会及时进行回复。远程协助:如果遇到复杂问题,老师还可进行远程协助,这个一般可不是一两百元的课程就能享受到的。源码分享:为了让大家更好的进行项目实战,老师还将课程中涉及到的所有源码分享给学员,按照视频中的提示进行下载即可。 在优快云分享C++ Qt开发知识已经有6年了,感谢众多博友对我的支持,了解到很多人对Qt的使用还是有些困扰,例如Qt环境搭建,Qt布局的使用,如何使用Qt编写复杂的界面,如何自定义非标控件,Qt如何和Web交互,Qt和后台接口如何交互等;经过这几年的整理,我决定出这套《Qt高级开发视频教程》,带领大家学习Qt高级开发知识,学习如何使用Qt开发企业级别的项目;通过本课程的学习,大家将会达到企业招聘的中高级要求。 为了照顾零基础学员,本课程第一章会介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。即使没有Qt开发的学习经验,也能跟着课程顺利学习。课程核心知识点地图如下:课程每章核心知识点介绍如下:第一章:介绍Qt环境搭建、QtCreator / VS2019的基本使用方法,Qt整体架构、Qt信号机制,Qt内存管理等知识。第二章:了解到很多学员对于Qt界面布局很不熟悉,将会详细介绍Qt设计器布局,以及如何C++代码手写布局,从常见的企业级项目入手,带领大家学会各种布局的实现,例如WPS、腾讯会议、优酷、迅雷等界面的实现;界面布局会了,这是企业项目开发的第一步,还有更重要的无边框窗口,如何设计一个合理的无边框窗口很重要,第三/四章:详细介绍如何实现一个无边框窗口,如何自定义标题栏,如何实现拖拽拉伸;第四章将会介绍如何自定义非标控件,优化Qt界面。第五章:介绍Qt web混合编程,一个商用项目,必然会涉及到web交互,这也是很多Qt开发者的弱项,这一章讲详细介绍C++ Qt web混合开发。第六章:既然是做企业级项目,必然需要和后台交互,http编程也是必要的,将详细介绍http编程,用户注册,登录,后台接口请求等知识;通过第五、六章的学习,将会是你的Qt开发技术更上一层楼。第七章:介绍Qt并发编程,耗时任务处理,进程调用等知识。第八、九章:讲解 Qt 比较重要的知识,图形视图结构,以及MVD模式;通过这两章的学习,大家会对图形视图有更好的了解。第十章:本章是独立章节,主要介绍Qt中一些特殊技巧,项目编译,dpi适配、多语言等知识。第十一章:是我们的企业级项目实战:实现一个视频会议客户端,本项目可以进行多人视频通话,直播,桌面分享等功能,本项目我会从零开始,进行项目搭建,功能调试,bug fixed, 带领大家做一个企业级项目。 希望通过本课程的学习,大家的C++ Qt开发技术能有质的飞越,能找到自己心仪的工作。 课程中如果讲的不对的地方,请大家指出,我及时修正,我也只是一个普通开发者,也不是所有的技术都会,尽我所能,把我所会的教给大家,让我们一起为Qt的发展,尽一份绵薄之力。  下面是本课程一些项目的截图:1 可以滑动的设置界面        2 所有图形的绘制      3 视频播放器         4 高仿youku界面        5 视频会议        相信通过本课程的学习,大家有能力实现绝大部分客户端项目,从此用C++ Qt再也不会有难写的界面。

uniapp中renderjs实战:手把手教你实现SSE即时通讯(附完整代码)

本文通过一个完整的实战案例,详细讲解了如何在uni-app中使用RenderJS实现SSE即时通讯功能。文章剖析了RenderJS作为Vue视图层强力补充的原理,并提供了包含自动重连、状态管理等健壮性设计的完整代码,帮助开发者突破框架限制,高效集成浏览器原生API。

weixin_29005499的博客 189

Qwen-Image LoRA训练实战:从数据准备到异常修复的全流程解析

本文详细解析了Qwen-Image LoRA训练的全流程,从数据准备到参数优化再到异常修复。通过实战案例展示了如何利用LoRA技术微调Qwen-Image模型,提升中文场景下的图像生成质量,特别针对手脚生成异常等问题提供了有效解决方案。文章还分享了中文提示词优化技巧和高级训练方法,帮助开发者高效训练出高质量的LoRA模型。

lemon的博客 967

QGraphicsScene和QGraphicsView坐标系统

Graphics View中有三个坐标系统,即场景坐标、视图坐标、图形项坐标。 场景坐标 场景坐标等价于QPainter的逻辑坐标,一般以场景中心为原点;视图坐标与设备坐标相同,是物理坐标,默认为左上角为原点;图形项的坐标是局部逻辑坐标,一般以图形项的中心为原点。 一个图形项的位置是其中心点在父坐标中的坐标,对于没有父图形项的图形项,其父对象就是场景,图形项的位置就是在场景中的坐标。如果一个图形项还是其他图形项的父项,那么父项进行坐标转换的时候,子项也做同样的坐标转换。 视图坐标 视图坐标就是窗口界面的物理

wb175208的专栏 7972

曙光服务器RAID配置避坑指南:MegaRAID SAS 9361-8i实战(含Foreign状态处理)

本文详细解析了曙光服务器搭配MegaRAID SAS 9361-8i控制器的RAID配置全流程,包括RAID0和RAID5的创建、Foreign状态处理及性能优化策略。特别针对磁盘迁移中的Foreign状态问题,提供了系统化的解决方案和高级恢复技巧,助力企业级IT运维提升存储配置的稳定性和可靠性。

weixin_29200741的博客 412

一个例子,搞懂QGraphicsView,QGraphicsScene坐标系统以及sceneRect设置

介绍了QGraphicsView-QGraphicsScene的绘制方式,特别是针对SceneRect进行了举例说明

biewenwoaaaa的博客 2911

电机FOC控制实战:STM32 CubeMX配置六路互补PWM与死区优化

本文详细介绍了如何使用STM32 CubeMX配置六路互补PWM与死区优化,实现电机FOC控制。通过实战经验分享,包括时钟配置、定时器设置、死区时间计算及优化技巧,帮助开发者避免常见问题,提升电机控制性能。特别适用于STM32G4系列的无刷电机驱动应用。

weixin_29193259的博客 402

CANoe从入门到精通“保姆级”教程(二)- 堪称全网“最全”系列

CANoe各功能区介绍;

车载控制器AutoSAR软件开发工程师 2万+

QGraphicsView使用详解

一、GraphicsView框架简介 QT4.2开始引入了Graphics View框架用来取代QT3中的Canvas模块,并作出了改进,Graphics View框架实现了模型-视图结构的图形管理,能对大量图元进行管理,支持碰撞检测,坐标变换和图元组等多种方便的功能。 GraphicsView框架结构主要包含三个主要的类QGraphicsScene(场景)、QGraphicsView(视图)、...

bpv_kiki的专栏 4万+

【WLAN】【基础知识】WIFI那些事儿之信道和频谱(涵盖2.4G、5G、6G,全网最全)

- 从事WIFI相关开发或测试工作,经常要和信道、频宽、频率等打交道,本文仅将平时涉及的2.4G、5G、6G的信道、频宽、频率等做一总结。 - 一图胜万言,本文汇总了工作中经常用到的频谱图,保证全网最全!!! - 本博客地址,https://blog.youkuaiyun.com/qxhgd,欢迎各位关注,转发请注明出处。

一介草民,只为生活。 1万+

QT笔记- QGraphicsView类函数centerOn()说明

centerOn(x, y) : 将QGraphicsView窗口中的指定坐标点(x,y)设置为QGraphicsView窗口的中心点。 例如: 如果QGraphicsScene窗口位于QGraphicsView窗口的(0, 0)处,调用centerOn(-100, -100)之后,QGraphicsScene窗口将会向右下方移动(100, 100)。 总结来说就是centerOn(x, y)移动的是QGraphicsView窗口的坐标系统。 ...

qq_43058397的博客 8878

AutoGLM-Phone 实现“豆包 AI 手机”的自动化操作手机的实战方案教程 让普通手机秒变ai手机

是一个基于视觉语言模型(VLM)的 AI 手机智能助理框架。❌ 不依赖固定坐标❌ 不需要提前录制脚本✅ 能“看懂”手机屏幕✅ 能理解自然语言指令✅ 能自动规划操作路径并执行让 AI 像人一样看屏幕、想步骤、点手机。从工程角度看,AutoGLM-Phone 已经具备“AI 手机助理”的完整雏形能看能理解能规划能执行能跨 App所谓的「豆包 AI 手机」,本质上就是这类能力的产品化封装。而现在,这套能力已经可以被普通开发者亲手跑起来、改起来、甚至接入自己的业务场景。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 593

基于JeecgBoot 3.9.0 开源项目的企业管理平台

基于JeecgBoot 3.9.0 开源项目的企业管理平台

宁波阿成的博客 374

QGraphicsView框架容易忽视的坐标问题-“画布”QgraphicsScene到底放在了哪儿?

前言 最近一直使用QGraphicsView框架在我的一个实际项目中,官方文档好多都没说清楚啊,有木有?!文档都翻光了,却还是有好多没明白。  一个令我恼火的bug就是,明明log打出来的每个Item的坐标都是预期的,但为什么最后结果不对呢?  我在视图中添加了一个直线项(QPoint(0,0),QPoint(100,100));  结果却是:    有的同行看到可能会一下指出

imxiangzi的专栏 2472

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

[QT学习笔记]-设置图片匹配当前窗口大小时的问题--坐标系统移动--函数centerOn()

问题描述 最近在设置图片匹配窗口(view控件)大小显示时,发现图片(scene)坐标和窗口(view)坐标不匹配,遂进行了深入调查。 结果代码 QGraphicsScene *pScene = new QGraphicsScene(); pScene->setBackgroundBrush(Qt::lightGray);//设置场景背景色 QPixmap pixmap; pixmap.load("/home/user/pic01.jpg")//加载图片 //将图片按照窗口的高来等比例压缩,并添加到场

文斗士的专栏 1598

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

QPainter和QGraphicsView的区别

QPainter和QGraphcisView的区别理解: 1、 QPainter 2、 QGraphicsView 3、 QPainter和QGraphicsView区别的理解 4、QGraphicsView框架基本原理 QPainter: 1、 QPainter用于“画”出图形,这里我为什么要把画打上引号呢?因为这里可以把QPainter想象成一支笔,用这个工具在纸上画出图像过后,对于整个纸张来说,画出来的东西就是不可移动的。 2、 且用这个工具画出来的图像一般都复杂度不高。 3、因此QPainter工

CCLasdfg的博客 3385

QGraphicsRectIte、QGraphicsScene、QGraphicsView的坐标

QGraphicsRectIte、QGraphicsScene、QGraphicsView的坐标

xie__jin__cheng的博客 658

在QGraphicsView中精确地以鼠标为锚缩放图片

本文介绍了QGraphicsView框架中的坐标关系,实现了在QGraphicsView中精确地以鼠标为锚缩放图片的效果,并给出从视图坐标转换为未经缩放的原始图片像素坐标系坐标。的方法。

yivifu的专栏 1279

QGraphicsScene的左上角坐标和QGraphicsView的左上角坐标通常重合吗

QGraphicsScene的左上角坐标和QGraphicsView的左上角坐标通常重合吗

xie__jin__cheng的博客 413

Qt中的QGraphicsView、QGraphicsScene与QGraphicsItem:图形视图框架介绍

Qt中的QGraphicsView、QGraphicsScene与QGraphicsItem:图形视图框架介绍

m0_66847953的博客 3485

QGraphicsView 应用全解析:从QGraphicsView的框架介绍到应用其完成复杂界面实现

QGraphicsView 应用全解析:从QGraphicsView的框架介绍到应用其完成复杂界面实现

qianniulaoren的博客 2066

QT学习笔记: QGraphicsView的使用

QT学习笔记:常见的 QGraphicsItem 简述 QGraphicsItem 类是 QGraphicsScene 中所有 item 的基类。 它提供了一个轻量级的基础,用于编写自定义 item。其中包括:定义 item 的几何形状、碰撞检测、绘制实现、以及通过其事件处理程序进行 item 的交互,QGraphicsItem 是 Qt之图形视图框架 的一部分。 常见的 QGraphicsIte...

qq_41909516的博客 3878
上一篇: QGraphicsItem 的函数 itemChange 缩放和旋转无信号发出
下一篇: QMouseEvent 详解
低配天才
博客等级 码龄10年 277粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值