Qt paintEvent

一、基础概念

paintEvent(QPaintEvent*)函数是QWidget类中的虚函数,用于ui的绘制,会在多种情况下被其他函数自动调用,比如update()时。

二、运行时机

一个重绘事件用来重绘一个部件的全部或者部分区域 ,下面几个原因的任何一个都会发生重绘事件“

1.当update()函数被调用

2.隐藏的部件现在被重新显示

3.其他一些原因

三、优化绘制事件方法

        1.大部分部件可以简单地重绘它们的全部界面,但是一些绘制比较慢的部件需要进行优化而只绘制需要的区域(可以使用QPaintEvent::region()来获取该区域),这种速度上的优化不会影响结果。

        2.Qt也会通过合并多个重绘事件为一个事件来加快绘制,当update()函数被调用多次,或者窗口系统发送了多个重绘事件,那么Qt就会合并这些事件成为一个事件,而这个事件拥有最大的需要重绘的区域。update()函数不会立即进行重绘,要等到Qt返回主事件循环后才会进行,所以多次调用update()函数一般只会引起一次paintEvent()函数调用。

        3.而调用repaint()函数会立即调用paintEvent()函数来重绘部件,只有在必须立即进行重绘操作的情况下(比如在动画中),才使用repaint()函数。

        4.update()函数允许Qt优化速度和减少闪烁,但是repaint()函数不支持这样的优化,所以建议一般情况下尽可能使用update()函数。

        5.还要说明一下,在程序开始运行时就会自动发送重绘事件而调用paintEvent()函数,另外,不要在paintEvent()函数中调用update()或者repaint()函数。

        6.当重绘事件发生时,要更新的区域一般会被擦除,然后在部件的背景上进行绘制。


 

发布了33 篇原创文章 · 获赞 9 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览