【qt】视口和窗口坐标
视口和窗口坐标
- 一.视口和窗口坐标的原理
- 二.视口和窗口坐标的好处
- 三.演示好处
- 四.总结
一.视口和窗口坐标的原理
在绘图事件中进行绘图
void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);QRect rect(200,0,200,200);painter.drawRect(rect);//设置视口的范围,相当于一个窗口painter.setViewport(rect);//设置窗口坐标,这是逻辑大小,可以自己任意设计//左上角的坐标为(-50,-50),长为100,宽为100,这是逻辑大小//原本我们的设置的视口范围为长200,宽200painter.setWindow(-50,-50,100,100);QPen pen;pen.setColor(Qt::blue);//换个颜色区分painter.setPen(pen);painter.drawRect(QRect(0,0,50,50));}
运行结果;

原理:

二.视口和窗口坐标的好处
1.我们可以自定义窗口的坐标大小(逻辑大小)
2.视口里面的绘图可以自适应视口大小的变化.
三.演示好处
void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);int minSide=qMin(this->width(),this->height());//取最小的窗口边QRect rect((this->width()-minSide)/2,(this->height()-minSide)/2,minSide,minSide);painter.drawRect(rect);painter.drawEllipse(QPoint(200,200),50,50);//圆心,水平半径,垂直半径}
运行结果:

这个矩形可以随窗口的变化而变化.但是这个圆不可以.
现在我们开始添加视口和窗口.
void Widget::paintEvent(QPaintEvent *event)
{QPainter painter(this);int minSide=qMin(this->width(),this->height());//取最小的窗口边QRect rect((this->width()-minSide)/2,(this->height()-minSide)/2,minSide,minSide);painter.drawRect(rect);painter.drawEllipse(QPoint(200,200),50,50);painter.setViewport(rect);painter.setWindow(-100,-100,200,200);QPen pen;pen.setColor(Qt::red);painter.setPen(pen);int count=10;for(int i=0;i<count;i++){painter.drawEllipse(QPoint(50,0),50,50);painter.rotate(360/count);//坐标旋转}}
运行结果:

自适应:

四.总结
记住setViewport和setWindow就可以了!
马上姚期末考试了!
相关文章:
【qt】视口和窗口坐标
视口和窗口坐标 一.视口和窗口坐标的原理二.视口和窗口坐标的好处三.演示好处四.总结 一.视口和窗口坐标的原理 在绘图事件中进行绘图 void Widget::paintEvent(QPaintEvent *event) {QPainter painter(this);QRect rect(200,0,200,200);painter.drawRect(rect);//设置视口的…...
优化SQL查询的策略和技巧 - AI提供
优化SQL查询以提高处理大型数据集的数据库性能是一个重要课题。 以下是一些关键策略和技巧,可以帮助您提升查询效率: 1、创建合适索引: 针对频繁出现在WHERE、JOIN、ORDER BY和GROUP BY子句中的列创建索引。索引能够显著加速数据检索过程。…...
平安科技智能运维案例
平安科技智能运维案例 在信息技术迅速发展的背景下,平安科技面临着运维规模庞大、内容复杂和交付要求高等挑战。通过探索智能运维,平安科技建立了集中配置管理、完善的运营管理体系和全生命周期运维平台,实施了全链路监控,显著提…...
基于深度学习的向量图预测
基于深度学习的向量图预测 向量图预测(Vector Graphics Prediction)是计算机视觉和图形学中的一个新兴任务,旨在从像素图像(栅格图像)生成相应的向量图像。向量图像由几何图形(如线条、曲线、多边形等&…...
鸿蒙HarmonyOS $r(““)与$rawfile(““)的区别
在鸿蒙(HarmonyOS)开发中,$r(“”) 和 $rawfile(“”) 是两种不同的资源引用方式,它们分别用于引用不同的资源类型。 1、$r(“”) $r 函数通常用于引用字符串、颜色、尺寸、样式等定义在资源文件(如 strings.json, c…...
简单了解java中的Collection集合
集合 1、Collection-了解 1.1、集合概述 集合就是一种能够存储多个数据的容器,常见的容器有集合和数组 那么集合和数组有什么区别嘞? 1、集合长度可变,数组的长度不可变 2、集合只能存储引用数据类型(如果要存储基本数据类型…...
java 实现导出word 自定义word 使用aspose教程包含图片 for 循环 自定义参数等功能
java 实现导出word 主要有一下几个知识点 1,aspose导入 jar包 和 java编写基础代码下载使用 aspose-words jar包导入 aspose jar 包 使用 maven导入java代码编写 2,if判断 是否显示2,显示指定值3,循环显示List 集合列表 使用 fore…...
CSS动画(炫酷表单)
1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa6yORMSqiaEKgpwibBgfcTQZNV0pI3M8t8HQm5XliaicSO42eBiboEUC3jxQOL1bRe0xlsd8bv04xXoKwg/640?wx_fmtgif&fromappmsg&wxfrom13 表单,也需要具有吸引力和实用性。HTML源码酷炫表单不仅能够提供给用户…...
Stream
Stream 也叫Stream流,是Jdk8开始新增的一套API (java.util.stream.*),可以用于操作集合或者数组的数据。 优势: Stream流大量的结合了Lambda的语法风格来编程,提供了一种更加强大,更加简单的方式操作集合或者数组中的…...
鸿蒙轻内核A核源码分析系列五 虚实映射(5)虚实映射解除
虚实映射解除函数LOS_ArchMmuUnmap解除进程空间虚拟地址区间与物理地址区间的映射关系,其中参数包含MMU结构体、解除映射的虚拟地址和解除映射的数量count,数量的单位是内存页数。 ⑴处函数OsGetPte1用于获取指定虚拟地址对应的L1页表项数据。⑵处计算需要解除的无效…...
编程初学者用什么软件电脑:全方位指南及深度解析
编程初学者用什么软件电脑:全方位指南及深度解析 在数字化浪潮席卷而来的今天,编程技能逐渐成为了一项必备的基本素养。对于初学者来说,选择一款合适的编程软件电脑至关重要。本文将从四个方面、五个方面、六个方面和七个方面,深…...
代理IP池功能组件
1.IP池管理器:用于管理IP池,包括IP地址的添加、删除、查询和更新等操作。 2.代理IP获取器:用于从外部资源中获取代理IP,例如从公开代理IP网站上爬取代理IP、从代理服务商订购代理IP等。 3.IP质量检测器:用于检测代理…...
Sqlite3入门和c/c++下使用
1. SQLite3基本介绍 1.1 数据库的数据类型 1.2 基本语法 1. 创建数据表格 create table 表名(字段名 数据类型, 字段名 数据类型); create table student(id int, name varchar(256), address text, QQ char(32)); 2. 插入数据 insert into 表名 valu…...
pyinstaller打包exe多种失败原因解决方法
pyinstaller打包exe多种失败原因解决方法 目录 pyinstaller打包exe多种失败原因解决方法1、pyinstaller安装有问题1.1 安装pyinstaller1.2 采用anconda的环境启动 2、pyqt5与pyside6冲突2.1 打包生成.spec文件2.2 编辑spec文件 3、打包成功后打不开exe,exe闪退3.1 s…...
x64-linux下在vscode使用vcpkg
1.使用vscode远程连接上对应的linux ,或者直接在图形化界面上使用。 2.安装vcpkg 插件,然后打开插件设置。 注意:defalut和host的主机一定和你自己的主机一致,且必须符合vcpkg三元组格式,其中你可以选择工作台的设置&a…...
运营商二要素核验-手机号机主姓名核验接口-运营商二要素核验接口
通过电信运营商验证手机号码与姓名是否一致。广泛用于实名注册、风控审核等场景,如电商、游戏、直播、金融等需要用户实名认证的场景。支持携号转网核验。 更新周期:联通T1 电信T3 移动T3~5 均为工作日 接口地址: https://www.wapi.cn/api_de…...
C++设计模式-生产者消费者模式
运行在VS2022,x86,Debug下。 32. 生产者消费者模式 解耦生产者和消费者之间的关系,即生产者和消费者只依赖缓冲区,而不相互依赖。应用:多线程并发编程,可以解决生产者和消费者之间的同步问题。实现 生产者…...
VSTO Word.net 如何在另外的工程内添加CustomTaskPane
其他工程肯定是不能直接添加CustomTaskPane面板的,但我们可以在ThisAddIn 中先把对应的panel给新建出来再进行隐藏。步骤如下: 1.在另外工程中定义public static CustomTaskPane currMainForm;把需要隐藏的界面赋值给currMainForm; 2.在另外…...
ROS——自定义话题消息和使用方法
定义Person话题 定义Person发布者 /*** 该例程将发布/person_info话题,自定义消息类型: test_topic::Person*/#include <ros/ros.h> #include <test_topic/Person.h> //包含的头文件,ros相关的头文件,及自定义头文件…...
包装对象类型又是啥啊。。。
包装对象类型 目录 包装对象类型 目录包装对象的概念包装对象类型和字面量类型Objectobject 包装对象的概念 JavaScript 的8种类型之中,undefined和null其实是两个特殊值,object属于复合类型,剩下的五种属于原始类型(primiti…...
用51单片机+无源蜂鸣器播放《两只老虎》完整教程(附代码与乐理速成)
用51单片机驱动无源蜂鸣器演奏《两只老虎》全流程解析 第一次听到单片机播放音乐时,那种"机器唱歌"的奇妙感至今难忘。作为电子爱好者入门必备的趣味项目,用蜂鸣器演奏音乐不仅能巩固定时器、中断等核心知识,更能将枯燥的理论转化为…...
【LAMMPS实战】从文献到模拟:精准定位与获取ReaxFF反应力场参数文件
1. 初识ReaxFF反应力场:为什么我们需要它? 第一次接触分子动力学模拟时,我完全被各种力场搞晕了。直到遇到需要模拟化学反应的情况,才发现普通的力场根本不够用。这时候ReaxFF反应力场就像救命稻草一样出现了。简单来说࿰…...
告别传统架构!源网荷储四侧时序数据库选型与落地全解析
新型电力系统应该用什么数据库?源网荷储四侧的时序数据库选型与落地实战 “双碳” 目标的推进正在深刻重构电力系统的运行逻辑。新能源装机占比持续攀升,储能、虚拟电厂、需求响应等新业态快速涌现,源、网、荷、储各侧的角色与互动方式正在被…...
HunyuanVideo-Foley实战案例:为纪录片自动匹配环境音效的完整工作流
HunyuanVideo-Foley实战案例:为纪录片自动匹配环境音效的完整工作流 1. 项目背景与需求 在纪录片制作过程中,环境音效的采集和匹配往往需要耗费大量时间和人力成本。传统方式需要音效师实地录制或从音效库中手动挑选,整个过程耗时且难以保证…...
从零开始:如何用Python训练一个AI模型(超详细教程)
引言 人工智能(AI)——一个熟悉又神秘的词汇。我们常听说它可以生成诗歌、编写代码、创作艺术,甚至回答各种问题。然而,当你想亲手实现一个“AI 模型”时,却可能感到无从下手。这篇教程正是为你准备的,将带…...
YOLOv8目标检测新玩法:用VMamba替换C2f模块,我在DDSM医疗数据集上mAP涨到了0.724
YOLOv8与VMamba融合:医疗影像目标检测的突破实践 在医疗影像分析领域,目标检测技术正经历着从传统卷积神经网络到新型架构的转变。最近,我们将YOLOv8模型中的C2f模块替换为VMamba模块,在DDSM乳腺X光数据集上取得了mAP 0.724的显著…...
别死记硬背了!用Python的NumPy库,5分钟搞定线性代数里的矩阵运算(附代码)
用Python的NumPy库轻松玩转线性代数:矩阵运算实战指南 线性代数作为现代科学与工程的基石,在机器学习、计算机图形学、量化金融等领域无处不在。但传统教材中抽象的数学符号和繁琐的手工计算,往往让学习者望而生畏。今天,我们将用…...
SmartBMS:革新性开源智能电池管理系统技术解析
SmartBMS:革新性开源智能电池管理系统技术解析 【免费下载链接】SmartBMS Open source Smart Battery Management System 项目地址: https://gitcode.com/gh_mirrors/smar/SmartBMS 破解锂电池管理行业痛点:从安全隐患到性能瓶颈 在新能源技术飞…...
WechatFerry实战指南:5步构建高效微信机器人自动化系统
WechatFerry实战指南:5步构建高效微信机器人自动化系统 【免费下载链接】wechatferry 基于 WechatFerry 的微信机器人底层框架 项目地址: https://gitcode.com/gh_mirrors/wec/wechatferry WechatFerry是一个基于Node.js生态的微信机器人底层框架,…...
中国象棋AlphaZero实战指南:从零开始构建超人类棋力AI
中国象棋AlphaZero实战指南:从零开始构建超人类棋力AI 【免费下载链接】ChineseChess-AlphaZero Implement AlphaZero/AlphaGo Zero methods on Chinese chess. 项目地址: https://gitcode.com/gh_mirrors/ch/ChineseChess-AlphaZero 想要打造一个能击败业余…...
