1

再実装された 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 は、変換されたポイントからのオフセットになりますか?

4

0 に答える 0