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

时间:2012-09-08 05:22:19

标签: c++ qt user-interface widget shadow

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

2 个答案:

答案 0 :(得分:5)

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

你可以这样使用QGraphicsDropShadowEffect

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

label->setGraphicsEffect(effect);

效果将是:

enter image description here

此效果的缺点是,如果将其应用于窗口小部件,其所有子窗口都将继承它。如果将效果应用于具有大量小部件的窗口小部件,则可能会出现问题,因为这可能会减慢渲染时间。但是对于你的例子来说,这非常好并且值得推荐。

有关Qt中效果的详细信息,请查看QGraphicsDropShadowEffect类,其中{{1}}也来自。{/ p>

答案 1 :(得分:0)

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