如何使自定义QWidget部分透明?



我是Qt的新手。我有一个自定义QWidget.如果其(X坐标+宽度(值大于特定值;比如说 Z,那么我希望QWidget在坐标 Z 之前可见,在 Z 之后不可见或透明。Qt是否专门提供任何属性?有人可以给我一个关于如何处理它的提示。

一种方法是使用Source合成模式使用透明画笔进行显式覆盖。为此,需要将顶级小部件设置为允许半透明,然后覆盖整个顶级小部件的子覆盖小部件将在需要时覆盖透明度。

另一种方法是使用带有自定义模拟框架的无框架小部件,并将所有子小部件保存在子小部件中,子小部件是顶级小部件中的子小部件,顶级小部件上没有布局管理器。顶层将有效地夹住所有的孩子,并像窗户一样照射到他们身上。需要为顶级设置一个特殊的调整大小处理程序来管理子小部件的大小和位置,以及顶级的大小。最小垂直大小约束需要从子小部件传播到顶级小部件。

这两种方法都应该相对容易实现(<100行(。

最新更新