qt repaint 用法_浅谈QT中窗口刷新事件

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:39   1600   0

经过一个星期的项目初步开发,写此文就开发时遇到的一些常见问题,给出些资料和自己的观点,希望能给其他的初学者或者参赛的选手一点帮助,当然,也算是一种抛砖引玉,大家有什么好的技巧经验什么的,也能多多分享,借助这次比赛,我们共同进步~

如果大家都是跟我一样,刚刚开始接触QT,开始开发QT的程序,肯定也会有很多不习惯的地方,今天我重点想谈的就是这么一个不习惯的地方——QT中窗口刷新事件。

对于窗体刷新事件,我主要谈一下paintevent的使用,我猜也许很多人初次使用这个的时候,也跟我一样一头雾水,搞不懂这个是在什么时候被调用的,现在我来简单说明一下。

void QWidget::paintEvent ( QPaintEvent * )

如果不了解它的原理,任意找个例子程序你也是很难找到什么时候它被调用的痕迹的。

Paint这个事件只要是窗体部件需要被重绘了就会被调用,是由窗体系统产生的,但要求程序重画窗体部件的时候,事件循环就会从事件队列里面选中这个事件并把它分发到那个需要重画的widget中。并不是所有的paint事件都是由窗口系统产生的,通过repaint()或update()你也可以使用它。但是,需要知道的是,就算你很不耐烦,想直接调用paintEvent(),这是不可能的,因为paintEvent()函数是 protected的(很可能访问不了)。它也绕开了任何存在的事件过滤器。因为这些原因,Qt提供了一个机制,直接sending事件而不是 posting 。

不过,需要注意的是,有时候update()执行后不一定会直接转到paintEvent。为什么会这样&#x

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP