2012-09-04 16 views
8

Mam etykietę, która czasami zawiera długi tekst bez spacji (ścieżka w komputerze).Tryb zawijania słów QLabel

Zawijanie w warkocze bardzo dziwnie.

Czy istnieje sposób na zawijanie tekstu etykiety, która zostanie przerwana w środku wyrazu lub nie tylko na białych znakach?

Odpowiedz

4

Jednym ze sposobów jest użycie klasy QTextOption z QTextDocument zamiast QLabel. To pozwoli ci użyć QTextOption::WrapMode. QTextOption :: WrapAtWordBoundaryOrAnywhere powinno robić to, co chcesz.

+1

Jest to niedopuszczalne, ponieważ QTextEdit/QTextBrowser nie pasuje do zawartości. – chacham15

+0

Dopasuj do treści? Nie widzę takiej prośby w pytaniu. –

+0

Masz rację, ale to jest domyślne zachowanie z QLabel, a nie z QTextEdit. Co więcej, nie jest to łatwe do zrobienia w QTextEdit. – chacham15

5

To nie jest eleganckie, ale działa ...
Tak mówią klasa nagłówek ma prywatna:

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

i oczywiście definiującej thisLabel pewne gdzie. więc byłoby miło, gdyby było to proste ....

thisLabel->setWordWrap(true); 

to dobrze tylko wtedy, gdy słowo ma przełamać punktów (które ścieżki powinny unikać)

SO utrzymać rzeczywistą ścieżkę osobny ciąg, jeśli potrzebujesz go później do QFile. Następnie ręcznie zdefiniować charakter za numerem linii i wstawić spacje w ciągu .... tak powiemy 50 znaków jest dobrym szerokość ...

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 .... symulowany WordWrap bez oryginalnych spacji ...

Pamiętaj tylko, że ciąg pathName jest teraz przeznaczony tylko dla ładnych celów QLabel i że ciąg pathNameClean jest rzeczywistą ścieżką. Programy Qt ulegną awarii, jeśli spróbujesz otworzyć plik ze ścieżką z wtryskiem przestrzeni .....

(jeśli nie ma prostej metody klasy, prawdopodobnie kilka linii kodu ... i dlaczego rozwiązywanie problemów jest najlepszym narzędziem dla programistów!)

Powiązane problemy