qt repaint 用法_Qt常用函数 记录(update erase repaint 的区别)
一界面重载函数
使用方法:
1在头文件里定义函数
protected:
void paintEvent(QPaintEvent *event);
2 在CPP内直接重载
void ----------::paintEvent(QPaintEvent *)
{
//重载函数体
}
执行条件:界面有任何变动都会执行
特别:有时候会积累变化,既界面发生变化时不是立刻执行,可能几次变化合并为只执行一次。
如果要立即执行需要调用函数
详细使用见http://www.cnblogs.com/hnrainll/archive/2011/05/26/2057758.html(Len Chin博客总结,谢谢Len大侠做出这第细致的总结)
Qt paintevent事件
一.主要理解一下几个方法和属性:
1.QWidget * QScrollView::viewport () const
2.void QWidget::paintEvent ( QPaintEvent * ) [虚 保护]
3.void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽]
4.void QWidget::update () [槽]
5.void QWidget::erase ( int x, int y, int w, int h )
6.bool updatesEnabled
二.现分别详细介绍:
1.QWidget * QScrollView::viewport () const
返回滚动视图中的视口窗口部件,这个窗口部件包含内容窗口部件或者要画的区域。
2.void QWidget::paintEvent ( QPaintEvent * ) [虚 保护]
只要窗口部件需要被重绘就被调用。每个要显示输出的窗口部件必须实现它。这个事件处理器可以在子类中被重新实现来接收绘制事件。 它可以是repaint()或update()的结果。 很多窗口部件在当它们被请求时,它们很简单地重新绘制整个界面,但是一些窗口部件通过仅仅绘制被请求的区域QPaintEvent::region()进 行优化,例如,QListView和QCanvas就是这样做的。
Qt也可通过把多个绘制事件合并为一个来加快绘制速度。当update()被调用几次或者窗口系统发送几次绘制事件,Qt把它们合并为 一个比较大区域(请参考QRegion::unite())的一个事件中。repaint()不允许这样优化,所以只要可能我们尽量使用update ()。
当绘制事件发生,更新区域通常被擦除。这里有一些例外,通过QPaintEvent::erased()可以得知这个窗口部件是否被擦除。
3.void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽]
通过立即调用paintEvent()来直接重新绘制窗口部件,如果erase为真,Qt在paintEvent()调用之前擦除区域 (x,y,w,h)。 如果w是负数,它被width()-x替换,并且如果h是负数,它被height()-y替换。 如果你需要立即重新绘制,建议使用repaint(),比如在动画期间。在绝大多数情况下,update()更好,因为它允许Qt来优化速度并且防止闪 烁。 警告:如果你在一个函数中调用repaint(),而它自己又被paintEvent()调用,你也许会看到无线循环。update()函数从来不会产生 循环。
4.void QWidget::update () [槽]
更新窗口部件,当Qt回到主事件中时,它规划了所要处理的绘制事件。这样允许Qt进行优化从而得到比调用repaint()更快的速度和更 少的闪烁。 几次调用update()的结果通常仅仅是一次paintEvent()调用。 Qt通常在paintEvent()调用之前擦除这个窗口部件的区域,仅仅只有在WRepaintNoErase窗口部件标记被设置的时候才不会。
5.void QWidget::erase ( int x, int y, int w, int h )
在窗口部件中擦除指定区域(x, y, w, h),并不产生绘制事件。
如果w为负数,它被width()-x替换。如果h为负数,它被height()-y替换。
子窗口部件不被影响。
6.bool updatesEnabled
这个属性保存的是更新是否生效。
如果更新失效,调用update()和repaint()是没有效果的。如果更新失效,来自窗口系统的绘制事件会被正常处理。 setUpdatesEnabled()通常被用于在一小段事件内使更新失效,例如为了避免在大的变化期间发生屏幕闪烁。
实例:
setUpdatesEnabled( FALSE );
bigVisualChanges();
setUpdatesEnabled( TRUE );
repaint();
通过setUpdatesEnabled()设置属性值并且通过isUpdatesEnabled()来获得属性值。
转自作者:Leo Chin出处:http://www.cnblogs.com/hnrainll/
http://blog.csdn.net/yh_1988/article/details/7196481
qt repaint 用法_Qt常用函数 记录(update erase repaint 的区别)相关推荐
- qt repaint 用法_Qt重绘之update,repaint详解
Qt里面的重绘和Windows编程里面的重绘差不多.但是Qt的重绘更有特色,更加智能. 在讲之前,先说说paintEvent() paintEvent()是一个虚函数槽(slot),子类可以对父类的p ...
- qt repaint 用法_Qt重绘之update,repaint详解(转)
Qt里面的重绘和Windows编程里面的重绘差不多.但是Qt的重绘更有特色,更加智能. 在讲之前,先说说paintEvent() paintEvent()是一个虚函数槽(slot),子类可以对父类的p ...
- qt repaint 用法_qt的update与repaint
一直搞不明白,qt的update与repaint的区别.虽然文档上说得貌似很明了了.但是,不看看源码,用着用着就迷糊了.今天看了下下相关的源码,记下自己的一点心得的. 1.update到paintEv ...
- Qt QString类及常用函数功能详解
QString 是 Qt 编程中常用的类,除了用作数字量的输入输出之外,QString 还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能. QString 存储字符串釆用的是 Un ...
- python中常用函数表_Python常用函数记录
Python常用函数/方法记录 一. Python的random模块: 导入模块: import random 1. random()方法: 如上如可知该函数返回一个[0,1)(左闭右开)的一个随机的 ...
- 算法移植优化(七)cmake常用函数记录
由于cmake我一般是项目移植的时候,才会涉及到,一些常用函数隔一段时间就会忘记,所以在此做一下笔记,以便日后查看. 1.添加链接库所在的目录: link_directories("./li ...
- Excel常用函数记录
文章目录 excel常用函数 1. 比较B2列是否在A列出现 2. 拼接过个单元格 3. 将时间戳转换成日期 4.截取单元格前几个字符 5.提取指定字符后的所有字符 6.删除单元格中隐藏的字符或非打印 ...
- XPath用法及常用函数
目录 XPath简介 XPath语法 选取节点 谓语(Predicates) 选取未知节点 选取若干路径 XPath 轴 XPATH的几个常用函数 XPath简介 XPath (XML Path La ...
- qt repaint 用法_Qt 中update()和repaint()的区别
void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽] 通过立即调用paintEvent()来直接重新绘 ...
最新文章
- 本地复制不能粘贴到服务上
- 姚氏百万富翁 混淆电路_姚氏混淆电路原理简介
- i2s传输中左右声道数据格式
- al-khaser 调试器,虚拟机检测工具
- 怎样自动提取邮件的内容_流程自动化和人工智能如何创建智慧物流?
- android surfaceview 清屏
- Using C++ in Eclipse - Program file not Specified problem
- apache.commons.beanutils javabean转MapStirng,String对象
- 大一c语言程序考试常考程序题,C语言程序常考题
- 用计算机清点木材的数量,木材检验员培训课件-木材出入库管理.ppt
- Android 自定义View实现拖动滑块完成验证
- 电脑开关电源维修图解
- 真彩色图像RGB,YIQ图像,HSV图像,YCbCr图像的相互转换(Matlab实现)
- 关于daemonize()
- JAVA好管家,一天一个shell命令 linux好管家-进程-ps命令详解
- HDOJ 2026 首字母变大写
- void指针(void *的用法)
- 字符串常量池,看这篇就够了(二)
- 华为无线设备配置静态负载均衡
- Django计算机毕业设计高校体育馆管理信息系统(程序+LW)Python
热门文章
- Android Makefile中inherit-product函数简介,以及与include的区别
- 湖北武汉电动机保护器公司哪家好_电动机保护器-上海硕吉电器_新浪博客
- 其实 家用计算机与普通计算机,拆解服务器,看看与普通计算机到底有什么区别?...
- 优化切尔诺贝利灾难模型——附matlab代码
- 七RabbitMQ队列、Redis
- java tr069_tr069cpe模拟器 针对tr069协议的客户端简单实现 - 下载 - 搜珍网
- oracle srvctl命令,用srvctl命令配置service
- 全网最稀缺的安卓工具资源APPMT管理+NP管理+云注入+云注入入口解密工具+Apk单机弹窗注入+小黄鸟+黑盒(32位)+黑盒(64位)+算法助手+mhook等等……
- java开发 使用scala_给Java开发者的Scala教程
- ORB-SLAM2源码阅读(1)