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.

War es hilfreich?

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."

(QTextDocument::textWidth())

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top