【发布时间】:2011-04-18 23:09:54
【问题描述】:
我有一个扩展 QWidget 并包含 QLabel (lblBackground) 的类。我也重写了paintEvent函数。
我想在 lblBackground 上绘制一些东西,但是在绘制 QLabel 之前调用了 paintEvent 方法。因此,我的自定义图纸被覆盖了。
有没有办法改变绘图顺序?
【问题讨论】:
我有一个扩展 QWidget 并包含 QLabel (lblBackground) 的类。我也重写了paintEvent函数。
我想在 lblBackground 上绘制一些东西,但是在绘制 QLabel 之前调用了 paintEvent 方法。因此,我的自定义图纸被覆盖了。
有没有办法改变绘图顺序?
【问题讨论】:
将孩子画在父母身上是很常见的事情。话虽如此,您可以尝试以下选项之一:
QLabel 上设置Qt::WA_TranslucentBackground 标志并使用alpha 通道,以便底层父级(QWidget) 发光QLabel 来绘制一些背景,也许您可以摆脱它并首先在QWidget 的paintEvent() 中绘制所需的背景?【讨论】:
如果您想使用标签作为背景,那么只需将您的自定义小部件创建为标签的子项。可能会拆分一些与窗口框架相关的任务(如果有)(作为标签的父级实现)和绘图/控件/等(作为标签的子级)。
【讨论】: