Qt里面的重绘和Windows编程里面的重绘差不多。但是Qt的重绘更有特色,更加智能。

在讲之前,先说说paintEvent()

paintEvent()是一个虚函数槽(slot),子类可以对父类的paintEvent进行重写。当调用update(),repaint()的时候,paintEvent()会被调用,另外,当界面有任何改变的时候,paintEvent()也会被调用,这种界面的改变包括界面从隐藏到显示,界面尺寸改变,当然还包括界面内容改变的时候会被调用。paintEvent()是已经被高度优化过的函数,它本身已经自动开启并实现了双缓冲(X11系统需要手动去开启双缓冲),因此Qt中重绘不会引起任何闪烁。

有了paintEvent的知识,现在再来看看update()和repaint()

update和repaint是一类的,需要重绘的对象主动去调用,然后重绘。update和repaint调用之后,都回去调用paintEvent().

repaint(),被调用之后,立即执行重绘,因此repaint是最快的,紧急情况下需要立刻重绘的可以使用repaint()。但是调用repaint的函数不能放到paintEvent中调用。举个例子:有一个继承于QWidget的子类MyWidget,并在子类中对paintEvent进行了重写。我们在MyWidget::myrepaint()中调用repaint()。但是,myrepaint()又被重写的paintEvent()调用。 这样调用repaint()的函数又被paintEvent()调用,由于repaint()是立即重绘,而且repaint()在调用paintEvent之前几乎不做任何优化操作,而是会造成死循环,即:先调用repaint(),继而调用paintEvent(),paintEvent()反过来有调用repaint()...如此死循环。

update()跟repaint()比较,update则更加有优越性。update()调用之后并不是立即重绘,而是将重绘事件放入主消息循环中,由main的event loop来统一调度的(其实也是比较快的)。update在调用paintEvent之前,还做了很多优化,如果update被调用了很多次,最后这些update会合并到一个大的重绘事件加入到消息队列,最后只有这个大的update被执行一次。同时也避免了repaint()中所提到的死循环。因此,一般情况下,我们调用update就够了,跟repaint()比起来,update是推荐使用的。

---------------------

原文:https://blog.csdn.net/feiyinzilgd/article/details/6116634

Qt零基础教程(四) QWidget详解篇

在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...

Qt零基础教程(四)QWidget详解(3):QWidget的几何结构

Qt零基础教程(四)  QWidget详解(3):QWidget的几何结构 这篇文章里面分析了QWidget中常用的几种几何结构 下图是Qt提供的分析QWidget几何结构的一幅图,在帮助的 Wind ...

C++框架_之Qt的信号和槽的详解

C++_之Qt的信号和槽的详解 1.概述 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal ...

C++框架_之Qt的窗口部件系统的详解-上

C++框架_之Qt的窗口部件系统的详解-上 第一部分概述 第一次建立helloworld程序时,曾看到Qt Creator提供的默认基类只有QMainWindow.QWidget和QDialog三种. ...

SQL Update 语句详解

SQL Update 语句详解   Update 语句 Update 语句用于修改表中的数据. 语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 Person: L ...

Qt重绘机制

一.引发重绘的事件 1.调用repaint() 2.调用uodate() 二.控件hide或者show 三.其他 ps: repaint函数是立即重绘,没有优化 update会优化,异步重绘,所以如果 ...

Qt之打包发布(NSIS详解)

来源:http://blog.sina.com.cn/s/blog_a6fb6cc90101fer8.html 发布方式    Qt发布的时候,通常使用两种方式:   (1)静态编译  (2)动态编译 ...

Hibernate HQL的update方法详解

虽然hibernate提供了许多方法对数据库进行更新,但是这的确不能满足开发需要.现在讲解一下用hql语句对数据进行更新. 不使用参数绑定格式String hql="update User ...

Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解

Graphics View提供了一个界面,它既可以管理大数量的定制2D graphical items,又可与它们交互,有一个view widget可以把这些项绘制出来,并支持旋转与缩放.这个柜架也包 ...

随机推荐

Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级

Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 3.安装Clus ...

zabbix利用api批量添加item,并且批量配置添加graph

关于zabbix的API见,zabbixAPI 1item批量添加 我是根据我这边的具体情况来做的,本来想在模板里面添加item,但是看了看API不支持,只是支持在host里面添加,所以我先在一个ho ...

oc 单例

单例模式: //static id _instace; // //+ (id)allocWithZone:(struct _NSZone *)zone //{ // static dispatch_o ...

微信分享接口SDK简介使用

很久没做移动端活动了,想不少人都参与过微信里面的活动,既然活动就少不了分享.那我就行一个前端的角度说说如何实现微信分享的吧. 对应微信分享,现在已有公共接口,微信的开发者文档SDK:https://m ...

C++实现CString和string的互相转换

CString->std::string 例子: CString strMfc=“test“; std::string strStl; strStl=strMfc.GetBuffer(0); u ...

windows API与C#的数据类型对应关系表

API与C#的数据类型对应关系表 API数据类型 类型描述 C#类型 API数据类型 类型描述 C#类型 WORD 16位无符号整数 ushort CHAR 字符 char LONG 32位无符号整数 ...

编写快速、高效的JavaScript代码

许多Javascript引擎都是为了快速运行大型的JavaScript程序而特别设 计的,例如Google的V8引擎(Chrome浏览器,Node均使用该引擎).在开发过程中,如果你关心你程序的内存和 ...

javascript小例子:實現四方向文本无缝滚动效果

实现一个文本无缝滚动的效果:

qt repaint 用法_Qt重绘之update,repaint详解相关推荐

  1. qt repaint 用法_Qt重绘之update,repaint详解(转)

    Qt里面的重绘和Windows编程里面的重绘差不多.但是Qt的重绘更有特色,更加智能. 在讲之前,先说说paintEvent() paintEvent()是一个虚函数槽(slot),子类可以对父类的p ...

  2. Qt重绘之update,repaint详解

    Qt里面的重绘和Windows编程里面的重绘差不多.但是Qt的重绘更有特色,更加智能. 在讲之前,先说说paintEvent() paintEvent()是一个虚函数槽(slot),子类可以对父类的p ...

  3. QT快速入门、三点求圆心实现详解

    在编程中,会经常用到数学计算,所以C++将常用的数学计算,例如求正余弦等,封装成函数(正是我们在3.2 数学计算中学习到的),我们只需要写入简单的语句就可以执行所需要的功能,这正是函数的意义.在这一章 ...

  4. jdbc mysql 自动重连_JDBC实现Mysql自动重连机制的方法详解

    JDBC是Java程序连接和访问各种数据库的API,它可以提供Java程序和各种数据库之间的连接服务,下面是爱站技术频道小编为大家带来的JDBC实现Mysql自动重连机制的方法详解. 日志:using ...

  5. qt repaint 用法_Qt常用函数 记录(update erase repaint 的区别)

    一界面重载函数 使用方法: 1在头文件里定义函数 protected: void paintEvent(QPaintEvent *event); 2 在CPP内直接重载 void ---------- ...

  6. for根据ID去重_汽车ECU参数标定之配置Overlay RAM实现Qorivva MPC57xx系列MCU参数在线标定和代码重映射原理和方法详解...

    内容提要 引言 1. MPC5744P的Overlay RAM工作原理介绍 2 MPC5744P的Flash Overlay配置详解 2.1 平台Flash标定区域描述字寄存器配置字0--PFLASH ...

  7. 第15.12节PyQt(Python+Qt)入门学习:可视化设计界面组件布局详解

    一.引言 在Qt Designer中,在左边部件栏的提供了界面布局相关部件,如图: 可以看到共包含有四种布局部件,分别是垂直布局(Vertical Layout).水平布局(Horizontal La ...

  8. design短语的用法总结_最新高中英语知识点详解之design的用法及常见短语

    英语的应用越来越广泛了,我们必须好好来学习英语知识.对此小学频道编辑为大家整理了最新高中英语知识点详解之design的用法及常见短语.详情如下: design的用法 n.设计;图案;构思 vt.设计; ...

  9. php中fwrite函数的用法,fwrite函数介绍与使用方法详解

    以下正文:这篇文章主要介绍了PHP文件读写操作相关函数总结,本文总结了fwrite().fread().fgets().fgetc().file().readfile() 等函数的介绍及使用例子一.f ...

最新文章

  1. CTFshow php特性 web110
  2. MySql采用range分区可提升查询效率
  3. SpringMVC redirect中文乱码问题
  4. Python实现二叉搜索树的删除功能
  5. BZOJ5343 [Ctsc2018]混合果汁 【二分 + 主席树】
  6. Jurassic.ScriptEngine 简易示例
  7. coco训练集darknet_YOLOv4: Darknet 如何于 Docker 编译,及训练 COCO 子集
  8. 数据结构实验 8.寻找中位数
  9. 林斌宣布好消息!语音识别大佬、Kaldi之父加盟小米
  10. 从工作组向域管理转型该如何设置?
  11. docker基础4--docker的命令
  12. 21世纪的“影子王国”:GPT-3,又一场科技革命的来临
  13. JAVA实现10种排序
  14. python实现Content-Type:application/octet-stream
  15. c语言中d的作用是什么,在C语言中c% 和 d% 是表示什么意思?
  16. 港大计算机学院副院长,中科院许榕生教授、香港大学邹锦沛博士等一行访问我校...
  17. js中的隐式类型转换有哪些
  18. android 机器人绘制,画个android机器人
  19. Linux平台彻底卸载MySQL总结
  20. Codeforces 450 B. Jzzhu and Sequences

热门文章

  1. ios 秒数转化为时间_将毫秒转换为日,时,分和秒iOS?
  2. 亿客CRM系统如何维护好客户关系?
  3. 连续系统的时域分析matlab,基于连续时间LTI系统时域分析的MATLAB仿真
  4. Oracle RAC中srvctl命令详细说明
  5. uniAPP 原生插件测试 提示 未配置AppKey或配置错误问题排查
  6. 在图片上动态的写文字
  7. VNC vdi 和windows之间的复制粘贴
  8. 某流氓安装程序的数据包(.data后缀)解压工具
  9. GNN algorithm(4): HAN, Heterogeneous Graph Attention Network
  10. mysql 设置数据库路径_MySQL数据库之更改Mysql数据库存储位置的具体步骤