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

Is it possible force Qt to call paintEvent after other Qt components are drawn?

本文关键字:Qt 调用 paintEvent 组件 有可能 绘制 其他 是否      更新时间:2023-10-16

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

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

有办法改变图纸顺序吗?

把孩子画在他们父母的上面是很常见的事情。也就是说,您可以尝试以下选项之一:

  1. 扩展QLabel本身来绘制任何你想要的
  2. 尝试在QLabel上设置Qt::WA_TranslucentBackground标志并具有alpha通道,以便底层父(QWidget)将通过
  3. 发光。
  4. 如果你只使用QLabel绘制一些背景,也许你可以摆脱它,并在QWidget的paintEvent()中首先绘制所需的背景?

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