【问题标题】:Is it possible force Qt to call paintEvent after other Qt components are drawn?绘制其他 Qt 组件后是否可以强制 Qt 调用paintEvent?
【发布时间】:2011-04-18 23:09:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2020-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多