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

时间:2018-06-14 06:57:33

标签: qt qt5 qwidget qt5.9

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

1 个答案:

答案 0 :(得分:0)

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

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

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