Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: andrew.k от Июль 05, 2010, 11:06



Название: QToolTip + html-тэги, перенос строк (решено)
Отправлено: andrew.k от Июль 05, 2010, 11:06
Устанавливаю для QToolButton подсказку.
tbUsb->setToolTip( QString( "<h5><nobr>Отображает состояние USB-портов</nobr></h5>" ) + toolTip );
Мне нужно, чтобы этот заголовок не разбивался на строки, поэтому использую тэги. Но если не использовать "-", а поставить "пробел", то тег <nobr> работает как надо, если ставлю "-", то "-портов" переносится на новую строку.
Как решить проблему? Кто подскажет? Может надо поставить какой неразрывный дефис или стайлшитами воспользоваться?


Название: Re: QToolTip + html-тэги
Отправлено: GreatSnake от Июль 05, 2010, 11:14
<nobr> в RichText-e не работает, ибо тролли для него используют усечённую версию html.
Я тоже долго бился и в итоге плюнул. Причём в моём случае разбивалось вообще целое слово :(
Стили применить, кстати, тоже не удалось.
Единственное что работает, так это <pre>, но надо повозиться, чтобы пропорциональный текст сбросить.


Название: Re: QToolTip + html-тэги
Отправлено: andrew.k от Июль 05, 2010, 11:33
<nobr> в RichText-e не работает, ибо тролли для него используют усечённую версию html.
Я тоже долго бился и в итоге плюнул. Причём в моём случае разбивалось вообще целое слово :(
Так у меня же не RichEdit, а ToolTip или один один механизм используют?
Так <nobr> работает ведь, проблема только с "-".
Если убрать тег, то выглядит так (с пробелом вместо "-") :
Отображает состояние
USB портов
Если поставить тег, то:
Отображает состояние USB портов.
Т.е. тег работает, но стоит воткнуть дефис(минус), переносит после него.


Название: Re: QToolTip + html-тэги
Отправлено: GreatSnake от Июль 05, 2010, 11:46
Цитировать
Так у меня же не RichEdit, а ToolTip или один один механизм используют?
Да, т.к. QToolTip это QLabel с QTextDocument.

Цитировать
Так <nobr> работает ведь, проблема только с "-".
Хм, если он и работает, то довольно-таки очень странно.

Посмотрел исходники qt-шного html-парсера.
При <nobr> и при <div style="white-space:nowrap"> просто пробел меняется на "&nbsp;", что верно.
Но вот при форматировании, особенно в таблицах, отказаться от разбиения слов можно только при <pre> :(
Т.е. если Qt посчитает, что строка не влезает, то он будет разбивать слова.
Получается, что как только вы добавили "-" Qt посчитал, что строка длинная и разбил её.


Название: Re: QToolTip + html-тэги
Отправлено: SimpleSunny от Июль 05, 2010, 11:55
Попробуйте использовать вместо "-" символ &#8209;


Название: Re: QToolTip + html-тэги
Отправлено: GreatSnake от Июль 05, 2010, 12:09
Попробуйте вместо <nobr> </nobr>
<div style='white-space:pre'> </div>.
Работает аналогично <pre>, но не использует моноширинный фонт.


Название: Re: QToolTip + html-тэги
Отправлено: andrew.k от Июль 05, 2010, 13:59
Попробуйте использовать вместо "-" символ &#8209;
Во блин. Я это уже пробовал, да вот забыл ";" поставить в конце. И мне так и отобразилось "&#8209". Я решил, что это тут не работает.
Щас увидел и вспомнил про ";". Это решило проблему как нужно.
Спасибо.


Название: Re: QToolTip + html-тэги
Отправлено: andrew.k от Июль 05, 2010, 14:06
Дополнительно проверил:
<div style="white-space:nowrap"> - никак не влияет, строка так же разбивается посредине
<div style="white-space:pre"> - дает нужный результат. и действительно в отличие от <pre> не делает шрифт моноширенным.
Остановился все-таки на неразрывном дефисе (меньше буков:)