我有一个扩展QWidget并包含QLabel( lblBackground )的类。我也覆盖了paintEvent函数。
我想在 lblBackground 之上绘制一些东西,但是在绘制QLabel之前调用paintEvent方法。因此我的自定义绘图被覆盖。
有没有办法改变绘图顺序?
答案 0 :(得分:2)
将孩子画在父母之上是常见的事情。话虽如此,您可以尝试以下选项之一:
Qt::WA_TranslucentBackground
上设置QLabel
标记,并设置一个Alpha通道,以便底层父级(QWidget
)能够通过QLabel
绘制一些背景,也许您可以摆脱它并在QWidget的paintEvent()
中首先绘制所需的背景?答案 1 :(得分:1)
如果您想使用标签作为背景,那么只需将自定义小部件创建为标签的子级。可以拆分一些与窗口框架相关的任务(如果有的话)(作为标签的父级实现)和drawing / controls / etc(作为标签的子级)。