【QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)】

news2024/11/25 20:27:57

【QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)】

  • 1、说明
  • 2、实验环境
  • 3、参照连接
  • 4、自己的学习与理解
  • 5、学习与实践代码
    • (1)移动图片测试实验
      • (1)继续之前的工程
      • (2)引入资源文件
      • (2)具体放入,这里不过多说明,网上有很多视频讲解,如何引用qt资源
      • (3)调试代码
      • (4)运行效果
    • (2)绘图设备测试实验
      • (1)调试QPixmap,生成图片
      • (2)调试QImage,生成图片与修改图片
      • (3)调试QPicture,生成图片
  • 6 、 QT代码连接
  • 7、细节点与自己想法
  • 8、总结

1、说明

这一段时间一直都在学习使用QT,最近需要学习有关绘图相关知识,所以做了这个学习笔记,用记录的方式让自己记得更牢固,并且练习这些基础的代码,其实也是打地基,虽然说本实验很简单,但还是非常值得练习下的。
本篇微博不是解决特定问题,仅仅是学习的笔记。

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样。
系统环境:window环境
QT软件版本:qt 5.14.2

3、参照连接

跟着学习的视频链接:最新QT从入门到实战完整版|传智教育-10节和11节绘图

4、自己的学习与理解

  1. 用QT我们可以在窗口中,插入一个图片,并且实现控制。
  2. qt绘图至少有三个设备,我们本次练习也是这三个,各有各的特点,直接看以下三个翻译过来的表述。
  3. QPixmap,QImage和QPicture各有特点,根据视频老师讲述,QImage要比QPixmap强些,因为QImage可以操作像素点
  4. QPainter说是绘图设备,更像一个记录指令仪器,可以生成任意文件后缀,然后再解出来,复原,有点像加密解密过程。
  5. 三个设备都可以向外画图片,就是说,不画在窗口上,而是生成图片,然后放在文件夹里。

以下是在帮助文档截取的图,英文原版,有关QPixmap简绍,翻译过来是:
QPixmap类是一种屏幕外图像表示,可以用作绘制设备。
在这里插入图片描述
以下是在帮助文档截取的图,英文原版,有关QImage简绍,翻译过来是:
QImage类提供了一种与硬件无关的图像表示,允许直接访问像素数据,并可以用作绘制设备
在这里插入图片描述
以下是在帮助文档截取的图,英文原版,有关QPicture简绍,翻译过来是:
QPicture类是一个记录和回放QPainter命令的绘制设备。
在这里插入图片描述

5、学习与实践代码

(1)移动图片测试实验

看完视频才知道,授课老师将10节和11节分成了两个工程,10节是一个,11节是一个,那么咱们也分成两个。

(1)继续之前的工程

10节主要是做图片移动实验,通过一个按键,每次移动一下图片,如果出了边境,就回来,当然我没有找到原图片,所以随便找个图片。
因为是继承前一篇实验,拉下来后,运行应该是这样的,如下图。
继承实验连接:【QT 5 学习笔记-学习绘图相关+画线图形等+绘图事件+基础学习(1)】
在这里插入图片描述

(2)引入资源文件

我们需要外部引入一个图片,没有图片可以去我的工程里找,操作步骤如下。
(1)引入新文件
在这里插入图片描述在这里插入图片描述

(2)命名新文件名
在这里插入图片描述

(2)具体放入,这里不过多说明,网上有很多视频讲解,如何引用qt资源

如下图,是放入图片后,文件目录如下。
在这里插入图片描述

(3)调试代码

(1)声明一个变量,记录移动距离数值。
在这里插入图片描述

(2)加入按键,启用lambda表达式connect连接
拖入按键
在这里插入图片描述
加入连接
在这里插入图片描述

(3)注释或删除上节课代码,加入移动功能实现的代码
在这里插入图片描述

(4)运行效果

在这里插入图片描述

(2)绘图设备测试实验

这里是另起一个实验工厂,具体就不一步步演示创建过程了,有需要直接看代码来的更快。

(1)调试QPixmap,生成图片

(1)包含头文件
在这里插入图片描述

(2)声明画家与写入文件夹

    //----------------------------------------//
    //(1)pixmap 绘图设备 专门为平台做了显示的优化。
    QPixmap pix(300,300);

    //填充颜色
    pix.fill(Qt::white);
    //声明画家
    QPainter painter(&pix);
    //设置画笔为绿色
    painter.setPen(QPen(Qt::green));
    //画圆
    painter.drawEllipse(QPoint(150,150),100,100);
    //保存
    pix.save("D:\\pix.png");

    

(3)运行后,测试结果,查看生成文件

在这里插入图片描述

(2)调试QImage,生成图片与修改图片

遇上边类似,直接贴代码。
(1)加入头文件
在这里插入图片描述

(2)加入生成图片代码

    //----------------------------------------//
    //(2)QImage  绘图设备 可以对像素进行访问
    QImage img(300,300,QImage::Format_RGB32);
    img.fill(Qt::white);

    QPainter painter1(&img);
    painter1.setPen(QPen(Qt::blue));
    painter1.drawEllipse(QPoint(150,150),100,100);

    //保存
    img.save("D:\\img.png");

(3)在绘图事件中,加入修改像素代码。
在这里插入图片描述

(4)测试效果。
生成图如下,
在这里插入图片描述

窗口图片修改如下。
在这里插入图片描述

(3)调试QPicture,生成图片

(1)加入头文件
在这里插入图片描述

(2)画图指令并保存记录

    //----------------------------------------//
    //(3)QPicture 绘图设备 可以记录和重现绘图指令
    QPicture pic;
    //声明画家
    QPainter painter2;
    painter2.begin(&pic); //开始往pic上画
    painter2.setPen(QPen(Qt::cyan));
    painter2.drawEllipse(QPoint(150,150),100,100);
    painter2.end(); //结束画画

    //保存到磁盘
    pic.save("D:\\pic.zt"); //任意后缀绘图名

(3)绘图事件加载画图指令,画在窗口内
在这里插入图片描述

(4)实验结果
记录文件如下。
在这里插入图片描述

窗口图片修改如下。
在这里插入图片描述

6 、 QT代码连接

实验1:图片移动代码:https://download.csdn.net/download/qq_22146161/87283646
实验2:绘图设备练习代码:https://download.csdn.net/download/qq_22146161/87283647

7、细节点与自己想法

(1)报错,显示没有某个文件,其实事件调试的时候,开始加入图片挺多的,后来不需要,就删除了,报了这个错,这好像是因为有两个xxx.h文件。
在这里插入图片描述

解决方式:

1)先清理下项目
在这里插入图片描述
2)然后去找生成的文件下,有个xxx.h的文件,删除掉,如果不行,就将它放到工程下,然后清理下工程,在运行试试。

8、总结

我们练习完绘图设备后,期望是使用它做些东西,接下来,会继续学习,尝试做个示波器的界面。继续前进~~~

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

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

相关文章

不知道变年轻特效软件有哪些?这些有趣的app建议收藏

现在刷短视频几乎已经成为我们消遣时间的主要项目之一,因为里面涵盖了多种方面的内容,例如情景短剧、知识点讲解、酷炫的卡点视频、有趣的照片特效等等,能满足不同人群的喜好。 而最近变年轻的特效再次流行起来,你们是不是跟我一样…

K_A09_008 基于 STM32等单片机驱动ES08A SG90舵机按键控制正反转

目录 一、资源说明 二、基本参数 参数 型号:SG90 型号:ES08A 引脚说明 三、驱动说明 SG90舵机 ES08A 舵机 对应程序: 四、部分代码说明 接线说明 STC89C52RCES08A SG90舵机 STM32F103C8T6ES08A SG90舵机 五、基础知识学习与相关资料下载 六、视频…

AI遮天传 DL-深度学习在自然语言中的应用

本文简要介绍一些深度学习在自然语言应用的基本任务,词表示,文本翻译和机器翻译。 一、典型任务 词性标注和句法分析问答和对话系统文本/文档分类情感分析和观点挖掘机器翻译文本生成......1.1 词性标注和句法分析 词性(POS)标注即对句子里的每个词给出…

WPF入门第二篇 MVVM与Binding

MVVM与Binding MVVM,即Model-View-ViewModel的首字母缩写,在这种开发模式下常用binding来对View和ViewModel进行绑定。 添加三个文件夹,分别命名为Models、Views、ViewModels。 在Model文件夹中,添加Student类,并将…

Java学到什么程度可以找工作?这10点赶紧自查!

最近收到了不少私信,询问Java学到什么程度可以找工作。 我也去问了几个同组大佬的想法,总结了10点,大家可以对照自查一下,看看你都做到了吗? 基本技能自查 1、Java SE基础 推荐学习Java8,这依旧是个有代表…

【2023最新】腾讯云注册域名及服务器使用宝塔绑定域名教程

1 在腾讯云注册域名 在官网:https://buy.cloud.tencent.com/domain,注册想要的域名,需要认证信息模板 注册好以后,在右上角输入框,输入域名,查找并进入到域名控制台 在域名控制台,添加记录&…

基础算法系列之排序算法(一)[快速排序,归并排序,二分查找]

文章目录前言快速排序关键点实现选角排序重复实现稳定性分析记忆模板归并排序关键点实现二分查找总结前言 先来一波预热,本次寒假将要更新的博文系列为:基础算法部分,最新前言论文研读(不包含论文复现-耗时太长)&…

day21【代码随想录】二叉树的层序遍历、二叉树的层序遍历|| 、二叉树的层平均值 、二叉树的锯齿形层序遍历 、二叉树的右视图 、N叉树的层序遍历

文章目录前言一、二叉树的层序遍历(力扣102)二、二叉树的层序遍历||(力扣107)三、二叉树的层平均值(力扣637)四、二叉树的锯齿形层序遍历(力扣103)五、二叉树的右视图(力…

吃透Chisel语言.39.Chisel实战之单周期RISC-V处理器实现(一)——需求分析和初步设计

Chisel实战之单周期RISC-V处理器实现(一)——需求分析和初步设计 需求分析 首先明确我们要做的是什么,这个在标题里面已经说明了,我们要做的是一个单周期RISC-V处理器。 但光是个短语不足以支撑我们开展项目,我们需…

大数据学习:shell基础(3)

文章目录history命令参数说明任务一:查看历史操作记录任务二:查看最近10条历史命令任务三:查看最开始10条历史命令任务四:曾多少次使用vim编辑文本文件?任务五:执行历史第5条命令任务六:执行上一…

【深度学习】李宏毅2021/2022春深度学习课程笔记 - Recurrent Neural NetWork(RNN)

文章目录一、Slot Filling二、Recurrent Neural NetWork(RNN)三、Bidirectional RNN(双向RNN)四、Long Short Term Memory(LSTM)五、Learning Target六、RNN 很难 Train七、Helpful Techniques7.1 LSTM7.2 …

CSDN竞赛14期·12月11日考试

CSDN竞赛14期12月11日考试 1、题目名称:字符串全排列 // 请关闭中文输入法,用英文的字母和标点符号。 // 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮, //…

半入耳式蓝牙耳机哪款音质好?音质好的半入耳式蓝牙耳机推荐

对于喜欢听歌的朋友来讲,你只佛会关注到蓝牙耳机的佩戴舒适度,音质清晰这种情况,入耳式的带有耳塞,往往更加佩戴有更好的密闭性,半入耳的不完全进入耳道,佩戴更加舒适,下面整理了几款音质不错的…

[附源码]Python计算机毕业设计非处方药的查询与推荐系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

Prometheus+Grafana监控一网打尽

PrometheusGrafana监控一、Prometheus介绍二、监控组件node-exportermysqld-exportercadvisorprometheus三、Grafana 展示平台docker启动配置Data sources导入Dashboard模板Linux主机监控Mysql监控Nginx监控Redis监控PostgreSQL监控Kafka监控ElasticSearch监控一、Prometheus介…

这四类项目经理一定带不好项目

项目经理就一定可以带好项目嘛?,当然不一定 失败的项目不少,除去一些本身就很坑的项目,大多项目失败,都和项目经理的个性有关。 也总结了2组极端特质: 第一,烂好人VS劳模型 第二,马…

[ vulhub漏洞复现篇 ] struts2远程代码执行漏洞s2-059(CVE-2019-0230)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

JavaEE-多线程初阶3

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录volatile关键字wait 和 notify多线程案例单例模式饿汉模式懒汉模式volatile关键字 volatile : 易变的,易失的 vo…

关于实体类中VO、DTO、Entity的区别

关于实体类中VO、DTO、Entity的区别 1、entity 里的每一个字段,与数据库相对应, 2、vo 里的每一个字段,是和你前台 html 页面相对应, 3、dto 这是用来转换从 entity 到 vo,或者从 vo 到 entity 的中间的东西 。(DTO中拥…

leetcode: 1091. 二进制矩阵中的最短路径

1091. 二进制矩阵中的最短路径 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/shortest-path-in-binary-matrix/description/ 给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。 二进制矩阵中的 畅通…