У меня очень странное поведение QPainter. В моем 'MainWindow::paintEvent()' все работает правильно:
QPainter painter(this);
qDebug() << "painter adress in paintEvent: " << (&painter);
painter.setBrush(Qt::red);
painter.drawRect(100, 100, 100, 100);
Все идет нормально. Но на самом деле я хочу рисовать, используя функцию класса, которую я написал, поэтому мой 'paintEvent()' выглядит так:
QPainter painter(this);
qDebug() << "painter adress in paintEvent: " << (&painter);
painter.setBrush(Qt::red);
painter.drawRect(100, 100, 100, 100);
instance_of_my_class->paint(&painter);
painter.drawRect(150, 150, 100, 100);
А 'paint(QPainter *painter)', который вызывается выше, выглядит так:
qDebug() << "painter adress in paint: " << painter;
painter->setBrush(QColor(0, 0, 80));
painter->drawRect(0, 0, 1000, 1000);
Очевидно, теперь я ожидал бы увидеть темно-синий фон с одним красным прямоугольником (второй, первый должен быть перекрашен в «краске»). Однако я вижу два красных прямоугольника, а на панели инструментов все значки имеют темно-синий фон. Кроме того, вывод 'qDebug()' выглядит следующим образом:
painter adress in paintEvent: 0xbfd43b54
painter adress in paint: 0xbfd43b54
Это определенно тот же QPainter, но в моем классе он рисует под значками на моей панели инструментов!?!