一界面重载函数

使用方法:

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/

 
 

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()来获得属性值。

QT paintevent 事件, update()槽函数的更多相关文章

  1. qt的信号与槽函数

    关联: bool connect ( const?QObject?*?sender, const?char?*?signal, const QObject * receiver, const char ...

  2. pyqt的多Button的点击事件的槽函数的区分发送signal的按钮。

    关键函数:QPushButton的setObjectName()/objectName() 个人注解:按功能或者区域,将按钮的点击事件绑定的不同的槽函数上. from PyQt5.QtWidgets ...

  3. 【QT】多个槽函数绑定同一个信号的触发顺序

    目录 一.Qt 3.0(包含3.0) - Qt 4.5(包含4.5)版本之前 二.Qt 4.6(包含4.6)版本之后 一.Qt 3.0(包含3.0) - Qt 4.5(包含4.5)版本之前 「多个槽函 ...

  4. QT中窗口刷新事件的学习总结(viewport, paintEvent, repaint, update, erase, updatesEnabled)

    一.主要理解一下几个方法和属性: 1.QWidget * QScrollView::viewport () const 2.void QWidget::paintEvent ( QPaintEvent ...

  5. Qt 的线程与事件循环——可打印threadid进行观察槽函数到底是在哪个线程里执行,学习moveToThread的使用)

    周末天冷,索性把电脑抱到床上上网,这几天看了 dbzhang800 博客关于 Qt 事件循环的几篇 Blog,发现自己对 Qt 的事件循环有不少误解.从来只看到现象,这次借 dbzhang800 的博 ...

  6. QT点击"X"按钮,调用closeEvent()函数来实现调用特定事件(附:粗略介绍QT的信号与槽的使用方法)

    背景: QT在用户关闭窗口(直接点击"X"键)时,程序一般都需要做一些善后的事情,就我现在的程序来说,既关闭USB.如何实现? 正文: 首先,在对应窗体的".h" ...

  7. Qt 信号和槽函数

    信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性.当某个信号被发射,就需要调用与之相绑定的槽函数.这与Windows下的消息机制类似,消息机制是基于回调函数.一个回调即是一个函数的 ...

  8. 【QT】无需写connect代码关联信号和槽函数

    对于一些简单的事件判别,如点击按钮. 无需写代码关联信号和槽函数. connect(ui->Btnshowhello,SIGNAL(clicked(bool)),this,SLOT(Btnsho ...

  9. QT槽函数获取信号发送对象

    Qt 在槽函数中获取信号发送对象 Qt中提供了一个函数 qobject_cast(QObject *object),可以通过这个函数判断信号发出对象 Qt 帮助文档的解释: Returns the g ...

随机推荐

  1. Python 文件操作、异常

    windows默认是gbk编码,又称cp936,汉字占2个字节. utf-8被称为万国码,这个编码下,汉字占3个字节. ASCII也是一种编码. 一.文件操作 最基本的文件打开: f = open(& ...

  2. 普通java工程的resources目录寻址

    问题: 普通java工程的src/main/resources目录下的配置文件如何寻址 在src/main/java目录下的代码中如何访问src/main/resources目录下的配置文件? Mav ...

  3. DRDS和RDS主要用来存储用户交易信息,MongoDB主要用来存储商品维度信息

    数据集成Data Integration-数加-大数据-阿里云 https://www.aliyun.com/product/cdp 数据集成支持的数据源 数据源类型 数据源 来源数据源被读取 目标数 ...

  4. make tree install 目录树状结构工具安装

    http://futeng.iteye.com/blog/2071867 http://zhou123.blog.51cto.com/4355617/1196415 wget ftp://mama.i ...

  5. python的文件处理学习笔记

    python的文件处理函数是open() 以下主要是关于这个函数的一些学习笔记 1.文件处理离不开编码 要注意的是文件打开时的编码和文件保存时的编码的统一,这样才能保证你打开的文件不会存在乱码 总结: ...

  6. SQL判断字符类型是否为数字

    用ISNUMERIC函数 确定表达式是否为一个有效的数字类型. 语法 ISNUMERIC ( expression ) 参数 expression 要计算的表达式. 返回类型 int 注释 当输入表达 ...

  7. Hexo+yilia添加helper-live2d插件宠物动画,很好玩的哦~~

    个人主页:https://www.yuehan.online 现在博客:www.wangyurui.top 安装模块: 博客根目录选择cmd命令窗口或者git bash 输入以下代码,安装插件 操作: ...

  8. 002-基本业务搭建【日志,工具类dbutils,dbcp等使用】

    一.需求分析 1.1.概述 1.用户进入“客户管理”,通过列表方式查看用户: 2.客户名称,模糊查询用户列表 3.客户名称,可查看客户详细信息 4.新增.编辑.删除功能等 二.系统设计 需要对原始需求 ...

  9. mysql学习笔记—常用sql函数

    SQL 拥有很多可用于计数和计算的内建函数. SQL Aggregate 函数 SQL Aggregate 函数计算从列中取得的值,返回一个单一的值. 有用的 Aggregate 函数: AVG() ...

  10. numpy的random模块详细解析

    随机抽样 (numpy.random) 简单的随机数据 rand(d0, d1, ..., dn) 随机值 >>> np.random.rand(3,2) array([[ 0.14 ...