【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、自己的学习与理解
- 用QT我们可以在窗口中,插入一个图片,并且实现控制。
- qt绘图至少有三个设备,我们本次练习也是这三个,各有各的特点,直接看以下三个翻译过来的表述。
- QPixmap,QImage和QPicture各有特点,根据视频老师讲述,QImage要比QPixmap强些,因为QImage可以操作像素点
- QPainter说是绘图设备,更像一个记录指令仪器,可以生成任意文件后缀,然后再解出来,复原,有点像加密解密过程。
- 三个设备都可以向外画图片,就是说,不画在窗口上,而是生成图片,然后放在文件夹里。
以下是在帮助文档截取的图,英文原版,有关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、总结
我们练习完绘图设备后,期望是使用它做些东西,接下来,会继续学习,尝试做个示波器的界面。继续前进~~~