如何在Qt中的小部件下绘制阴影?

Ale*_*aru 6 c++ user-interface qt widget shadow

我想知道如何在Qt中的小部件(不是主要小部件,比如标签.)下绘制阴影.我需要使用样式表还是我会编写它(用C++编写)?

Iul*_*liu 5

假设您有一个要从中投射阴影的表单和标签.

您可以像这样使用QGraphicsDropShadowEffect:

QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect;
effect->setBlurRadius(5);
effect->setXOffset(5);
effect->setYOffset(5);
effect->setColor(Qt::black);

label->setGraphicsEffect(effect);
Run Code Online (Sandbox Code Playgroud)

效果将是:

在此输入图像描述

这种效果的缺点是,如果将其应用于窗口小部件,其所有子窗口都将继承它.如果将效果应用于具有大量小部件的窗口小部件,则可能会出现问题,因为这可能会减慢渲染时间.但对于你的例子,这是完全正常和推荐.

有关Qt检查效果的更多信息,还可以从中派生QGraphicsEffectQGraphicsDropShadowEffect.


Luc*_*lon 0

QLabel 继承自QFrame。您可以使用它来创建阴影。