是否有可能在绘制其他Qt组件后强制Qt调用paintEvent?

时间:2011-04-18 14:06:40

标签: c++ qt

我有一个扩展QWidget并包含QLabel( lblBackground )的类。我也覆盖了paintEvent函数。

我想在 lblBackground 之上绘制一些东西,但是在绘制QLabel之前调用paintEvent方法。因此我的自定义绘图被覆盖。

有没有办法改变绘图顺序?

2 个答案:

答案 0 :(得分:2)

将孩子画在父母之上是常见的事情。话虽如此,您可以尝试以下选项之一:

  1. 扩展QLabel本身以绘制任何你想要的东西
  2. 尝试在Qt::WA_TranslucentBackground上设置QLabel标记,并设置一个Alpha通道,以便底层父级(QWidget)能够通过
  3. 如果您只是使用QLabel绘制一些背景,也许您可​​以摆脱它并在QWidget的paintEvent()中首先绘制所需的背景?

答案 1 :(得分:1)

如果您想使用标签作为背景,那么只需将自定义小部件创建为标签的子级。可以拆分一些与窗口框架相关的任务(如果有的话)(作为标签的父级实现)和drawing / controls / etc(作为标签的子级)。