我在重新实现的 QGraphicsView::drawForeground() 中绘制它。
假设地图中有两条记录。那么这只会绘制地图中的第一个条目,而不是第二个。我需要 save() 和 restore() 吗?
想不出第二个不画的原因。我在倒数第三行的 qDebug 打印出两个条目,因此显然这两个数字至少都被存储了。
QMapIterator<int, QPointF> it(carNumbers);
while(it.hasNext()){
it.next();
painter->translate(it.value());
QTransform oldTransform = painter->transform();
painter->setTransform(QTransform(1, 0, 0, 1, oldTransform.m31(), oldTransform.m32()));
painter->setPen(QPen(Qt::black));
qDebug() << it.key();
painter->drawText(QPointF(0.0, 0.0), QString::number(it.key()));
}
还有一个问题:我得到了在预期位置绘制的数字。这就是 translate() 的作用,对吧?那么 drawText() 中的 QpointF 将是从翻译点的偏移量?