2011-02-01 7 views
1

어쨌든 TextWidth = -1? 일 때 텍스트의 길이를 계산할 수 있습니까?QGraphicsTextItem 길이를 얻으시겠습니까?

나는 사각형이 QGraphicsTextItem이고 그 사각형이 너비를 초과 할 때 사각형의 너비를 변경하려고합니다.

+0

그래서 -1이 기본값으로 반환됩니까? – Exa

답변

1

textWidth = -1 수단, 즉

」...]이 명시 개행 또는 새로운 단락 통해 시행되지 않는 텍스트가 여러 줄로 분리되지 않을 것이다. "

(QTextDocument::textWidth()) 그래서

, 당신의 길이를 얻으려면 당신의 QGraphicsTextItem 당신이 textWidth을 사용할 수 없지만 대신이 QGraphicsTextItem 내의 문자열의 실제 길이가 필요합니다. QGraphicsTextItem::toPlainText()을보고 QString을 반환합니다. 해당 문자열에서 size()으로 전화하십시오.

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

이제이 문자열의 문자 수를 너무 많은 문자가있는 경우, 당신의 사각형을 증식시키는 크기 조정 기능을 구현할 수 있습니다. 그것은 일종의 해결 방법이지만 문제 해결에 도움이되기를 바랍니다.

+0

정말 고마워요. –

+2

또한 발견 : qreal w = text.document() -> size(). width(); –

+0

그래, 아주 좋아. 나는 사람들이 docu를 제대로 읽는 것을 좋아한다. – Exa

0

QFontMetrics ([QGraphicsTextItem의 글꼴]) 인스턴스를 만들고 너비 (QString) 함수를 호출하여 지정된 fontfamily/-size /로 그려진 전달 된 문자열의 너비를 픽셀 단위로 가져올 수도 있습니다. 무게. 문자 수를 얻는 것은 고정 폭 글꼴을 사용할 때만 합리적입니다. 다른 모든 경우에는 좋은 생각이 아닙니다.

+0

내가 읽은 모든 소스에서, QFontMetrics는 수년간 유용성을 넘어 도청되었습니다. 시야에 수정이없는 것 같습니다. – optikradio

+0

@optikradio : 흠, 나는 QFontMetrics를 많이 사용 해왔고 그 시간 동안 (내부 라운딩으로 인해 일부 바운딩 박스 기능을 호출 할 때 호출로부터 지터가 발생했습니다) 단 한 번의 귀찮음 만 보았습니다. 그래서 수업은 나에게 괜찮아 보인다. 당신은 당신의 근원을 지명해야합니다, 나는 매우 흥미 롭습니다. – DerManu

3

같은 문제를 해결함으로써이 게시물을 발견했습니다.

나는 폭을 얻기 위해 text->boundingRect().width()을 사용하고 있습니다.

아마도 도움이 될 것입니다.

관련 문제