2014-09-17 25 views
1

활성 글자 래핑을 사용하여 QPlainTextEdit 컨트롤을 사용하고 있는데, 텍스트 블록이 줄 바꿈 될 때 라인 수가 증가 할 때 라인 카운터를 업데이트하기 위해 어떻게 감지 할 수 있는지 궁금합니다.Qt - 줄 바꿈 후 행 수가 증가하는 것을 감지하는 방법은 무엇입니까?

기본 QTextDocument has a signal to detect when the block count changes이지만 줄 수가 변경되지 않습니다.

QTextDocument의 줄 바꿈 및 줄 수를 감지 할 수 있습니까?

+0

확인 내가 잘못하지 않으면 한 줄. – Breeze

+1

@Hossein은 줄 끝 문자열을 검사하면 단락 수를 얻을 수 있지만 줄 바꿈 기능이 설정된 위젯의 컨텍스트에서 줄 수는 위젯의 너비에 따라 달라 지므로 심지어 달라질 수 있습니다 표현하고있는 텍스트 문자열이 변경되지 않은 경우 –

+0

블럭 변경을 감지하고 블럭이 한 줄 또는 여러 블럭에 들어 있는지 알아보기 위해 제어 폭과 관련하여 글자 수를 계산하는 것에 대해 생각 해왔다.하지만 실제로는 중량감이 느껴진다. –

답변

0

I는 QAbstractTextDocument의 신호 documentSizeChanged를 사용함으로써 해결했다

공극 QAbstractTextDocumentLayout :: documentSizeChanged (CONST QSizeF & newSize와) 신호]

이 신호가 방출 될 때의 크기 문서 레이아웃이 newSize로 변경됩니다. 의 서브 클래스 문서의 전체 레이아웃 크기가 변경되면 QAbstractTextDocumentLayout이이 신호를 내 보냅니다. 이 신호는 스크롤 막대를 정확하게 으로 업데이트 할 수 있기 때문에 텍스트 문서를 표시하는 위젯에 유용합니다.

나는 내 글꼴의 크기를 알기 때문에 새로운 기본 문서의 정확한 크기를 알면 내 텍스트 문서의 줄을 감쌀 수있었습니다.

0

조금 늦었지만 아마도 내 대답은 누군가를 도울 수 있습니다.
나는 내 회사에 거의 같은 요구를했고 나는 이런 식으로 해결하십시오 '\ R은 N \'또는 글자 수, 일반적으로 각 80 자 고려에 대한

// This example show how to get the visual number of lines 
QPlainTextEdit *pte = new QPlainTextEdit(); 
pte->setAttribute(Qt::WA_DontShowOnScreen); 
pte->show(); 
pte->setFixedWidth(50); 
pte->setPlainText("Hello world!"); 
/* The next line return the number of necessary line 
to display the text "Hello World!" with width of 50px */ 
int lineCount = pte->document()->documentLayout()->documentSize().height(); 

안부