QT Transparent Layout - PullRequest
       11

QT Transparent Layout

3 голосов
/ 05 июня 2010

Я использую вертикальную раскладку (QVBoxLayout) для управления кнопками. Я хотел бы сделать его цвет фона прозрачным на 50%. Возможно ли это?

SW

Ответы [ 2 ]

4 голосов
/ 06 июня 2010

В зависимости от того, где вы хотите установить границы прозрачной области, вам нужно сгруппировать кнопки в виджете (как сказал SigTerm), а затем вы можете назначить цвет либо с помощью палитры

QPalette palette = widget->palette();
palette.setColor(QPalette::Window, QColor(100,100,100,100));
widget->setPalette(palette);

или используйте таблицу стилей

widget->setStylesheet("QWidget{background-color: rgba(100,100,100,100);}";

Преимущество таблицы стилей заключается в том, что вы можете стилизовать все свое приложение из одного места, которого нет в коде, и задать таблицу стилей для всего приложения с помощью QApplication::setStylesheet(QString)

2 голосов
/ 05 июня 2010

Гм ... прошло много времени с тех пор, как я использовал Qt, но, насколько я знаю, у QVBoxLayout нет цвета фона, так что нет, это невозможно. Макет не является виджетом, и он вообще не рисуется, он только управляет размерами дочерних виджетов.

Если вы хотите создать цветной макет, вам, вероятно, придется создать виджет с любым цветом, который вы хотите, а затем родительский QVBoxLayout для этого виджета.

Будет интереснее, если вы захотите, чтобы цвет дочерних элементов макета зависел от цвета родительского элемента QVBoxLayout, но я думаю, что демонстрация "Embedded Dialogs" из демонстрации Qt4 может дать вам представление о том, как это сделать.

...