Я просмотрел документацию по таблицам стилей Qt и обнаружил, что могу изменить фон цвет моих виджетов и даже установить прозрачность.
Вот фрагмент кода, который, по моему мнению, должен работать:
application = QtGui.QApplication(sys.argv)
application.setStyleSheet(QtCore.QString('MainWindow {background-color: rgba(20, 0, 0, 75%)}'))
И действительно, это работает постольку, поскольку цвет фона окна изменяется на соответствующие значения RGB. Однако, насколько я могу судить, значение альфа не влияет на мое приложение.
РЕДАКТИРОВАТЬ: Я понимаю, что альфа-канал сейчас работает, только фон или холст приложения (я не уверен, как его назвать) черные. Мне нужно сделать этот виджет прозрачным, а не основной. Как я могу этого добиться?
NB: я работаю на Ubuntu 11.04 с Gnome (но разве это важно?).
3 ответа
Я нашел один ответ в другом месте на SO, но теги не встретились к нему в первую очередь. Итак, я собираюсь ответить на свой вопрос здесь:
Таблица стилей Qt обеспечит прозрачность только для виджетов, но они нарисованы на черном холсте. Чтобы сделать этот холст прозрачным, нужно изменить атрибут основного виджета следующим образом:
self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
Однако это обеспечивает только радикальное решение: все окно прозрачно, но нельзя установить подобную частичную прозрачность. Так что я не совсем удовлетворен этим ответом.
У меня тоже есть проблемы с этим кодом widget.setStyleSheet("background-color: rgba(20, 0, 0, 75%);")
, но когда я меняю на что-то вроде этого widget.setStyleSheet("background-color: rgba(255, 0, 0, 75%);")
, это сработало.
Для виджетов с родителями (как в вашем случае) вы можете использовать setMask и укажите маску с альфа-каналом. Это особенно полезно для виджетов неправильной формы.
Похожие вопросы
Связанные вопросы
Новые вопросы
css
CSS (каскадные таблицы стилей) - это язык таблиц стилей представления, используемый для описания внешнего вида и форматирования документов HTML (язык разметки гипертекста), XML (расширяемый язык разметки) и элементов SVG, включая (но не ограничиваясь) цвета, макет, шрифты, и анимации. Также описывается, как элементы должны отображаться на экране, на бумаге, в речи или на других носителях.