2011-02-01 109 views
1

无论如何计算文本的长度时TextWidth = -1?。获取QGraphicsTextItem长度?

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

+0

因此,-1作为默认值返回? – Exa 2011-02-01 08:31:25

回答

1

输出textWidth = -1表示,即

“[...],除非它是通过显式线路中断或一个 新段落强迫 文本不会被分成 多行”。

QTextDocument::textWidth()

所以,如果你想获得的长度你QGraphicsTextItem不能使用textWidth,而是你需要的字符串的这个QGraphicsTextItem内的实际长度。看看QGraphicsTextItem::toPlainText(),它返回一个QString。在该字符串上调用size()

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

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

+0

非常感谢。 – 2011-02-01 09:03:56

+2

另外我发现:qreal w = text.document() - > size()。width(); – 2011-02-01 09:04:28

0

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

3

我发现这篇文章通过停止对同一个问题。

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

也许它可以帮助任何人