Qt рисование без очистки фона

Я использую QPainter, чтобы получить графику в окне. К сожалению, каждый раз, когда вызывается функция paintEvent(), все окно очищается. Как я могу рисовать без очистки? т.е. как мне оставить материал из предыдущего события рисования нетронутым?

Я использую Qt4


person viraptor    schedule 29.10.2009    source источник
comment
Какую версию Qt вы используете?   -  person Frerich Raabe    schedule 29.10.2009


Ответы (3)


Вам необходимо установить backgroundMode с помощью setBackgroundMode установщик. Перечисление Qt::NoBackground — это то, что вы ищете.

person Patrice Bernassola    schedule 29.10.2009

Поскольку оба ответа предназначены только для Qt3, вот решение для Qt4. Вам нужно позвонить

setAttribute(Qt::WA_OpaquePaintEvent);

(например, в конструкторе), следуя документации здесь .

person hochl    schedule 09.08.2013

В Qt3 установите флаг Qt::WNoAutoErase из перечисления WidgetFlags, чтобы избежать этого. окно очищается при каждом событии рисования.

Вы можете установить этот флаг, передав его конструктору QWidget.

person Frerich Raabe    schedule 29.10.2009
comment
Документация Qt говорит, что она больше не нужна. Так что он не должен использовать его - person Patrice Bernassola; 29.10.2009
comment
@Patrice: Ах, да - в Qt4 это больше не работает. Это решение Qt3. - person Frerich Raabe; 29.10.2009