Мне интересно, как бы я нарисовал тень под виджетом (который не является основным виджетом, скажем, надписью) в Qt. Нужно ли мне использовать таблицу стилей или я буду ее кодировать (в C ++)?
Скажем, у вас есть форма и метка, от которой вы хотите отбросить тень.
Ты можешь использовать QGraphicsDropShadowEffect вот так:
QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect;
effect->setBlurRadius(5);
effect->setXOffset(5);
effect->setYOffset(5);
effect->setColor(Qt::black);
label->setGraphicsEffect(effect);
И эффект будет:
Недостатком этого эффекта является то, что если вы примените его к виджету, все его потомки будут наследовать его. Это может быть проблематично, если вы примените эффект к виджету с большим количеством виджетов, потому что это может замедлить время рендеринга. Но для вашего примера это прекрасно и рекомендуется.
Для получения дополнительной информации об эффектах в Qt
проверить QGraphicsEffect класс из которого QGraphicsDropShadowEffect
также выводится.
QLabel наследует от QFrame. Вы можете использовать это для создания теней.