Можно реализовать свой класс окна и переопределить в нем метод отрисовки в котором в качестве фона выводить изображение с альфа каналом нужной прозрачности.
Любой виджет и так (неявно) - изображение. Поэтому достаточно в paintEvent привязать к нему QPainter'а и закрасить в (полу)прозрачный цвет.
C++ (Qt)
void TransparentWidget::paintEvent(QPaintEvent *event)
{
QPainter p(this);
p.fillRect(event->rect(), Qt::transparent);
p.end();
}
При этом, если виджет выступает в роли главного окна приложения, надо включить ему атрибут setAttribute(Qt::WA_TranslucentBackground, true), и убрать системную рамку setWindowFlags(Qt::FramelessWindowHint).