2012-09-04 3 views
8

가끔 레이블에 공백이없는 긴 텍스트 (컴퓨터의 경로)가 포함되어 있습니다.QLabel 단어 줄 바꾸기 모드

그래서 wrod 포장은 매우 이상합니다.

단어 중간에 깨지거나 공백 문자가 아닌 단어를 줄 바꿈하는 방법이 있습니까?

답변

4

한 가지 방법은 QLabel 대신 QTextDocument을 사용하여 QTextOption 클래스를 사용하는 것입니다. 이렇게하면 QTextOption::WrapMode을 사용할 수 있습니다. QTextOption :: WrapAtWordBoundaryOrAnywhere는 당신이 원하는 것을해야합니다.

+1

QTextEdit/QTextBrowser가 내용에 적합하지 않으므로 받아 들일 수 없습니다. – chacham15

+0

콘텐츠에 맞춤? 나는 그 질문에 그러한 요청을 보지 못했다. –

+0

맞아,하지만 그것은 QLabel의 기본 동작이며 QTextEdit의 동작은 아닙니다. 또한 QTextEdit을 만드는 것이 쉽지 않습니다. – chacham15

5

이 우아한 아니라 않는 작업 ...
그래서 헤더 클래스는 개인이 말 :

QLabel *thisLabel; 
QString *pathName; 
QString *pathNameClean; 

및 thisLabel 어떤 곳을 정의 물론

. 그것은이 간단 경우 는 그래서 .... 좋을 것이다 AND 단어가있는 경우에만 SO에 실제 경로를 유지 (경로는 피해야한다) 포인트

을 어기면 괜찮

thisLabel->setWordWrap(true); 

QFile 목적을 위해 나중에 필요하면 별도의 문자열. 수동 ... 좋은 폭이 그래서 우리는 50 개 문자를 말할 것이다 ....

pathNameClean = new QString(pathName); 

    int c = pathName->length(); 

    if(c > 50) 
    { 
     for(int i = 1; i <= c/50; i++) 
     { 
      int n = i * 50; 
      pathName->insert(n, " "); 
     } 
    } 
    thisLabel->setText(pathName); 

와우를 행 번호 당 문자를 정의하고 문자열에 공백을 삽입 .... 시뮬레이션 단어 잘림 원래 공간이 없습니다 ...

그냥 pathName 문자열이 꽤 예쁜 QLabel 용이고 pathNameClean 문자열이 실제 경로라는 것을 기억하십시오. 공백이 삽입 된 파일을 열려고하면 ..... Qt 프로그램이 충돌합니다.

(단순한 클래스 방법이 없다면 ... 단지 몇 줄의 코드만으로도 ... 그리고 왜 문제를 해결할 수 있습니까? 프로그래머가 가장 잘 사용하는 도구입니다.)