[QT编程系列-10]:C++图形用户界面编程,QT框架快速入门培训 - 4- QT画图与动画

目录

4. QT画图与动画

4.1 QT的绘图系统

4.2 案例目标

4.3 绘制过程

4.4 更换控件的icon

4.5 案例2

4.6 坐标轴


4. QT画图与动画

4.1 QT的绘图系统

QT(也称为Qt Framework)是一种流行的跨平台应用程序开发框架,它提供了丰富的图形用户界面(GUI)功能,包括绘图系统。QT的绘图系统基于其自己的绘图引擎,支持2D和部分3D图形绘制。

QT的绘图系统提供了一组用于创建和操作图形图像类和函数。它支持绘制点、线、多边形和曲线等基本图元,还支持绘制文本、图像和图标等高级图元。

绘图系统还包括平移、缩放、旋转和剪切等图像变换操作。

QT的绘图系统还提供了丰富的绘图样式和效果。可以使用颜色、渐变、透明度和阴影等属性来装饰图形图像。此外,还可以通过设置笔刷和画笔的样式、线型和宽度等属性来自定义绘制外观。

在QT中,可以使用QWidget、QGraphicsView和QPainter等类来进行绘图操作。

QWidget是Qt的基本组件,提供了基本的绘图功能。

QGraphicsView提供了高级的绘图功能,例如支持图形项的布局、事件处理和交互操作。

QPainter是一个绘画的工具类,提供了各种绘制函数和属性设置函数。

通过QT的绘图系统,开发者可以轻松创建各种各样的图形用户界面和绘图应用程序,如数据可视化工具、绘图软件、图像编辑器等。无论是在桌面平台还是移动平台,QT的绘图系统都具有强大的功能和良好的跨平台兼容性。

在Qt中,有几个主要的绘图工件,用于创建和操作图形图像。以下是其中一些重要的绘图工件:

  1. QWidget:QWidget是Qt的基本绘图工件,它作为界面的基本组件,提供了基本的绘图功。可以在QWidget上使用绘图事件函数(如paintEvent)来实现自定义的绘图操作。

  2. QPainter:QPainter是一个强大的绘画工具类,用于绘制几何图形、文本、图像和图标等。通过QPainter的各种绘制函数(如drawLine、drawRect、drawText等)可以在绘图设备(如QWidget、QImage等)上进行绘制操作。

  3. QPaintDevice:QPaintDevice是一个绘图设备类,表示绘图的目标。QWidget、QImage、QPixmap等都是从QPaintDevice派生而来的绘图设备。

  4. QPen:QPen是绘图的画笔,用于设置绘图的线型、颜色、宽度等属性。可以使用QPainter的setPen函数来设置绘图所使用的画笔。

  5. QBrush:QBrush是绘图的笔刷,用于设置绘图的填充样式和颜色。可以使用QPainter的setBrush函数来设置绘图所使用的笔刷。

  6. QPolygon/QPolygonF:QPolygon/QPolygonF是多边形的类,用于定义和操作多边形的顶点。

  7. QGradient:QGradient是渐变对象的基类,用于创建线性渐变、放射性渐变和锥形渐变等效果。

  8. QPainterPath:QPainterPath是路径的类,用于定义和操作复杂图形的轮廓。可以将多个线条、曲线和多边形等连接在一起来创建自定义形状。

通过使用这些绘图工件,结合Qt提供的丰富的绘图函数和属性设置函数,可以灵活地创建和操作各种图形图像,并实现自定义的绘图效果。

4.2 案例目标

 4.3 绘制过程

 在Qt中,paintEvent是一个重要的绘图事件函数,用于在QWidget及其派生类中进行自定义绘图操作。

当需要在QWidget上进行绘图时,Qt会自动触发paintEvent事件,并将一个QPaintEvent对象作为参数传递给处理函数。在paintEvent中,可以通过QPainter对象进行绘图操作。

以下是一个简单的示例,展示了在自定义的QWidget子类中实现paintEvent的基本用法:

class MyWidget : public QWidget
{
public:MyWidget(QWidget* parent = nullptr) : QWidget(parent) { }protected:void paintEvent(QPaintEvent* event) override{QPainter painter(this);// 进行绘图操作// ...// 示例:绘制一个红色的矩形painter.setBrush(Qt::red);painter.drawRect(10, 10, 100, 100);}
};

在上述代码中,自定义的MyWidget类继承自QWidget,并重写了paintEvent函数。在paintEvent函数中,创建一个QPainter对象,传入QWidget的指针(即this)作为绘图设备。然后,可以使用QPainter的各种绘制函数来实现绘图操作。在示例中,设置了红色的画刷(setBrush),并使用drawRect函数绘制一个矩形。

使用类似的方式,可以在paintEvent中进行绘制点、线、多边形、文本、图像等各种绘图操作。此外,还可以通过事件处理函数或其他方式来触发update函数,从而触发paintEvent的执行,实现动态绘图效果。

请注意,在进行自定义绘图时,需要注意绘图的性能和效果。避免在paintEvent中进行过于复杂或耗时的计算,以免影响应用程序的响应性能。

 4.4 更换控件的icon

 4.5 案例2

 

 

 

 4.6 坐标轴

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集群基础1——集群概念、LVS负载均衡

文章目录 一、基本了解二、LVS负载均衡2.1 基本了解2.2 工作模式2.2.1 NAT模式2.2.2 DR模式2.2.3 LVS-TUN模式2.2.4 LVS-FULLNAT模式 三、调度器算法四、ipvsadm命令 一、基本了解 什么是集群? 多台服务器做同一件事情。 集群扩展方式: scale up&#xf…

2023年7月北京/广州/深圳制造业产品经理NPDP认证招生

产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…

C# 移除链表元素

203 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2&#x…

PostgreSQL

一、基本使用 1. 交互式终端psql 连接至数据库&#xff1a; psql -h <ip地址> -p <端口号>\d&#xff1a;查看所有表\d 表名&#xff1a;查看表结构\timing&#xff1a;显示SQL语句执行时间 2. 表空间的使用 如果需要把不同的表放在不同的存储介质或不同的文件…

2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同?

2023-07-14&#xff1a;讲一讲Kafka与RocketMQ中存储设计的异同&#xff1f; 答案2023-07-14&#xff1a; 在Kafka中&#xff0c;文件的布局采用了Topic/Partition的方式&#xff0c;每个分区对应一个物理文件夹&#xff0c;且在分区文件级别上实现了顺序写入。然而&#xff0…

WIN无法访问linux开启的SAMBA服务器

WIN无法访问linux开启的SAMBA服务器 打开搜索框“管理Windows凭据” 点击编辑

TCP/IP网络编程 第十七章:优于select的epoll

epoll理解及应用 select复用方法其实由来已久&#xff0c;因此&#xff0c;利用该技术后&#xff0c;无论如何优化程序性能也无法同时接入上百个客户端&#xff08;当然&#xff0c;硬件性能不同&#xff0c;差别也很大)。这种select方式并不适合以Web服务器端开发为主流的现代…

Camtasia Studio 2023保存为mp4格式的视频的详细教程,Camtasia的视频导出功能

很多用户刚接触Camtasia Studio&#xff0c;不熟悉如何保存mp4格式的视频。在今天的文章中小编为大家带来了Camtasia Studio 2023保存为mp4格式的视频的详细教程介绍。 1、 打开Camtasia Studio。 Camtasia Studio- 2023 win&#xff1a; https://souurl.cn/1JFEsn Camtasia …

06_本地方法接口+07_本地方法栈

一、本地方法&#xff1f; 本地方法就是Java调用非Java代码的接口。 本地方法的作用是融合不同的编程语言为Java所用&#xff0c;它的初衷是融合 C、C程序 二、为什么要使用Native Method? 三、本地方法栈 Java虚拟机栈用于管理Java方法的调用&#xff0c;而本地方法栈用于…

【Linux】Docker 基本管理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Docker 基本管理 Docker 概述Docker 核心概念Docker 安装部署Docker 镜像操作Docker 容器操作 Docker 概述 Docker是一个开源的应用容器引擎&#xff0c;基于go语言开发并遵…

python爬虫中通用的两种乱码解决方式(自用)

问题&#xff1a;在python爬虫爬取的时候&#xff0c;我们有时会遇到诸如以下的乱码&#xff1a; &#xfffd;װŮ&#xfffd;&#xfffd; &#xfffd;&#xfffd;Ů ˮ СϪ Ψ&#xfffd;&#xfffd;¡4k解决方法一&#xff1a;用utf-8来转码&#xff0c;具…

spring复习:(40)全注解的spring AOP

零、需要的依赖&#xff1a; <dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.9</version></dependency><dependency><groupId>org.aspectj</groupId><arti…

AHB协议理解

从小父亲就教育我&#xff0c;做一个对社会有用的人&#xff01; 目录 Chapter1 AHB Block Diagram Ginput signal lnput signals Output Signal Chapter3 Transfers AHB接口Overview Chapter6 Data Buses HWDATA HRDATA Chapter1 Introduction AHB: Advanced High-performanc…

QT写文件操作

在Qt中&#xff0c;可以使用QTextStream类来按照指定的格式将数据写入文件。以下是按照格式写入文件的一个示例&#xff1a; #include <QFile> #include <QTextStream>int main() {QString fileName "output.txt";QFile file(fileName);if (!file.open…

奇迹MU架设教程:SQL Server 2008数据库的安装教程

不管是搭建什么游戏&#xff0c;都是有数据库的&#xff0c;奇迹MU用的是SQL 数据库&#xff0c;根据服务器系统选择SQL server版本&#xff0c;我比较喜欢用Windows server 2008R2系统&#xff0c;所以我安装的是SQL server 2008。作为架设奇迹很重要的数据库程序&#xff0c;…

【Ubuntu】安装docker-compose

要在Ubuntu上安装Docker Compose&#xff0c;可以按照以下步骤进行操作&#xff1a; 下载 Docker Compose 二进制文件&#xff1a; sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/loc…

Modbus-TCP数据问询解析-小记

调试代码 a00 23 00 00 00 05 01 03 02 00 64 aa.replace(" ","") alen(a) print(a)b3d650000000b011000570002044203a800 print(len(b))c01 10 00 57 00 02 04 42 03 68 00 cc.replace(" ","") clen(c) print(c)运行结果&#xff1…

Docker操作

Docker操作 Docker基本操作 # 删除 docker 容器 docker rm 关键字&#xff08;名字、容器ID&#xff09; # 删除docker所有容器 docker ps -a -q | xargs docker rm docker rm -f $(docker ps -qa) # 删除 docker镜像 docker rmi 关键字&#xff08;名字、容器ID&#xff…

内核态、用户态概念

一、MTU MTU概念 MTU&#xff08;Maximum Transmission Unit&#xff0c;最大传输单元&#xff09;是指在网络中传输的数据包的最大长度限制&#xff0c;它是一个重要的网络参数&#xff0c;影响着网络的可靠性、稳定性和性能。在TCP/IP协议栈中&#xff0c;MTU涉及到内核态和…

Pthreads程序实现任务队列

主线程启动用户指定数量的线程&#xff0c;这些线程进入条件等待状态。 主线程生成一些任务&#xff08;一定计算量&#xff09;&#xff0c;每生成一个新的任务&#xff0c;就用条件变量唤醒一个线程&#xff0c;当这个唤醒线程执行完任务时&#xff0c;回到条件等待状态。 当…