C++ QPaint drawText()在while循环中

C++ QPaint drawText()在while循环中,c++,qt,user-interface,C++,Qt,User Interface,我正在一个重新实现的QGraphicsView::drawForeground()中绘制这个 假设地图上有两条记录。然后,这将只绘制地图中的第一个条目,而不是第二个条目。我需要save()和restore()吗 我想不出第二个画不出来的原因。我的qDebug在最后第三行打印了两个条目,所以显然这两个数字至少都存储了 QMapIterator<int, QPointF> it(carNumbers); while(it.hasNext()){ it.next(); painte

我正在一个重新实现的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()));
}
QMapIterator it(卡号);
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::黑色));
qDebug()drawText(QPointF(0.0,0.0),QString::number(it.key());
}
还有一个问题:
我得到了在预期位置绘制的数字。这就是translate()的作用,对吗?因此,drawText()中的QpointF将是从转换点的偏移量?

摆脱变换,只需先查看绘图代码是否工作即可。如果我错了,请纠正我,但你似乎在翻译画家,然后得到它的变换,然后再次应用它?你想做什么?绘图代码工作。反正找到了解决办法,;只需在while循环的开头添加save(),在结尾添加restore(),就可以实现这一点。代码基本上是从我发现的其他示例中提取的。