2012-09-04 1 views
8

У меня есть ярлык, который иногда содержит длинный текст без пробелов (путь в компьютере).Режим переноса слов QLabel

Таким образом, wrod wrap обертывает его очень странно.

Есть ли способ сделать перенос слов на этикетке, которая сломается в середине слова или не только на пробелах?

ответ

4

Один из способов - использовать класс QTextOption с QTextDocument вместо QLabel. Это позволит вам использовать QTextOption::WrapMode. QTextOption :: WrapAtWordBoundaryOrAnywhere должен делать то, что вы хотите.

+1

Это неприемлемо, так как QTextEdit/QTextBrowser не подходит для содержимого. – chacham15

+0

Подходит для контента? Я не вижу такой просьбы в вопросе. –

+0

Вы правы, но это поведение по умолчанию с QLabel, а не с QTextEdit. Кроме того, это не простое решение QTextEdit. – chacham15

5

Это не элегантный, но делает работу ...
Так сказать, класс заголовок имеет Private:

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

и, конечно же, определяющего thisLabel где-. поэтому было бы хорошо, если бы это было это просто ....

thisLabel->setWordWrap(true); 

это нормально если и только если слово имеет точки разрыва (который тропИнок следует избегать)

SO сохранить ваш реальный путь в отдельную строку, если вам это нужно для целей 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); 

Shazam .... моделируемой WordWrap без исходных пространств ...

просто помните, что строка pathName теперь просто для довольно QLabel целей и что строка pathNameClean является фактическим путем. Qt-программы будут разбиваться, если вы попытаетесь открыть файл с пробелом, введенным в путь .....

(если нет простого метода класса, это, скорее всего, всего несколько строк кода ... и почему решение проблемы лучший инструмент для программистов!)