我有一个非常奇怪的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,但在我的类中它绘制的位置在我的工具栏图标下面!?!