一、QPaintEvent 绘图事件
1、paintEvent 函数
- 该绘图函数为虚函数,一般要在子类中去重新实现,来接受绘图事件。
- 通过
QPainter来绘图时,一般必须要在paintEvent函数中来进行。在该函数中重新实现所有的绘图操作,程序在初始化之后会自动调用该绘图事件函数来进行绘图。
2、绘图函数的调用
- 绘图函数
paintEvent的首次调用是在所有的UI都初始化之后进行的。 - 当程序的
UI发生变化时,如控件大小位置变化、控件由隐藏到显示变化时,程序会调用paintEvent函数 - 当调用
repaint或update函数时,会导致程序调用paintEvent函数。一般推荐使用update函数,因为Qt针对update做了优化和处理,而repaint则没有。
二、QPainter基础
1、简介
QPainter一般在paintEvent事件函数中去使用,否则不会生效。在虚函数paintEvent中去重新实现对应功能,如构建和自定义画家QPainter对象,并指定绘图设备(即具体在什么上绘制,如指定的label或widget等控件),进行绘制对应的UIQPainter在绘制GUI的程序上,提供了高度的优化功能。它能绘制几乎所有的 UI,如:点、线条、矩形、圆弧、椭圆、弦、图片、文字、填充等。
2、常用接口
QPainter (QPaintDevice *device):构建画家对象,并指定绘图设备,即在哪上面进行绘制。drawArc:在指定的矩形中画内切的圆弧drawChord:在指定的矩形中画弦drawPie:在指定矩形中画饼型图drawConvexPolygon:根据给定的多个点来画凸多边形drawPolygon:画多边形drawEllipse:在指定矩形内画椭圆drawImage:绘制图片,相当于用指定的图片来填充指定的矩形。drawLine:根据给定的点来画线drawPolyline:根据多个点来画折线,折线的首尾不相连drawPath (const QPainterPath &path):画指定的路径图,可以画各种各样的不规则图形。drawPicture:在给定的点重新加载展示指定的图片drawPixmap:画像素图,即用指定的图来在指定矩形中进行填充drawPoint:画一个点drawRect:画方正的矩形drawRoundedRect:画带圆角的矩形drawText:画文本文字fillRect:用指定的颜色来填充矩形区域,此时没有边线,只是填充指定区域font:返回当前用来绘制文本的字体fontMetrics:在画家处于激活的状态下返回当前字体的几何尺寸信息opacity:返回当前的画家的透明度,默认值为1layoutDirection:当绘制文本内容时,返回布局方向setPen:设置画笔的样式setOpacity:设置不透明度,取值的范围是0.00.00.0 ~ 1.01.01.0,当值为0.00.00.0时为完全透明,当值为1.01.01.0时为完全不透明。setBackground:设置填充背景的颜色样式,当背景模式为透明时,该函数将不起作用setBrush:以指定的颜色样式填充所画的图形setFont:绘制文本内容时,来设置对应的字体样式setLayoutDirection:当绘制文本内容时,用来设置布局的方向
3、对比 QPainter 和 QPen
QPainter和QPen都可以调用各自的setBrush函数,但是作用的效果完全不同
(1)、 QPainter 调用setBrush函数
- 此时画家
QPainter可以以指定的颜色来填充所绘制的整个封闭图形(只有封闭的图形才能被填充,如弦Arc未封闭将不能被填充),相当于刷子。 - 或者此时画家
QPainter以指定的样式来填充封闭图形,(以颜色或样式填充只能有一种起作用,不可以同时起作用)。 - 应用示例
void PaintEventTest::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setBrush(

本文详细介绍了Qt中的QPaintEvent绘图事件及其paintEvent函数的使用,以及如何通过QPainter进行UI绘制,包括绘制弧形、填充、设置画笔和背景的基本技巧。重点讲解了QPainter的基础接口和与QPen的区别,以及实际应用场景和常见设置方法。
最低0.47元/天 解锁文章
6864

被折叠的 条评论
为什么被折叠?



