接口重载函数
使用方法:
1在头文件中定义函数
保护:
voidpaintevent (qpaintevent * event;
直接在CPP中过载
void------:paint event (qpaintevent * )
{
//重载函数体
}
执行条件:即使接口发生变更也会执行
具体地说,变化可能会积累,并不在现有接口变化时立即执行,而是可能合并为只执行一次数次变化。
需要调用函数才能立即执行
详见http://www.cn blogs.com/hnrain ll/archive/2011/05/26/2057758.html。 (lenchin博客总结,谢谢你这么细致的总结。 Len大侠) )。
Qt paintevent事件
一.主要了解几种方法和属性:
1.q构件* qscrollview 33603360 viewport () const
2.voidqwidget :3360 paint event (qpaintevent * ) [虚拟保护]
3.voidqwidget 33603360 repaint (intx,int y,int w,int h,bool erase=TRUE ) [插槽]
4.voidqwidget 33603360更新([插槽]
5.voidqwidget :3360 erase (intx,int y,int w,int h ) ) ) ) ) ) )5) ) ) ) ) 652
6 .启用布尔更新
2 .现在分别详细介绍。
1.q构件* qscrollview 33603360 viewport () const
返回到视图中的视口小部件。 此小部件包含内容窗口组件或要绘制的区域。
2.voidqwidget :3360 paint event (qpaintevent * ) [虚拟保护]
只要需要重新绘制窗口部件,就会调用。 每个显示输出的窗口部件都必须实现它。 此事件处理程序在子类中重新实现,以接收呈现事件。 repaint (或update )的结果。 许多窗口部件在被请求时很容易重绘整个界面,但有些窗口部件只通过绘制请求的区域(QPaintEvent:region ) (如QListView或QCanvas )进行了优化
Qt还可以通过将多个绘制事件合并为一个来提高绘制速度。 update ) )被调用了几次,或者窗口系统发送了几次绘制事件后,Qt会将它们指向相对较大的区域(请参见QRegion:unite ) ) )。) repaint () )不允许这样的优化,所以尽可能地使用update )。
发生绘制事件时,更新区域通常会被清除。 除了以下几个例外,QPaintEvent:erased ()允许您了解此窗口部件是否已被清除。
3.voidqwidget 33603360 repaint (intx,int y,int w,int h,bool erase=TRUE ) [插槽]
立即调用paintEvent ()直接重绘窗口部件。 如果erase为true,则Qt为paintEvent ) )在调用之前清除区域(x,y,w,h ) )。 如果w为负数,则替换为width ()-x;如果h为负数,则替换为height )-y。 如果需要立即重新绘制,建议使用repaint (),例如在动画期间。 在大多数情况下,update ()更好,因为可以使用Qt来优化速度并避免闪烁。 警告:如果在某个函数中调用repaint () (其本身为paintEvent ) ),则可能会看到无线环路。 update ()函数不生成循环。
4.voidqwidget 33603360更新([插槽]
更新窗口部件,并计划Qt返回主事件时处理的呈现事件。 这样可以优化Qt,使其比调用repaint ()更快、更少地闪烁。 调用update (的几次结果通常为paintEvent ) )只需调用一次。 Qt通常在调用paintEvent ()之前清除此窗口部件的区域。 仅当设置了WRepaintNoErase窗口部件标记时才可用。
5.voidqwidget :3360 erase (intx,int y,int w,int h ) ) ) ) ) ) )5) ) ) ) ) 652
清除窗口部件中的指定区域(x、y、w、h )不会触发绘制事件。
如果w为负数,则替换为width ()-x。 如果h为负数,则替换为height ()-y。
子窗口部件不受影响。
6 .启用布尔更新
此属性保存更新是否有效。
如果更新无效,则调用update (和repaint )无效。 如果更新不再有效,将正常处理来自窗口系统的呈现事件。 setUpdatesEnabled ()通常用于小事件中禁用更新,例如避免屏幕在巨大变化期间闪烁。
实例:
setupdatesenabled (假;
bigVisualChanges (;
setupdatesenabled(true;
repaint (;
在setUpdatesEnabled ()中设置属性值(isUpdatesEnabled ) )中获取属性值。
转自作者: Leo Chin来源: http://www.cnblogs.com/hnrainll/
3358 blog.csdn.net/yh _ 1988/article/details/7196481