Доброго времени суток!
Немного предистории:
Есть QML модель и QML TableView.
Для отображения колонок используется делегат с элементом TextEdit (именно этот элемент используется т.к. в дальнейшем необходимо будет реализовывать подсветку с помощью класса QSyntaxHighlighter). В TextEdit отключена возможность переноса слов (получается всегда одна строка только) и при уменьшении ширины столбца нужно обрезать текст и добавлять троеточие. Само по себе свойство elide или подобное у TextEdit отсутствует
Нашел интересную возможность получать обрезанный текст при помощи класса TextMetrics (
http://doc.qt.io/qt-5/qml-qtquick-textmetrics.html#width-prop)
Использую я его в слоте внутри TextEdit
onWidthChanged: {
textMetrics.text = delegateTextEdit.text
textMetrics.elideWidth = delegateTextEdit.width - 10
var str = textMetrics.elidedText
console.debug(str)
//delegateTextEdit.text = str
}
И вот описание проблемы:
- при изменении ширины столбца в консоль выводится текст, адекватно обрезанный по ширине столбца (понятно что в самой таблице текст не изменяется, а заезжает под следующую колонку)
- но если раскомментировать последнюю строку и осуществить запись в элемент TextEdit, то в результате получаем все пустые ячейки кроме первой + сужение работает только в одну сторону, т.е. при увеличении колонки текст не расширяется
Подскажите, пожалуйста как можно решить такую проблему или может кто-то сможет хоть идей накидать?
Заранее спасибо