1

我在重新实现的 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 将是从翻译点的偏移量?

4

0 回答 0