You can create your own effect. I will share an implementation that works.
customshadoweffect.h
#ifndef CUSTOMSHADOWEFFECT_H #define CUSTOMSHADOWEFFECT_H #include <QGraphicsDropShadowEffect> #include <QGraphicsEffect> class CustomShadowEffect : public QGraphicsEffect { Q_OBJECT public: explicit CustomShadowEffect(QObject *parent = 0); void draw(QPainter* painter); QRectF boundingRectFor(const QRectF& rect) const; inline void setDistance(qreal distance) { _distance = distance; updateBoundingRect(); } inline qreal distance() const { return _distance; } inline void setBlurRadius(qreal blurRadius) { _blurRadius = blurRadius; updateBoundingRect(); } inline qreal blurRadius() const { return _blurRadius; } inline void setColor(const QColor& color) { _color = color; } inline QColor color() const { return _color; } private: qreal _distance; qreal _blurRadius; QColor _color; }; #endif // CUSTOMSHADOWEFFECT_H
customshadoweffect.cpp
#include "customshadoweffect.h"
Application (to graphic element):
// ... CustomShadowEffect *bodyShadow = new CustomShadowEffect(); bodyShadow->setBlurRadius(20.0); bodyShadow->setDistance(6.0); bodyShadow->setColor(QColor(0, 0, 0, 80)); item->setGraphicsEffect(bodyShadow); // ...
Application to child widget:
//... CustomShadowEffect *bodyShadow = new CustomShadowEffect(); bodyShadow->setBlurRadius(20.0); bodyShadow->setDistance(6.0); bodyShadow->setColor(QColor(0, 0, 0, 80)); ui->widget->setAutoFillBackground(true); ui->widget->setGraphicsEffect(bodyShadow); // ...
Result: 
source share