Сделайте QT Widgets полупрозрачными - PullRequest
13 голосов
/ 15 сентября 2011

Я работаю с элементами QWidget, которые содержат дочерние элементы, мне нужен какой-то способ сделать этот виджет полупрозрачным, полностью, включая его дочерние элементы.

Я видел метод для QWidgets, который называется QWidget :: setWindowOpacity (), но он работает, только если виджет сам является окном, и в моем случае этот виджет является частью макета.

Цель всего этого - дать мне возможность заставить этот виджет исчезать при появлении или исчезновении.

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

1 Ответ

32 голосов
/ 16 сентября 2011

Вы можете использовать QGraphicsOpacityEffect .

Пример фрагмента кода для прозрачности 50% будет:

ui->setupUi(this);
QGraphicsOpacityEffect * effect = new QGraphicsOpacityEffect(ui->pushButton);
effect->setOpacity(0.5);
ui->pushButton->setGraphicsEffect(effect);
...