找回密码
 立即注册
收起左侧

QPainter怎么绘制动态表

4
回复
8663
查看
[复制链接]
累计签到:67 天
连续签到:1 天
来源: 2015-12-28 17:11:15 显示全部楼层 |阅读模式
5Qter豆
动态列表生成共需要6分钟,列表每隔2分钟更新一次,想每更新完一次,即过完2分钟,就用Qpainter事件绘制动态表的内容,可是实际上,6分钟后,动态表完全生成后,才会动态表的内容,中间空等了6分钟。。。。
打印了一 下,QPainter事件是每隔一个时隙就执行一次,Qpainter事件是独立线程运行的吗?还是占用主线程?


回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-12-28 17:47:21 显示全部楼层
你可以调用update()或者Repaint()进行强制刷新。Qt绘图有缓冲机制的。

点评

函数里有调用Update(),可是还是等到动态列表完全生成完,才开始绘图。  详情 回复 发表于 2015-12-29 09:59
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-12-28 17:48:18 显示全部楼层
void QWidget::repaint () [slot]
Repaints the widget directly by calling paintEvent() immediately, unless updates are disabled or the widget is hidden.

We suggest only using repaint() if you need an immediate repaint, for example during animation. In almost all circumstances update() is better, as it permits Qt to optimize for speed and minimize flicker.

Warning: If you call repaint() in a function which may itself be called from paintEvent(), you may get infinite recursion. The update() function never causes recursion.
回复

使用道具 举报

累计签到:67 天
连续签到:1 天
2015-12-29 09:59:00 显示全部楼层
sywh 发表于 2015-12-28 17:47
你可以调用update()或者Repaint()进行强制刷新。Qt绘图有缓冲机制的。

函数里有调用Update(),可是还是等到动态列表完全生成完,才开始绘图。
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-12-29 10:29:03 显示全部楼层
如果一定要实时刷新,调用Repiant()吧,这个函数是立刻刷新
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了