Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: like-nix от Февраль 25, 2011, 00:41



Название: Выравнивание по тексту
Отправлено: like-nix от Февраль 25, 2011, 00:41
Подскажите пожалуйста.

Как сделать чтобы QTextEdit при вводе текста увеличивался(вниз), в том случае если текст не помещается в отведенное для изначально размер, до определенных размеров, и далее нужно запретить ввод текста. Т.е. нужен виджет в который можно писать текст и он будет изменять размер как написано выше, так что это не обязательно QTextEdit надо.

И второй вопрос. Можно ли сделать многострочный Qlabel? Нужно чтобы текст автоматом переносился на новую  строку(т.е по ширине перенос должен выполняться) в том случае если не помещается в одну строку, и нужно сделать ограничение строк само собой чтобы он увеличивался до определенных размеров.  Не поместившийся текст должен отрезаться "...", а при наведении должен выскакивать tooltip и показывать весь текст(это такая идея =) подсказку сделать знаю как). Опять же не обязательно QLabel нужен основная функция отображение текста как написано выше, без возможности редактирования.

Жду предложений




Название: Re: Выравнивание по тексту
Отправлено: serg_hd от Февраль 25, 2011, 01:11
QLabel lbl("text1\ntext2\ntext3"); И не забывай при этом ставить ему нужную ширину/высоту.

Для запрета ввода текста смотри в строну eventFilter'а например.


Название: Re: Выравнивание по тексту
Отправлено: like-nix от Февраль 25, 2011, 01:29
Спасибо за ответ про Label. Правда я уже сам до пер =). А про Edit подскажите  ;)
Нужно чтобы он по тексту вниз увеличивал размер.


Название: Re: Выравнивание по тексту
Отправлено: like-nix от Февраль 25, 2011, 01:48
Подскажите как определить ширину и высоту текста.


Название: Re: Выравнивание по тексту
Отправлено: like-nix от Февраль 25, 2011, 01:52
Может это делать через QTextCharFormat::fontWeight? Предполагаю тогда нужно посчитать сколько символов в строке и умножить на это число, но тогда у меня вопрос всели символы равны?


Название: Re: Выравнивание по тексту
Отправлено: serg_hd от Февраль 25, 2011, 02:08
QFontMetrics


Название: Re: Выравнивание по тексту
Отправлено: Igore от Февраль 25, 2011, 10:08
Для QLabel можно попроще, использовать wordWrap (перенос строк будет автоматом), отрезание текста все равно придется самому делать.

Я делал подобное (маштабирование по заданной области чтобы все влезало), в paintEvent, через QTextLayout, QTextOption, QPainter.

http://doc.trolltech.com/main-snapshot/qt4-scribe.html (http://doc.trolltech.com/main-snapshot/qt4-scribe.html)