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

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

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

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

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

NB: я работаю на Ubuntu 11.04 с Gnome (но разве это важно?).

2
neydroydrec 28 Авг 2011 в 18:56

3 ответа

Лучший ответ

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

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

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

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

1
Community 23 Май 2017 в 12:31

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

1
dkakibatu 30 Авг 2011 в 05:19

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

0
Neox 29 Авг 2011 в 11:31