Я использую QPainter для отображения графики в окне. К сожалению, каждый раз, когда вызывается функция paintEvent(), все окно очищается. Как я могу нарисовать без очистки? То есть как оставить вещи из предыдущего события рисования нетронутыми?
paintEvent()
Я использую Qt4
Поскольку оба ответа предназначены только для Qt3, вот решение для Qt4. Вам нужно позвонить
setAttribute(Qt::WA_OpaquePaintEvent);
(например, в конструкторе), следуя документации здесь .
Вам необходимо установить backgroundMode с помощью установщика setBackgroundMode. Перечисление Qt::NoBackground - это то, что вы ищете.
backgroundMode
setBackgroundMode
Qt::NoBackground
В Qt3 установите флаг Qt::WNoAutoErase из перечисления WidgetFlags , чтобы избежать очистки окна при каждом событии рисования.
Qt::WNoAutoErase
Вы можете установить этот флаг, передав его конструктору QWidget .