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

Qt 如何将小部件剪辑到屏幕上的特定区域?,qt,qtwidgets,Qt,Qtwidgets,假设屏幕上有一个区域是用全局屏幕坐标定义的。有一个小部件(顶级窗口)移动到该区域(使用标准动画技术)。我想剪掉小部件中恰好位于屏幕定义区域之外的部分,直到它完全进入该区域,也就是说,我只希望小部件绘制在该矩形内 一个可能的次优解决方案是,每当小部件位置发生变化时调用update(),然后在paintEvent中,我可以计算并设置QPainter上的相关局部剪辑。然而,仅仅因为整个窗口在屏幕上移动就重新绘制它是非常低效的。 本质上,我的问题归结为是否可以在小部件上设置全局剪辑区域?我认为全局剪辑是

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

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

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