Можно ли заставить Qt вызывать paintEvent после отрисовки других компонентов Qt? - PullRequest
1 голос
/ 18 апреля 2011

У меня есть класс, который расширяет QWidget и содержит QLabel ( lblBackground ). Я также переопределил функцию paintEvent.

Я хочу нарисовать что-то поверх lblBackground , однако метод paintEvent вызывается до рисования QLabel. Таким образом, мои пользовательские рисунки перезаписываются.

Есть ли способ изменить порядок рисования?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Рисовать детей поверх своих родителей - обычное дело. При этом вы можете попробовать один из следующих вариантов:

  1. расширите сам QLabel, чтобы рисовать все, что вы хотите
  2. попробуйте установить флаг Qt::WA_TranslucentBackground на QLabel и иметь альфа-канал, чтобы нижележащий родительский элемент (QWidget) просвечивал через
  3. если вы используете QLabel только для рисования некоторого фона, может быть, вы можете избавиться от него и сначала нарисовать желаемый фон в QWidget paintEvent()?
1 голос
/ 18 апреля 2011

Если вы хотите использовать метку в качестве фона, просто создайте свой собственный виджет как дочерний элемент вашей метки. Могут быть разделены некоторые задачи, связанные с оконным фреймом, если таковые имеются (для реализации в качестве родителя метки) и на рисование / элементы управления / и т. Д. (Для дочерних элементов метки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...