7

I am wondering how I would draw a shadow under a widget (which isn't the main widget, say, a label.) in Qt. Would I neeed use a stylesheet or would I code it (in C++)?

4

2 回答 2

9

假设你有一个表格和一个标签,你想从中投下阴影。

您可以像这样使用QGraphicsDropShadowEffect

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

label->setGraphicsEffect(effect);

效果是:

在此处输入图像描述

这种效果的缺点是,如果你将它应用到一个小部件上,它的所有子级都会继承它。如果您将效果应用于具有大量小部件的小部件,这可能会出现问题,因为它可能会减慢渲染时间。但是对于您的示例,这非常好并且推荐。

有关效果的更多信息,Qt请查看同样派生自的QGraphicsEffect类。QGraphicsDropShadowEffect

于 2014-10-11T15:59:34.950 回答
0

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

于 2012-09-08T08:54:48.783 回答