2012-09-04 10 views
8

Ich habe eine Bezeichnung thet manchmal einen langen Text ohne Leerzeichen (Pfad im Computer).QLabel Wrap-Modus

Also wrod Wrap wickelt es sehr seltsam.

Gibt es eine Möglichkeit, das Wort zu umbrechen, das in der Mitte des Wortes oder nicht nur in Leerstellen bricht?

Antwort

4

Ein Weg ist die QTextOption Klasse mit einem QTextDocument anstelle eines QLabel zu verwenden. So können Sie QTextOption::WrapMode verwenden. QTextOption :: WrapAtWordBoundaryOrAnywhere sollte tun, was Sie wollen.

+1

Dies ist inakzeptabel, da QTextEdit/QTextBrowser nicht zum Inhalt passt. – chacham15

+0

Passend zum Inhalt? Ich sehe in der Frage keine solche Anfrage. –

+0

Sie haben Recht, aber das ist das Standardverhalten bei einem QLabel und nicht bei einem QTextEdit. Außerdem ist es nicht einfach, QTextEdit dieses Verhalten zu geben. – chacham15

5

Dies ist nicht elegant aber funktioniert ...
So Header-Klasse sagen hat Privat:

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

und natürlich thisLabel einige, wo definieren. so wäre es schön, wenn es so einfach war ....

thisLabel->setWordWrap(true); 

ist das in Ordnung, wenn und nur wenn das Wort Punkte hat brechen (welche Wege vermeiden sollten)

SO Ihren tatsächlichen Pfad halten in eine separate Zeichenfolge, wenn Sie sie später für QFile-Zwecke benötigen. Dann manuell ein Zeichen pro Zeile Nummer definieren und die Räume in den String einfügen .... so werden wir 50 Zeichen sagen, ist eine gute Breite ...

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); 

Shazam .... simulierte WordWrap ohne Original Leerzeichen ...

nur daran erinnern, dass pathName String nur für hübsche QLabel Zwecke ist und dass die pathNameClean Zeichenfolge ist der tatsächliche Pfad. Qt-Programme stürzen ab, wenn Sie versuchen, eine Datei mit einem injizierten Pfad zu öffnen.

(Wenn es keine einfache Klassenmethode gibt, ist es wahrscheinlich nur ein paar Zeilen Code zu tun ... und warum Problemlösung ist ein Programmierer das beste Werkzeug!)

Verwandte Themen