Qt: Родительский класс Widget должен что-то нарисовать в дополнение к виджету дочернего класса - PullRequest
1 голос
/ 19 февраля 2011

Все больше и больше это кажется философским Qt вопросом:

У меня есть виджет, представляющий окно A. У меня есть виджет, представляющий окно, производное от A, называемое B.

B рисует свои вещи, но я хочу, чтобы A добавил немного рисунка, например, рисует изображение НАД тем, что рисует B. Я хочу, чтобы B совершенно не знал об этом, не имея необходимости сотрудничать с A, кроме как происходить из него.

Это возможно?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2011

Переопределить event() в A:

bool A::event ( QEvent * e)
{
  bool handled = QWidget::event(e);
  if(e->type() == QEvent::Paint) {
    // cast e to QPaintEvent and do the overlay painting
  }
  return handled;
}
0 голосов
/ 19 февраля 2011

Я не эксперт по QT, но вы могли бы сделать это хакерским способом, если бы A делегировал свой чертеж дочернему компоненту идентичного размера, расположенному в (0,0).Естественно, дочерний компонент будет отрисован после вашего оконного виджета в иерархии, и это позволит достичь того, что вам нужно.

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