首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

QPaint中的QPaintEvent*该如何处理

2012-11-17 
QPaint中的QPaintEvent*每次用QPaint中都有一个参数QPaintEvent*,一直也没用到,,,,今天看到一段代码painte

QPaint中的QPaintEvent*
每次用QPaint中都有一个参数QPaintEvent*,一直也没用到,,,,今天看到一段代码
painter->fillRect(event->rect(), background);
//background是一个画刷,
请问这个是什么意思那? 能解释一下QPaintEvent是什么么?

[解决办法]
说到QPaintEvent。其实我用的不是太多。
为什么这么说呢。 要Qt paint的机制开始。
一般重写paintEvent()后 。整个widget是重绘的。在小数据量的情况下,全部重绘是没关系的。
但是如果数据量大了。就绘制效率就低了。毕竟每个painter.draw()。。都相当于一次IO调用。数据量大了自然就慢了。

如何解决这个问题呢,
一般的处理方法是double buffer。这样你可以控制哪些需要重绘,哪些保持原样。
最后在paintEvent()中 直接painter.drawPixmap()...一次IO调用。这样节约了时间。

还有种方法就是用QPaintEvent事件。这个事件里包含了region() rect()表示重绘的区域。所以你可以在这里进行上面所说的优化。

下面是帮助的说明
QPaintEvent

The QPaintEvent class contains event parameters for paint events.

Paint events are sent to widgets that need to update themselves, for instance when part of a widget is exposed because a covering widget was moved.

The event contains a region() that needs to be updated, and a rect() that is the bounding rectangle of that region. Both are provided because many widgets can't make much use of region(), and rect() can be much faster than region().boundingRect().

热点排行