当前位置: 首页 > news >正文

【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);//坐标旋转}}

运行结果:
在这里插入图片描述
自适应:
在这里插入图片描述

四.总结

记住setViewportsetWindow就可以了!

马上姚期末考试了!

相关文章:

【qt】视口和窗口坐标

视口和窗口坐标 一.视口和窗口坐标的原理二.视口和窗口坐标的好处三.演示好处四.总结 一.视口和窗口坐标的原理 在绘图事件中进行绘图 void Widget::paintEvent(QPaintEvent *event) {QPainter painter(this);QRect rect(200,0,200,200);painter.drawRect(rect);//设置视口的…...

优化SQL查询的策略和技巧 - AI提供

优化SQL查询以提高处理大型数据集的数据库性能是一个重要课题。 以下是一些关键策略和技巧&#xff0c;可以帮助您提升查询效率&#xff1a; 1、创建合适索引&#xff1a; 针对频繁出现在WHERE、JOIN、ORDER BY和GROUP BY子句中的列创建索引。索引能够显著加速数据检索过程。…...

平安科技智能运维案例

平安科技智能运维案例 在信息技术迅速发展的背景下&#xff0c;平安科技面临着运维规模庞大、内容复杂和交付要求高等挑战。通过探索智能运维&#xff0c;平安科技建立了集中配置管理、完善的运营管理体系和全生命周期运维平台&#xff0c;实施了全链路监控&#xff0c;显著提…...

基于深度学习的向量图预测

基于深度学习的向量图预测 向量图预测&#xff08;Vector Graphics Prediction&#xff09;是计算机视觉和图形学中的一个新兴任务&#xff0c;旨在从像素图像&#xff08;栅格图像&#xff09;生成相应的向量图像。向量图像由几何图形&#xff08;如线条、曲线、多边形等&…...

鸿蒙HarmonyOS $r(““)与$rawfile(““)的区别

在鸿蒙&#xff08;HarmonyOS&#xff09;开发中&#xff0c;$r(“”) 和 $rawfile(“”) 是两种不同的资源引用方式&#xff0c;它们分别用于引用不同的资源类型。 1、$r(“”) $r 函数通常用于引用字符串、颜色、尺寸、样式等定义在资源文件&#xff08;如 strings.json, c…...

简单了解java中的Collection集合

集合 1、Collection-了解 1.1、集合概述 集合就是一种能够存储多个数据的容器&#xff0c;常见的容器有集合和数组 那么集合和数组有什么区别嘞&#xff1f; 1、集合长度可变&#xff0c;数组的长度不可变 2、集合只能存储引用数据类型&#xff08;如果要存储基本数据类型…...

java 实现导出word 自定义word 使用aspose教程包含图片 for 循环 自定义参数等功能

java 实现导出word 主要有一下几个知识点 1&#xff0c;aspose导入 jar包 和 java编写基础代码下载使用 aspose-words jar包导入 aspose jar 包 使用 maven导入java代码编写 2&#xff0c;if判断 是否显示2&#xff0c;显示指定值3&#xff0c;循环显示List 集合列表 使用 fore…...

CSS动画(炫酷表单)

1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa6yORMSqiaEKgpwibBgfcTQZNV0pI3M8t8HQm5XliaicSO42eBiboEUC3jxQOL1bRe0xlsd8bv04xXoKwg/640?wx_fmtgif&fromappmsg&wxfrom13 表单&#xff0c;也需要具有吸引力和实用性。HTML源码酷炫表单不仅能够提供给用户…...

Stream

Stream 也叫Stream流&#xff0c;是Jdk8开始新增的一套API (java.util.stream.*)&#xff0c;可以用于操作集合或者数组的数据。 优势&#xff1a; Stream流大量的结合了Lambda的语法风格来编程&#xff0c;提供了一种更加强大&#xff0c;更加简单的方式操作集合或者数组中的…...

鸿蒙轻内核A核源码分析系列五 虚实映射(5)虚实映射解除

虚实映射解除函数LOS_ArchMmuUnmap解除进程空间虚拟地址区间与物理地址区间的映射关系&#xff0c;其中参数包含MMU结构体、解除映射的虚拟地址和解除映射的数量count,数量的单位是内存页数。 ⑴处函数OsGetPte1用于获取指定虚拟地址对应的L1页表项数据。⑵处计算需要解除的无效…...

编程初学者用什么软件电脑:全方位指南及深度解析

编程初学者用什么软件电脑&#xff1a;全方位指南及深度解析 在数字化浪潮席卷而来的今天&#xff0c;编程技能逐渐成为了一项必备的基本素养。对于初学者来说&#xff0c;选择一款合适的编程软件电脑至关重要。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深…...

代理IP池功能组件

1.IP池管理器&#xff1a;用于管理IP池&#xff0c;包括IP地址的添加、删除、查询和更新等操作。 2.代理IP获取器&#xff1a;用于从外部资源中获取代理IP&#xff0c;例如从公开代理IP网站上爬取代理IP、从代理服务商订购代理IP等。 3.IP质量检测器&#xff1a;用于检测代理…...

Sqlite3入门和c/c++下使用

1. SQLite3基本介绍 1.1 数据库的数据类型 1.2 基本语法 1. 创建数据表格 create table 表名(字段名 数据类型&#xff0c; 字段名 数据类型)&#xff1b; 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&#xff0c;exe闪退3.1 s…...

x64-linux下在vscode使用vcpkg

1.使用vscode远程连接上对应的linux &#xff0c;或者直接在图形化界面上使用。 2.安装vcpkg 插件&#xff0c;然后打开插件设置。 注意&#xff1a;defalut和host的主机一定和你自己的主机一致&#xff0c;且必须符合vcpkg三元组格式&#xff0c;其中你可以选择工作台的设置&a…...

运营商二要素核验-手机号机主姓名核验接口-运营商二要素核验接口

通过电信运营商验证手机号码与姓名是否一致。广泛用于实名注册、风控审核等场景&#xff0c;如电商、游戏、直播、金融等需要用户实名认证的场景。支持携号转网核验。 更新周期&#xff1a;联通T1 电信T3 移动T3~5 均为工作日 接口地址&#xff1a; https://www.wapi.cn/api_de…...

C++设计模式-生产者消费者模式

运行在VS2022&#xff0c;x86&#xff0c;Debug下。 32. 生产者消费者模式 解耦生产者和消费者之间的关系&#xff0c;即生产者和消费者只依赖缓冲区&#xff0c;而不相互依赖。应用&#xff1a;多线程并发编程&#xff0c;可以解决生产者和消费者之间的同步问题。实现 生产者…...

VSTO Word.net 如何在另外的工程内添加CustomTaskPane

其他工程肯定是不能直接添加CustomTaskPane面板的&#xff0c;但我们可以在ThisAddIn 中先把对应的panel给新建出来再进行隐藏。步骤如下&#xff1a; 1.在另外工程中定义public static CustomTaskPane currMainForm;把需要隐藏的界面赋值给currMainForm&#xff1b; 2.在另外…...

ROS——自定义话题消息和使用方法

定义Person话题 定义Person发布者 /*** 该例程将发布/person_info话题&#xff0c;自定义消息类型&#xff1a; test_topic::Person*/#include <ros/ros.h> #include <test_topic/Person.h> //包含的头文件&#xff0c;ros相关的头文件&#xff0c;及自定义头文件…...

包装对象类型又是啥啊。。。

包装对象类型 目录 包装对象类型 目录包装对象的概念包装对象类型和字面量类型Objectobject 包装对象的概念 JavaScript 的8种类型之中&#xff0c;undefined和null其实是两个特殊值&#xff0c;object属于复合类型&#xff0c;剩下的五种属于原始类型&#xff08;primiti…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...