Question

Y at-il de toute façon de calculer la longueur du texte lorsque TextWidth = -1?.

J'ai un rectangle qui a un QGraphicsTextItem en elle, et je veux changer la largeur du rectangle lorsque les caractères dépassent le rectangle.

Était-ce utile?

La solution

textWidth = -1 moyens,

"[...] le texte ne sera pas divisé en plusieurs lignes à moins qu'elle ne soit appliquée par une coupure de ligne explicite ou nouveau paragraphe. "

( QTextDocument :: textWidth () )

Donc, si vous voulez obtenir la longueur de votre QGraphicsTextItem vous ne pouvez pas utiliser textWidth, mais vous avez besoin de la longueur réelle de la chaîne dans ce QGraphicsTextItem. Jetez un oeil à QGraphicsTextItem :: toPlainText () , qui retourne un QString . Appel size() sur cette chaîne.

int length = my_graphics_text_item.toPlainText().size() 

Maintenant, vous avez le nombre de caractères dans cette chaîne et peut mettre en œuvre une fonction de redimensionnement pour rendre votre rectangle grandir, quand il y a trop de caractères. Il est une sorte de solution, mais j'espère que cela aide à résoudre votre problème.

Autres conseils

J'ai trouvé ce post en arrêtant sur le même problème.

J'utilise text->boundingRect().width()to obtenir la largeur.

Peut-être cela aide tout le monde

Vous pouvez aussi créer un QFontMetrics ([police de votre QGraphicsTextItem]) Instance de fonction et appeler sa largeur (QString) pour obtenir la largeur de la chaîne passée en pixels, il a été établi dans le fontfamily spécifié / -size / -weight . Juste obtenir le nombre de caractères est raisonnable lorsque vous utilisez une police à espacement fixe. Dans tous les autres cas, il est pas une bonne idée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top