Как активировать альфа-канал с помощью таблиц стилей Qt4? - PullRequest
2 голосов
/ 28 августа 2011

Я просмотрел документацию для таблиц стилей Qt и обнаружил, что могу изменить цвет фона своих виджетов и даже установить прозрачность .

Вот фрагмент кода, который должен - по моему мнению - работать:

application = QtGui.QApplication(sys.argv)
application.setStyleSheet(QtCore.QString('MainWindow {background-color: rgba(20, 0, 0, 75%)}'))

И действительно, он работает до такой степени, что цвет фона окна изменяется на соответствующие значения RGB. Однако, насколько я могу судить, альфа-значение не влияет на мое приложение.

РЕДАКТИРОВАТЬ: Я понимаю, что альфа-канал работает сейчас, только фон приложения или холст (я не уверен, как я должен это назвать) черный. Мне нужно сделать это прозрачным, а не основным виджетом. Как мне этого добиться?

Примечание: я работаю на Ubuntu 11.04 с Gnome (но должно ли это иметь значение?).

Ответы [ 3 ]

1 голос
/ 30 августа 2011

У меня также есть проблемы с этим кодом widget.setStyleSheet("background-color: rgba(20, 0, 0, 75%);"), но когда я перехожу на что-то вроде widget.setStyleSheet("background-color: rgba(255, 0, 0, 75%);"), это работает.

1 голос
/ 28 августа 2011

Я нашел один ответ в другом месте на SO , но теги не привели к тому, что он встретился с ним. Поэтому я собираюсь ответить на свой вопрос здесь:

Таблица стилей Qt обеспечит прозрачность только для виджетов, но они нарисованы на черном холсте. Чтобы сделать этот холст прозрачным, атрибут основного виджета должен быть изменен следующим образом:

self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)

Это, однако, обеспечивает только радикальное решение: все окно прозрачно, но нет способа установить частичную прозрачность, подобную этой. Так что я не совсем доволен этим ответом.

0 голосов
/ 29 августа 2011

Для виджетов с родителями (как в вашем случае) вы можете использовать setMask и предоставить маску с альфа-каналом. Его особенно полезно для виджетов неправильной формы.

...