qt repaint 用法_QT 界面绘制刷新机制
QT文章列表
耗时操作
QApplication::processEvents()
使QT现在就去更新界面各个控件的大小等等,完成界面刷新。但是这时候你操作了界面,比如按下了某个下拉按钮,这时候你的后台动作就会被暂停,直到界面下拉按钮全都缩回去之后,你的后台动作才会继续接着执行。
等于是在程序执行的过程中边执行,边抽取一点时间去更新界面。从而使得下面的一些函数立即得到执行。
QApplication::processEvents();//让界面可以及时更新
如果你后面有个写文件很费时的操作,这样以来用户界面可以变化,支持用户继续操作;但是用户可能又点击了保存文件的操作。这时候你可以调用另一个来让用户不假死,但是不接受用户输入(你对界面点了也白点):
QApplication::processEvents(QEventLoop::ExcludeUserInputEvents);//它可以忽略用户的输入(鼠标和键盘事件)。
resizeEvent
virtual void resizeEvent(QResizeEvent *event);
窗口对象的大小改变的时候会自动调用这个函数,不需要手动调用;你只需要重写这个函数,就可以在这个函数内部得到最新的窗口大小
void MainWindow::resizeEvent(QResizeEvent* event)
{
QMainWindow::resizeEvent(event);
// Your code here
}
update
repaint
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()函数从来不会产生 循环。
paintEvent
void QWidget::paintEvent(QPaintEvent *event)
重绘的时候会自动调用这个函数,不需要手动调用。例如,窗口被遮挡就会调用这个函数;update等函数也会触发,但是不一定是直接响应,因为QT会合并多个为一个,减少不必要的重绘;重绘往往会先擦除背景;这个函数是protected的,所以你无法直接调用;
当绘制事件发生,更新区域通常被擦除。这里有一些例外,通过QPaintEvent::erased()可以得知这个窗口部件是否被擦除。
调用关系
update()->repaint()->paintEvent()
1. update()函数,实质上是调用了repaint函数,但是不是同步的,就是repaint函数可能不会立即执行。调用多次update()可能只执行了一次repaint()函数。
绘制加速
Qt::WA_StaticContents的作用
界面Position
qt repaint 用法_QT 界面绘制刷新机制相关推荐
- qt repaint 用法_Qt重绘之update,repaint详解
Qt里面的重绘和Windows编程里面的重绘差不多.但是Qt的重绘更有特色,更加智能. 在讲之前,先说说paintEvent() paintEvent()是一个虚函数槽(slot),子类可以对父类的p ...
- qt repaint 用法_Qt 中update()和repaint()的区别
void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽] 通过立即调用paintEvent()来直接重新绘 ...
- qt repaint 用法_Qt常用函数 记录(update erase repaint 的区别)
一界面重载函数 使用方法: 1在头文件里定义函数 protected: void paintEvent(QPaintEvent *event); 2 在CPP内直接重载 void ---------- ...
- qt repaint 用法_qt的update与repaint
一直搞不明白,qt的update与repaint的区别.虽然文档上说得貌似很明了了.但是,不看看源码,用着用着就迷糊了.今天看了下下相关的源码,记下自己的一点心得的. 1.update到paintEv ...
- qt repaint 用法_Qt重绘之update,repaint详解(转)
Qt里面的重绘和Windows编程里面的重绘差不多.但是Qt的重绘更有特色,更加智能. 在讲之前,先说说paintEvent() paintEvent()是一个虚函数槽(slot),子类可以对父类的p ...
- qt repaint 用法_qt的repaint的问题
qt的repaint的问题 在网上找了个qt刷屏的程序, 下面是主要代码,在main函数中调用showSlot程序,以便读取图形文件,但是遇到了奇怪的问题, 程序在linux PC端运行良好,用的是u ...
- qt repaint 用法_关于Qt 中update()和repaint()的区别
void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽] 通过立即调用paintEvent()来直接重新绘 ...
- UI5界面绘制的机制,以及老旧dom节点的清除机制
Created by Wang, Jerry, last modified on May 21, 2016 今天在看UI5 render的机制,发现在clear老的dom node的时候,是一个一个r ...
- Qt QGraphics体系及刷新机制介绍
概述 Qt的三大体系:QWidget.QGraphics.Quick,其中QGraphics图形框架算是这三个中比较高级的一种用法了,并且使用起来相比另外两个体系会更加的复杂一些,不过它能实现的功能却 ...
- Android刷新机制-View绘制原理
Android刷新机制-View绘制原理 Android刷新机制-SurfaceFlinger原理 Android刷新机制-Choreographer原理 一.概述 本文将从startActivity ...
最新文章
- css3 渐变色 3种,css3实现渐变色文字的三种方法
- 电影编码JPEG2000与H.264
- HBase + SpringBoot分布式文件存储实战(一)-简介
- 基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)
- 在石家庄扣完五险一金到手5000,算什么水平?
- 【SSH】——Hibernate实现简单的自动建表
- 视频分享:挨踢项目求生法则(2)——战略篇
- 正则表达式之位置匹配
- 第九届蓝桥杯省赛C/C++本科B组真题解析
- tensorflow2.0 实现自动写诗
- 通过bootstrap4框架制作商城网页
- GeForce GTX 1050-2G驱动安装
- LAMP源码环境搭建
- 最简单的无线充电传输电路
- 美术 2.7 Metallic与Speculer流程
- 内核与驱动文件的version magic匹配问题
- Windows NT引导过程源代码分析
- 简单又复杂的三层网络转发技术
- MySQL常见的面试经典108题
- 智能自动写原创文章的软件