Я пытаюсь сделать мой виджет краской прямоугольника с каждым paintEvent, который он получает. Предполагается, что прямоугольники будут увеличиваться в размере по 1px за раз, заполняя квадрат. Однако я получаю только последний (и самый большой) прямоугольник.Qt: Почему мой paintEvent() стирает все, прежде чем выполнять свою работу?
void TestClass::paintEvent(QPaintEvent* e){
static int size = 1;
QStylePainter painter(this);
painter.setPen(Qt::blue);
painter.drawRect(QRect(50, 50, size, size));
size++;
}
Я не понимаю, почему так было бы. Я ожидал, что художник просто рисует поверх того, что уже есть. Вместо этого он, кажется, удаляет ранее нарисованный прямоугольник, оставляя меня с одним прямоугольником в любое время. Есть идеи?
setAutoFillBackground(true/false)
не меняет ничего, кроме цвета фона.
Чтобы вызвать краскуEvent I update()
внутри mousePressEvent()
. Таким образом, мои прямоугольники растут с каждым щелчком.
Большое спасибо.
Вы видите только самую большую площадь, потому что она полностью покрывает все меньшие квадраты, нарисованные ранее. Что вы ожидаете увидеть? – Flopp
@Flopp Это интересно, спасибо.Прямоугольники не заполнены, поэтому я не ожидал, что они смогут что-то покрыть. Я посмотрю, смогу ли я это проверить. – Jersey
Хм, ты прав; Ваш код должен рисовать незаполненный прямоугольник. – Flopp