C&C++   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Qt update刷新之源码分析(二)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

大家好,我是IT文艺男,来自一线大厂的一线程序员

上次视频给大家从源码层面剖析了Qt update刷新机制的异步事件投递过程,这次视频主要从源码层面剖析Qt刷新事件(QEvent::updaterequest)的处理过程

我们追踪QEvent::updaterequest事件处理,进入消息通知流程,即QApplication::notify(QObject *receiver, QEvent *E)函数(没有对QEvent::updaterequest事件进行处理),进一步由QApplicationPrivate::notify_Helper(QObject *receiver, QEvent * E)函数处理;如下图所示::

Qt update刷新之源码分析(二)

函数主体内容如下::
1、application的事件过滤器处理,即全局的事件过滤处理
2、receiver的事件过滤器处理,即当前窗口的事件过滤处理
3、调用receiver的event函数处理,即当前窗口的事件处理

receiver的event函数不做处理,如下图所示::

@H_616_32@

其调用父类的event函数,即bool QWidget::event(QEvent *event)函数,该函数中针对事件类型进行处理(switch casE),如下图所示::

Qt update刷新之源码分析(二)

对于QEvent::updaterequest事件,则调用syncBACkingStore函数,如下图所示::

Qt update刷新之源码分析(二)

函数主体内容如下::
1、获取tlw的QWidgetBACkingStore
2、调用sync函数

Qt update刷新之源码分析(二)

Qt update刷新之源码分析(二)

QWidgetBACkingStore::doSync函数中调用tlw->d_func()->drawWidget(store->paintDevice(), dirtyCopy, QPoint(), flags, 0, this);函数进行绘制,函数的第一个参数是获取绘制设备,各个平台返回自己的绘制设备,例如对于Windows平台

Qt update刷新之源码分析(二)

qwindowsBACkingstore.cpp文件位于qtbase\src\plugins\platforms\windows目录;

今天就讲解到这里,总结下整体思路即是从事件处理到绘制的过程分析,很清晰;
下次视频进行源码剖析Qt update刷新机制的绘制过程;谢谢

大佬总结

以上是大佬教程为你收集整理的Qt update刷新之源码分析(二)全部内容,希望文章能够帮你解决Qt update刷新之源码分析(二)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: