再実装された QGraphicsView::drawForeground() 内でこれをペイントしています。
マップに 2 つのレコードがあるとします。次に、これはマップの最初のエントリのみを描画し、2 番目のエントリは描画しません。save() と restore() は必要ですか?
2番目がペイントされない理由がわかりません。最後から 3 行目の 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()));
}
もう 1 つの質問: 予想される位置に数字が描画されます。それが translate() の機能ですよね?それでは、drawText() の QpointF は、変換されたポイントからのオフセットになりますか?