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

想调用QPainter类的接口来画图,只能在 paintEvent 中调用吗?

3
回复
11278
查看
[复制链接]
累计签到:11 天
连续签到:1 天
来源: 2015-7-16 11:55:08 显示全部楼层 |阅读模式
4Qter豆
如题, 为啥不能在 QWidget 的其他函数里直接调用 QPainter 的 drawLine 等接口?  非要在 paintEvent 中调用? 其中的原因何在,哪位大侠可以解释下?

最佳答案

查看完整内容

在其他函数中是可以调用的,但是只有在paintEvent中可以进行实际的绘制,因为界面绘制是通过重绘事件完成的,而重绘事件的处理函数是paintEvent。比如定时器事件,只能在timerEvent中设置一个道理。
回复

使用道具 举报

累计签到:1632 天
连续签到:2 天
2015-7-16 11:55:09 显示全部楼层
在其他函数中是可以调用的,但是只有在paintEvent中可以进行实际的绘制,因为界面绘制是通过重绘事件完成的,而重绘事件的处理函数是paintEvent。比如定时器事件,只能在timerEvent中设置一个道理。
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2015-7-17 16:40:07 显示全部楼层
明白了。也就是说,可以在其他函数中调用,但效果的显示则是在 界面重绘时才能体现,也就是在 paintEvent 被调用之后才能实现。回头做个实验再验证下。多谢解答。
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-7-24 13:40:03 显示全部楼层
another_qt 发表于 2015-7-17 16:40
明白了。也就是说,可以在其他函数中调用,但效果的显示则是在 界面重绘时才能体现,也就是在 paintEvent  ...

paintEvent函数一般是在窗口需要重绘的时候调用,也就是说,你在其他函数中绘制的图形,可能被paintEvent函数中绘制的图形覆盖掉。
回复

使用道具 举报

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

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