获取QGraphicsTextItem长度?

时间:2011-02-01 06:44:23

标签: qt text qgraphicstextitem

TextWidth = -1时,是否有计算文本的长度?

我有一个矩形,里面有QGraphicsTextItem,我想在字符超出矩形时更改矩形的宽度。

3 个答案:

答案 0 :(得分:4)

我通过停止同样的问题找到了这篇文章。

我使用text->boundingRect().width()来获取宽度。

也许它可以帮助任何人

答案 1 :(得分:0)

textWidth = -1表示,

  

“[...]文本不会被分解   多行,除非强制执行   通过明确的换行符或   新段落。“

QTextDocument::textWidth()

因此,如果您希望获得QGraphicsTextItem的长度,则无法使用textWidth,而是需要此QGraphicsTextItem中字符串的实际长度。看看QGraphicsTextItem::toPlainText(),它返回一个QString。在该字符串上调用size()

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

现在你有了这个字符串中的字符数,并且当字符太多时,可以实现调整大小功能以使矩形增长。这是一种解决方法,但我希望它有助于解决您的问题。

答案 2 :(得分:0)

您还可以创建一个QFontMetrics([QGraphicsTextItem的字体])实例并调用其宽度(QString)函数来获取传递的字符串的宽度(以像素为单位),如果它是在指定的fontfamily / -size / -weight中绘制的。 只使用等宽字体获取字符数是合理的。在所有其他情况下,这不是一个好主意。

相关问题