【Qt教程】3.4 - Qt5 QPainter绘图事件、绘图功能
1. QPainter绘图事件 简介
Qt的绘图系统允许使用现同的API在屏幕和其他打印设备上进行绘制。整个绘图系统基于 QPainter、QPaintDevice、QPaintEngine 三个类。
QPainter 用来执行绘制的操作。
QPaintDevice 是一个二维空间的抽象,这个二维空间允许QPainter在其上面进行绘制,也就是QPainter工作的空间。
QPaintEngine 提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口。QPaintEngine 类应用于QPainter和QPaintDevice之间,通常对开发人员是透明的。除非你需要自定义一个设备,否则你是不需要关系这个QPaintEngine这个类的。我们可以把QPainter理解为画笔,把QPaintDevice理解为使用画笔的地方,QPaintEngine理解为能让不同材质的纸张、屏幕都能使用同一种画笔。
三者的层次结构:
2. 绘图功能示例
GitHub源码仓库:Qt学习例程
创建 QWidget空工程。
Qt中绘图有专用的绘图事件函数。
重写:void Widget::paintEvent(QPaintEvent *),应用运行后就会自动调用该事件。
画线。
// 实例化画家对象,this指定绘图设备,当前窗口 QPainter painter(this);// 画一条线 painter.drawLine(QPoint(0,0), QPoint(100,100));
画圆。
// 实例化画家对象,this指定绘图设备 QPainter painter(this);// 画一条线 painter.drawLine(QPoint(0,0), QPoint(100,100));// 画圆 painter.drawEllipse(QPoint(100,100), 100, 100); painter.drawEllipse(QPoint(100,100), 50, 30);
画矩形、画点。
// 画矩形 (左上角x坐标,左上角y坐标,宽度,高度) painter.drawRect(QRect(200,20,100,100)); // 画矩形 (左上角x坐标,左上角y坐标)(宽度,高度) painter.drawRect(QRect(QPoint(200,20),QSize(100,100)));// 这种方式会多出一个点,不方便使用 // 画矩形 (左上角x坐标,左上角y坐标)(右下角x坐标,右下角y坐标) painter.drawRect(QRect(QPoint(200,120),QPoint(300,220)));// 画点 painter.drawPoint(300,223);
画文字。
// 画文字 painter.drawText(QRect(20,200,50,50), "好好学习,天天向上");
设置画笔颜色、线宽(如上例子,默认的颜色是黑色,线宽为1)。
// 设置画笔颜色 QPen pen(QColor(255,0,0)); // 设置画笔线宽(只对点线圆起作用,对文字不起作用) pen.setWidth(3); // 让画家使用这个画笔 painter.setPen(pen);
设置画笔线条风格(默认是SolidLine实线)。
// 设置画笔线条风格,默认是SolidLine实线 // DashLine虚线,DotLine点线,DashDotLine、DashDotDotLine点划线 pen.setStyle(Qt::DashDotLine);
画刷,对封闭图形填充颜色。
// 画刷,对封闭图形填充色 QBrush brush(Qt::blue); // 让画家使用画刷 painter.setBrush(brush);
画刷设置风格。
// 画刷,对封闭图形填充色 QBrush brush(Qt::blue); // 设置画刷风格,默认是SolidPattern实心填充 brush.setStyle(Qt::Dense5Pattern); // 让画家使用画刷 painter.setBrush(brush);
GitHub源码仓库:Qt学习例程
【Qt教程】3.4 - Qt5 QPainter绘图事件、绘图功能相关推荐
- QT教程2:QT5的体系构架
一.列出QT5体系内容 QT5的模块有• QtCore • QtGui • QtWidgets • QtMultimedia • QtBluetooth • QtNetwork • QtPositio ...
- 【Qt教程】3.5 - Qt5 QPainter绘图抗锯齿、相对坐标/平移坐标系、QPainter画图片、手动调用QPainter绘图事件
GitHub源码仓库:Qt学习例程 1. QPainter绘图抗锯齿 /// 抗锯齿测试 /// painter.drawEllipse(QPoint(100,50), 50, 50);// 设置 抗 ...
- Qt绘图事件:QPainter、QPaintEngine和QPaintDevice
一.绘图,刷新界面的方法 1.绘图事件 一般在绘图事件中绘图 1 void paintEvent(QPaintEvent *);//绘图事件在窗口重绘的时候(即状态改变)的时候调用 2 { 3 //1 ...
- 【QT】QT从零入门教程(十三):QT画笔工具QPainter (双缓冲绘图)
QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage.QOpenGLPaintDevice.QWidget 和QPaintDevice 显示图形(线.形状.渐变等). ...
- [Qt教程] 第20篇 2D绘图(十)图形视图框架(下)
[Qt教程] 第20篇 2D绘图(十)图形视图框架(下) 楼主 发表于 2013-5-4 15:43:02 | 查看: 861| 回复: 0 图形视图框架(下) 版权声明 该文章原创于Qter开源社 ...
- [Qt教程] 第19篇 2D绘图(九)图形视图框架(上)
[Qt教程] 第19篇 2D绘图(九)图形视图框架(上) 楼主 发表于 2013-5-4 15:26:20 | 查看: 1798| 回复: 26 图形视图框架(上) 版权声明 导语 在前面讲的基本绘 ...
- [Qt教程] 第17篇 2D绘图(七)涂鸦板
[Qt教程] 第17篇 2D绘图(七)涂鸦板 楼主 发表于 2013-5-2 21:37:41 | 查看: 1255| 回复: 16 涂鸦板 版权声明 该文章原创于Qter开源社区(www.qter ...
- [Qt教程] 第11篇 2D绘图(一)绘制简单图形
[Qt教程] 第11篇 2D绘图(一)绘制简单图形 楼主 发表于 2013-4-23 12:52:35 | 查看: 1398| 回复: 5 绘制简单图形 版权声明 该文章原创于Qter开源社区,作者 ...
- QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现
QT5系列教程二---基于qcustomplot的QT5 GUI串口收发绘图软件实现 结构 UI部分 代码部分 step1:实现串口数据接受 串口接受数据格式 在`.pro`文件中添加`serialp ...
最新文章
- 远程手机测试机房的建立
- torch 和torchvision对应关系并附下载路径
- 7-2 旅行售货员 (10 分)(TSP问题思路加详解)
- mysql8导出文件_windows下 Mysql 8.0.x 数据库简单的导出和导入!!!
- 基本可编程芯片初始化字8255、8253、8259
- 解决no such file or directory的问题
- 微信小程序侧边栏滑动特效(左右滑动)
- 访问线上平台出现http状态码“502”和“504”
- 保险公司智能运营系统——软件需求规格说明
- 怎么把数组转化成字符串呢?有没有现成的函数呢?
- 举头望明月,低头敲代码
- 电视root工具_TapTap | 无需Root,成功移植 IOS14,拿下!!!
- dict 方法汇总
- 疫情发生后,易泊车牌识别加强小区管理,不让外来车进入
- 学会这几招,能找到90%以上的资源
- JAVA-DS-排序
- 关于个人电脑C盘清理的一些小整合
- 欧姆龙 PLC 程序NJ ST语言EtherCat总线控制 24个伺服轴大型程序电池生产线 包括PLC NJ-1400和威纶通触摸屏程序
- 【案例分享】高效率利器 - SC 频谱分析仪
- (二十七)投资组合的绩效评估