Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: serkol от Август 13, 2010, 15:44



Название: QLabel с многоточием
Отправлено: serkol от Август 13, 2010, 15:44
Я показываю простой HTML (части текста жирным шрифтом) в QLabel.

Не могу придумать как показывать многоточие в конце, когда текст не влазит...
Кто-нибуть мог бы подсказать?


Название: Re: QLabel с многоточием
Отправлено: kibsoft от Август 13, 2010, 20:06
Посмотри это: http://doc.trolltech.com/4.6/qfontmetrics.html
Можно определить размер строки в пикселах, соответственно если она больше ширины лейбла, то ставь троеточие..думаю разберешься :)


Название: Re: QLabel с многоточием
Отправлено: lit-uriy от Август 13, 2010, 22:54
может сгодится:
QString QFontMetrics::elidedText ( const QString & text, Qt::TextElideMode mode, int width, int flags = 0 ) const


Название: Re: QLabel с многоточием
Отправлено: serkol от Август 14, 2010, 03:33
Разве QFontMetrics понимает HTML?


Название: Re: QLabel с многоточием
Отправлено: kibsoft от Август 14, 2010, 11:15
Разве QFontMetrics понимает HTML?
А почему нет то..QFontMetrics работает с QFont, а в нем хранится вся инфа о форматировании (bold, italic и т.д.)..думаю что все будет работать.


Название: Re: QLabel с многоточием
Отправлено: serkol от Август 14, 2010, 22:05
Я наверно непонятно написал. У меня QLabel показывает HTML, в котором части текста имеют разные характеристики. То есть "строка" может выглядеть так:

Заголовок
Важно, не очень важно, совсем неважно

В этом примере, это все один контрол QLabel, в котором одна HTML "строка" форматирует текст как 2 строки, с использованием разных размеров шрифтов и атрибутов bold и italic.

Наверное единственный выход - это использовать QWebView для рендера текста, прикрутив к нему css, который будет ставить многоточие в конце блока: {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}

Заморочка в том, что сейчас я втыкаю QLabel-ы в каждую строку QListView, как самый простой способ использование HTML в списке типа QListView. Втыкать туда десятки QWebView наверное не самый лучший вариант - наверное прийдется написать delegate, и использовать один и тот-же QWebView для рендера всех строк списка...


Название: Re: QLabel с многоточием
Отправлено: lit-uriy от Август 15, 2010, 04:13
>>прикрутив к нему css, который будет ставить многоточие в конце блока:
>>{overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
а что мешает прицепить эту таблицу стилей к метке и посмотреть  будет ли эффект?


Название: Re: QLabel с многоточием
Отправлено: serkol от Август 19, 2010, 07:24
QLabel такого конечно не понимает - в доке написано что он понимает только простой HTML. Я проверял. Хуже что и QWebView этого тоже не понял, хотя браузеры понимают (например Firefox, Safari)


Название: Re: QLabel с многоточием
Отправлено: serkol от Август 19, 2010, 07:55
Вообще-то QWebView это делает - я сделал ошибку в стиле. А QLabel естественно не делает. Вот html кому интересно:

Код:
<head><style type='text/css'>
p.test {
border: 1px solid #000000;
white-space: nowrap;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
</style> </head>
<body><p class=test width=200px>Very long text, Very long text, Very long text, Very long text, Very long text, Very long text, Very long text, Very long text, Very long text, Very long text, Very long text END</p>
</body>