Зачем кому-то переопределять paintEvent () просто рисовать Primitive? - PullRequest
1 голос
/ 23 декабря 2010

Какой смысл этого переопределения paintEvent:

void QWidgetDerivedWhatchamit::paintEvent(QPaintEvent *)
{
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}

Конечно, это то, что QWidget уже делает?

Ответы [ 3 ]

1 голос
/ 25 июня 2014

Есть две основные причины, по которым кто-то захочет написать этот код.

1) Они хотят что-то нарисовать / написать или использовать изображение на заднем плане виджета. В этом случае они должны реализовать метод paintEvent.

2) Они хотят использовать таблицы стилей Qt, такие как установка прозрачного фона для виджета. Таблицы стилей прекрасно работают со встроенными классами, такими как QLabel или QPushButton. Однако, если кто-то создает свой собственный класс, производный от QWidget, таблицы стилей не будут работать, если вы не переопределите paintEvent и не напишите точно те строки, которые вы упомянули.

0 голосов
/ 29 мая 2012

Вам не нужно делать это, если вы наследуете QWidget.Забудьте, что вы когда-либо видели этот код:)

0 голосов
/ 23 декабря 2010

Возможно.Это может быть заполнитель, т. Е.разработчик намеревался переопределить его, чтобы добавить новую функцию, но не обошел ее и оставил вышеупомянутое. Кроме того, каково поведение по умолчанию для paintEvent в базовом классе?Это PE_Widget или что-то еще?

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