Wie wird bei Qt 4.6.x die Größe des Texts automatisch angepasst, damit er in eine bestimmte Breite passt?

In meinem QGraphicsRectItem :: paint () versuche ich, den Namen des Elements in seinem rect () zu zeichnen. Sie können jedoch für jedes der verschiedenen Elemente eine variable Breite und in ähnlicher Weise Namen mit variabler Länge haben.

Momentan beginne ich mit einer maximalen Schriftgröße, überprüfe, ob sie passt, und dekrementiere sie, bis ich eine passende Schriftgröße finde. Bisher habe ich keinen schnellen und einfachen Weg gefunden, dies zu tun. Gibt es eine bessere oder effizientere Möglichkeit, dies zu tun?

Vielen Dank!

void checkFontSize(QPainter *painter, const QString& name) {
 // check the font size - need a better algorithm... this could take awhile
 while (painter->fontMetrics().width(name) > rect().width()) {
  int newsize = painter->font().pointSize() - 1;
  painter->setFont(QFont(painter->font().family(), newsize));
 }
}

Antworten auf die Frage(7)

Ihre Antwort auf die Frage