Qt 3 затемнение нижних окон

mdlv

New member
03.09.2014
1
0
#1
Добрый день!
В приложении открывается множество форм типа QWidget. Задача: сделать затемнение неактивных окон, чтобы к ним не было доступа, а работа велась только с активным. Я пытаюсь сделать эт при помощи отдельного QWidget и задать ему степень прозрачности, при вызове новой формы показывать этот виджет, а затем поверх него отображать нужное активное окно.
Проблема в том, что не получается сделать виджет прозрачным.
Пробовал так:
C++:
QWidget* fr = new QWidget(0,0, Qt::WType_Modal | Qt::TransparentMode);
fr->setActiveWindow(); 
fr->show();
Так:
C++:
 fr->setStyle("background-color: rgba(0, 0, 0, 30%)");
И вот так:
C++:
 fr->setStyle("background:rgba(0,0,0,70%)");
И так:
C++:
setWindowOpacity(0.5);
Пытаюсь безуспешно найти аналог в qt3 для
C++:
setAttribute(Qt::WA_TranslucentBackground);
Пробовал через QPalette:
C++:
QPalette palette = fr->palette();
QColor color = palette.color(QPalette::Normal, QColorGroup::Background);
QRgb rgb = qRgba(color.red(), color.green(), color.blue(), 130);
palette.setColor(QPalette::Normal, QColorGroup::Background, rgb);
fr->setPalette(palette);
и через Pixmap с png, который имеет степень прозрачности:
C++:
QPixmap qp;
qp.load(dir + "mask.png");
ft->setPixmap(qp);
Может, есть какие-то методы или флаги для прозрачности? Или предложите, пожалуйста, другой способ решения задачи - как сделать эффект затемнения нижних окон, оставив только одно текущее? При этом затемненные окна не должны реагировать на любые нажатия, но фоновые процессы в приложении не должны блокироваться, как при exec() с QDialog, например. Заблокировать нажатия на нижнии окна удалось, используя при создании окна флаг Qt::WType_Modal, единственная проблема - отсутствие затемнения и нижнии неактивные формы все равно можно перетаскивать и изменять их размеры, а этого быть не должно. Эффект затемнения в принципе можно сделать, временно изменив цветовую палитру нижних окон... Но как убрать ресайзинг и пететаскивание?

Заранее спасибо за любые подсказки и решения!