首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新QWidget

刷新QWidget
EN

Stack Overflow用户
提问于 2015-06-09 17:58:01
回答 2查看 52K关注 0票数 17

这个问题我已经遇到过很多次了。

当我在widget.show()之后修改QWidget的某些属性时,小部件不会更新。大多数情况下,单击鼠标或当鼠标离开或进入小部件时,小部件将被更新。但是,如果我离开鼠标,它不会自动刷新。

到目前为止,我设法通过做以下事情来处理这个问题:

代码语言:javascript
复制
widget.hide()
widget.show()

但这是一个非常肮脏的修复方法。有没有更好的方法来告诉python刷新小部件?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-09 18:12:02

要更新小部件,您应该对其执行repaint(),但直接调用repaint()并不是很好,因此请尝试:

代码语言:javascript
复制
widget.update()

From doc:

此函数不会立即重新绘制;相反,它会调度一个绘制事件,以便在Qt返回到主事件循环时进行处理。这允许Qt进行优化以获得比调用repaint()更快的速度和更少的闪烁。

多次调用update()通常只会导致一次paintEvent()调用。

Qt通常会在paintEvent()调用之前擦除小部件的区域。如果设置了Qt::WA_OpaquePaintEvent小部件属性,则小部件负责将其所有像素绘制为不透明颜色。

票数 28
EN

Stack Overflow用户

发布于 2015-06-09 18:12:20

你已经试过QWidget.update()了吗?

此函数仅更新可见部分,保持不可见部分不变。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30728820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档