qt中函数paintEvent(QPaintEvent*)是不是被系统自动调用的 5
推荐于2017-10-07 · 知道合伙人教育行家
qt中函数paintEvent(QPaintEvent*)是被系统自动调用。
paintEvent(QPaintEvent *)函数是QWidget类中的虚函数,用于ui的绘制,会在多种情况下被其他函数自动调用。
1.QPainter类
这个类主要提供在窗体或者其他绘图设备上进行绘图的功能,在paintEvent(QPaintEvent *)中使用如下:
此类中常用的函数有:
drawXXX()函数,用于绘制图形、文字和路径等;
fillXXX()函数,用于填充,可在指定区域内进行填充;
brush()和pen() 笔刷和钢笔的相关操作
2.QPainterPath类
这个类为绘图提供容器,主要还是用于描述绘制路径。可以通过函数setFillRule(Qt::WindingFill);来设置填充规则,通过addRect()函数来添加绘制区域。
3.QColor类
此类提供颜色支持,这里的颜色可以定义四个属性:QColor ( int r, int g, int b, int a = 255 ),即红、绿、蓝和透明度。除此之外,也可以单个设置这四个值,通过类似setAlpha()的函数即可设置,这对设计渐进效果很有帮助。
下面送上一段摘自别人项目中的代码,仅供参考学习。
qt 的主消息循环QCoreApplication::exec()从消息队列中取出系统事件(system event),将它们翻译
为QEvent,并将其发送到QObject
除了用户操作引发的QEvent,还可以手动发送:QCoreApplication::sendEvent()或postEvent()
注意:QCoreApplication是QApplication的父类
接收到QEvent的QObject会调用它们对应的:***event(),这些函数一般都要被重载。
QEvent 有两个成员变量:一个事件类型和一个是否接收的标志。accept()和ignore()可以设置这个标志。
*******************************************************************************************
QObject::installEventFilter()允许一个对象截获本该发到其它对象的事件。
void QObject::installEventFilter ( QObject * filterObj )
它将一个事件过滤器安装到一个QObject中。事件过滤器接收宿主QObject的所有events,它既可以不接收,也可以将其发送到宿主QObject。事件过滤器本身也是一个QObject,它通过自己的eventFilter() 函数
来接收事件。如果该函数返回true,那么表示该事件已经被处理了,不需要调用默认的事件处理程序。反之,则交给默认事件处理程序处理。一个QObject可以安装多个事件过滤器,但最后安装的那个会最先激活。