Название: [РЕШЕНО] Не отрабатывает укорачивания текста в TextEdit Отправлено: Qyrychen от Февраль 03, 2016, 14:59 Доброго времени суток!
Немного предистории: Есть QML модель и QML TableView. Для отображения колонок используется делегат с элементом TextEdit (именно этот элемент используется т.к. в дальнейшем необходимо будет реализовывать подсветку с помощью класса QSyntaxHighlighter). В TextEdit отключена возможность переноса слов (получается всегда одна строка только) и при уменьшении ширины столбца нужно обрезать текст и добавлять троеточие. Само по себе свойство elide или подобное у TextEdit отсутствует Нашел интересную возможность получать обрезанный текст при помощи класса TextMetrics (http://doc.qt.io/qt-5/qml-qtquick-textmetrics.html#width-prop) Использую я его в слоте внутри TextEdit Код: onWidthChanged: { И вот описание проблемы: - при изменении ширины столбца в консоль выводится текст, адекватно обрезанный по ширине столбца (понятно что в самой таблице текст не изменяется, а заезжает под следующую колонку) - но если раскомментировать последнюю строку и осуществить запись в элемент TextEdit, то в результате получаем все пустые ячейки кроме первой + сужение работает только в одну сторону, т.е. при увеличении колонки текст не расширяется Подскажите, пожалуйста как можно решить такую проблему или может кто-то сможет хоть идей накидать? Заранее спасибо Название: Re: Не отрабатывает укорачивания текста в TextEdit Отправлено: BuRn от Февраль 04, 2016, 00:58 Если пофиг на производительность, то первое что пришло в голову это использовать FontMetrics
Бекапишь куда-то в переменнную исходных текст, дальше у FontMetrics есть функция позволяющая узнать сколько по ширине займет твой текст. Берешь новую строку вида "..." и добавляешь в начало по 1 символу и исходного текста, до тех пор, пока метод из FontMetrics не вернет тебе максимальную ширину текста, которая может вместиться в ширину твоего поля Название: Re: Не отрабатывает укорачивания текста в TextEdit Отправлено: Racheengel от Февраль 04, 2016, 11:38 Если пофиг на производительность, то первое что пришло в голову это использовать FontMetrics Бекапишь куда-то в переменнную исходных текст, дальше у FontMetrics есть функция позволяющая узнать сколько по ширине займет твой текст. Берешь новую строку вида "..." и добавляешь в начало по 1 символу и исходного текста, до тех пор, пока метод из FontMetrics не вернет тебе максимальную ширину текста, которая может вместиться в ширину твоего поля Топорненько как-то, товарищи :) Есть такая функция: QFontMetrics::maxWidth() Вот она может сразу сказать, сколько символов как минимум поместится. Надо только посадить нужный фонт и заданную "ширину" поделить на результат данной функции. Название: [РЕШЕНО] Не отрабатывает укорачивания текста в TextEdit Отправлено: Qyrychen от Февраль 04, 2016, 17:55 Спасибо всем откликнувшимся. Проблема, как оказалось, была в том, что при первичной загрузке некоторые элементы приходили пустыми. Проблему решил следующим образом
Код: TextMetrics { |