Obtenir la longueur QGraphicsTextItem?
-
27-10-2019 - |
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.
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.