假设我在屏幕上有一个用全局屏幕坐标定义的区域。有一个移动到该区域的小部件(顶级窗口)(使用标准动画技术)。我想剪掉小部件恰好位于屏幕定义区域之外的部分,直到它完全进入该区域,即我只希望在该矩形内绘制小部件。
一种可能的次优解决方案是每当窗口小部件位置发生变化时调用update(),然后在paintEvent中我可以在QPainter上计算和设置相关的局部剪切。然而,仅仅因为它在屏幕上移动而重绘整个窗口是非常低效的。 基本上我的问题归结为是否可以在小部件上设置全局剪辑区域?
答案 0 :(得分:0)
我认为全局剪辑是不可能的。但是,如果您担心频繁重绘,并且您的小部件内容不会经常更改,或者您永远不能在QPixmap
之外的paintEvent()
内绘制。在paintEvent()
中,在计算剪裁区域后,您只需使用' QPainter :: drawPixmap()`来快速绘制内容。这应该有助于解决任何性能问题。