Immer QGraphicsTextItem Länge?
-
27-10-2019 - |
Frage
Es ist trotzdem berechnen Sie den text der Länge, wenn TextWidth = -1
?.
Ich habe ein Rechteck, das hat eine QGraphicsTextItem
in es, und das will ich ändern das Rechteck ist die Breite, wenn Zeichen überschreiten des Rechtecks.
Lösung
textWidth = -1 bedeutet, dass
"[...] der text wird nicht gebrochen in mehrere Zeilen, es sei denn, es wird durchgesetzt durch einen expliziten Zeilenumbruch oder ein neuer Absatz."
Also, wenn Sie wollen, um die Länge Ihrer QGraphicsTextItem
Sie können nicht verwenden textWidth
, aber stattdessen müssen Sie die tatsächliche Länge der Zeichenfolge ist, innerhalb dieser QGraphicsTextItem
.Haben Sie einen Blick auf QGraphicsTextItem::toPlainText(), das gibt einen QString.Call size()
auf die Zeichenkette.
int length = my_graphics_text_item.toPlainText().size()
Jetzt haben Sie die Anzahl der Zeichen in dieser Zeichenfolge und implementieren kann ein resize-Funktion, um das Rechteck zu wachsen, wenn es zu viele Charaktere gibt.Es ist eine Art von Problemumgehung, aber ich hoffe, es hilft Ihr problem zu lösen.
Andere Tipps
Ich fand diesen Beitrag durch anhalten auf das gleiche problem.
ich bin mit text->boundingRect().width()
um die Breite.
Vielleicht hilft es jemanden
Sie könnten auch eine QFontMetrics([font von Ihrem QGraphicsTextItem]) - Instanz und rufen Sie seine Breite(QString) - Funktion, um die Breite des übergebenen Zeichenfolge in Pixel, wurden daraus gezogen, die in der angegebenen fontfamily/-Größe/-Gewicht.Nur die Beschaffung der Anzahl der Zeichen ist nur dann sinnvoll, wenn mit einer Monospace-schriftart.In allen anderen Fällen, es ist keine gute Idee.