Название: Подогнать QLineEdit под размер строки Отправлено: PulSar.CE3194694 от Февраль 19, 2013, 22:12 Добрый день.
Проблема такая: есть QLineEdit с некоторым минимально возможным размером, в которую вставлен текст по умолчанию. Пользователь начинает редактировать строку текста, и когда очередной символ уже не вмещается в QLineEdit, она увеличивается в ширину на ширину введенного символа. Никак не получается правильно есть сделать, долблю 2й вечер. Код прилагается, может поможете с решением. Код: void Edit::changeWidth(const QString &text) //слот Название: Re: Подогнать QLineEdit под размер строки Отправлено: GreatSnake от Февраль 20, 2013, 07:26 Тебе же здесь (http://www.prog.org.ru/index.php?topic=24139.msg171697#msg171697) дали решение.
Кстати, мог бы как-то и отреагировать. Название: Re: Подогнать QLineEdit под размер строки Отправлено: Igors от Февраль 20, 2013, 10:36 Пользователь начинает редактировать строку текста, и когда очередной символ уже не вмещается в QLineEdit, она увеличивается в ширину на ширину введенного символа. При работе с UI полезно задавать себе вопрос "а как люди делают?". Ну или "а почему никто не делает так как я хочу?". Стоит попробовать - и Вы быстро найдете массу ответов :) Название: Re: Подогнать QLineEdit под размер строки Отправлено: PulSar.CE3194694 от Февраль 20, 2013, 16:17 Тебе же здесь (http://www.prog.org.ru/index.php?topic=24139.msg171697#msg171697) дали решение. Значит не увидел ответа. Кстати, не работает так как надо. Я же говорю, при добавлении нового символа в QLineEdit весь введенный текст съезжает влево (по крайней мере так кажется визуально).Кстати, мог бы как-то и отреагировать. Igors, не умничайте. Название: Re: Подогнать QLineEdit под размер строки Отправлено: PulSar.CE3194694 от Февраль 20, 2013, 16:49 Теперь ясно стало, почему текст плывет. ФонтМетрика не учитывает расстояния между буквами и поэтому всякие методы вроде boundingRect().width(), width() и т.п. показывают длину текста не верно.
Код: int textWidth = fontMetrics.width(text) + text.size() -1 Название: Re: Подогнать QLineEdit под размер строки Отправлено: GreatSnake от Февраль 20, 2013, 17:02 Кстати, не работает так как надо. Я же говорю, при добавлении нового символа в QLineEdit весь введенный текст съезжает влево (по крайней мере так кажется визуально). Вот работающий пример на основе твоего кода (http://www.prog.org.ru/index.php?topic=24139.msg171545#msg171545):Код Под Х-ми ничего не плывёт. Код: int textWidth = fontMetrics.width(text) + text.size() -1 Для точного определения размеров используй QFontMetrics::tightBoundingRect(). Название: Re: Подогнать QLineEdit под размер строки Отправлено: PulSar.CE3194694 от Февраль 20, 2013, 18:01 Потому что не считались расстояния между буквами.
В общем тот код, что был приведен почти что == с тем, что был в начале темы кроме этого: Код: fontMetrics().boundingRect(text).width() Код: p_fm = new QFontMetrics(p_inputField->font()); |