如何将小部件剪辑到屏幕上的特定区域?

时间:2015-12-03 12:40:56

标签: qt qtwidgets

假设我在屏幕上有一个用全局屏幕坐标定义的区域。有一个移动到该区域的小部件(顶级窗口)(使用标准动画技术)。我想剪掉小部件恰好位于屏幕定义区域之外的部分,直到它完全进入该区域,即我只希望在该矩形内绘制小部件。

一种可能的次优解决方案是每当窗口小部件位置发生变化时调用update(),然后在paintEvent中我可以在QPainter上计算和设置相关的局部剪切。然而,仅仅因为它在屏幕上移动而重绘整个窗口是非常低效的。 基本上我的问题归结为是否可以在小部件上设置全局剪辑区域?

1 个答案:

答案 0 :(得分:0)

我认为全局剪辑是不可能的。但是,如果您担心频繁重绘,并且您的小部件内容不会经常更改,或者您永远不能在QPixmap之外的paintEvent()内绘制。在paintEvent()中,在计算剪裁区域后,您只需使用' QPainter :: drawPixmap()`来快速绘制内容。这应该有助于解决任何性能问题。