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

如何实现widget某个区域不被刷新

2
回复
8341
查看
[复制链接]
累计签到:311 天
连续签到:1 天
来源: 2017-12-21 11:23:31 显示全部楼层 |阅读模式
30Qter豆
1,我找些资料,有个函数 void QWidget::erase ( int x, int y, int w, int h ),但是在qt5.5已经找不到了。

2,问题在下图中,一个widget,上面有两个控件子对象,控件1,控件2,还有禁止刷新区域(黄色部分)。现在控件1与控件2同时定时刷新,对于Widget(父对象)蓝色部分整体刷新。
有什么方法,在控件1与2正常刷新的的情况下,黄色区域不刷新。

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-2-9 18:20:44 显示全部楼层
你覆盖父窗口的paintEvent事件,然后计算出除了黄色区域之外的三个矩形,即上,左,下三个矩形。然后手动调用
QPaintEvent:PaintEvent(const QRect &paintRect) 函数:
http://doc.qt.io/qt-5/qpaintevent.html#region

特别注意,在手动调用以后,就不要让它继续向上传递了。怎么样不传递,大概是这样写:
    event->ignore();

点评

不知怎么给豆。 这个问题后来解决的方法是用repaint代替update,因为update的特性是,会把一定时间内的绘制区域合并到一起,repain()直接刷新  详情 回复 发表于 2018-3-1 12:20
回复

使用道具 举报

累计签到:311 天
连续签到:1 天
2018-3-1 12:20:20 显示全部楼层
stlcours 发表于 2018-2-9 18:20
你覆盖父窗口的paintEvent事件,然后计算出除了黄色区域之外的三个矩形,即上,左,下三个矩形。然后手动调 ...

不知怎么给豆。
这个问题后来解决的方法是用repaint代替update,因为update的特性是,会把一定时间内的绘制区域合并到一起,repain()直接刷新
回复

使用道具 举报

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

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