qt中函数paintEvent(QPaintEvent)是被系统自动调用。
paintEvent(QPaintEvent )函数是QWidget类中的虚函数,用于ui的绘制,会在多种情况下被其他函数自动调用。
1QPainter类
这个类主要提供在窗体或者其他绘图设备上进行绘图的功能,在paintEvent(QPaintEvent )中使用如下:
此类中常用的函数有:
drawXXX()函数,用于绘制图形、文字和路径等;
fillXXX()函数,用于填充,可在指定区域内进行填充;
brush()和pen() 笔刷和钢笔的相关 *** 作
2QPainterPath类
这个类为绘图提供容器,主要还是用于描述绘制路径。可以通过函数setFillRule(Qt::WindingFill);来设置填充规则,通过addRect()函数来添加绘制区域。
3QColor类
此类提供颜色支持,这里的颜色可以定义四个属性:QColor ( int r, int g, int b, int a = 255 ),即红、绿、蓝和透明度。除此之外,也可以单个设置这四个值,通过类似setAlpha()的函数即可设置,这对设计渐进效果很有帮助。
下面送上一段摘自别人项目中的代码,仅供参考学习。
12 在自定义控件的 构造函数中加入如下一段断码this-setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); //隐藏对话框标题栏QPainterPath path;QRectF rect = QRectF(0,0,100,100); //两点确定矩形范围,一般为控件大小
12 在自定义控件的 构造函数中加入如下一段断码this-setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); //隐藏对话框标题栏QPainterPath path;QRectF rect = QRectF(0,0,100,100); //两点确定矩形范围,一般为控件大小,这样可以切割四个圆角,也可以调整大小,调整圆角个数
QPainterPath提供这样一个函数来检测两个path的交集,但是这个函数无法取得一条直线段与一个封闭path的交线。因为直线段没有fill area。找了一下也没有其他函数来完成这个事情。
QPainterPath intersected ( const QPainterPath & p ) const
于是只有自己写,我这里给出的是一个比较偷懒的算法,尽量利用qt提供的函数来做,效率很低,但是对于大多应用来说也没问题。
算法就是对线段逐点检测与contour的相交了,非常简单非常简单。
用起来速度也蛮快,对付现在这个苦逼项目完全OK~~
返回的path就是线段与任意封闭path的交线了,那么交点自然就很容易取得了。
qt中函数paintEvent(QPaintEvent)是被系统自动调用。
paintEvent(QPaintEvent )函数是QWidget类中的虚函数,用于ui的绘制,会在多种情况下被其他函数自动调用。
1QPainter类
这个类主要提供在窗体或者其他绘图设备上进行绘图的功能,在paintEvent(QPaintEvent )中使用如下:
此类中常用的函数有:
drawXXX()函数,用于绘制图形、文字和路径等;
fillXXX()函数,用于填充,可在指定区域内进行填充;
brush()和pen() 笔刷和钢笔的相关 *** 作
2QPainterPath类
这个类为绘图提供容器,主要还是用于描述绘制路径。可以通过函数setFillRule(Qt::WindingFill);来设置填充规则,通过addRect()函数来添加绘制区域。
3QColor类
此类提供颜色支持,这里的颜色可以定义四个属性:QColor ( int r, int g, int b, int a = 255 ),即红、绿、蓝和透明度。除此之外,也可以单个设置这四个值,通过类似setAlpha()的函数即可设置,这对设计渐进效果很有帮助。
以上就是关于qt中函数paintEvent(QPaintEvent*)是不是被系统自动调用的全部的内容,包括:qt中函数paintEvent(QPaintEvent*)是不是被系统自动调用的、如何在Qt中绘制分割界面的矩形框或圆角矩形框、Qt 怎么画一个圆角矩形对话框,或者圆角控件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)