Как бы я нарисовал тень под виджетом в Qt?

Мне интересно, как бы я нарисовал тень под виджетом (который не является основным виджетом, скажем, надписью) в Qt. Нужно ли мне использовать таблицу стилей или я буду ее кодировать (в C ++)?

6

Решение

Скажем, у вас есть форма и метка, от которой вы хотите отбросить тень.

Ты можешь использовать QGraphicsDropShadowEffect вот так:

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

label->setGraphicsEffect(effect);

И эффект будет:

введите описание изображения здесь

Недостатком этого эффекта является то, что если вы примените его к виджету, все его потомки будут наследовать его. Это может быть проблематично, если вы примените эффект к виджету с большим количеством виджетов, потому что это может замедлить время рендеринга. Но для вашего примера это прекрасно и рекомендуется.

Для получения дополнительной информации об эффектах в Qt проверить QGraphicsEffect класс из которого QGraphicsDropShadowEffect также выводится.

5

Другие решения

QLabel наследует от QFrame. Вы можете использовать это для создания теней.

0

По вопросам рекламы [email protected]