Как заставить высоту строки qml tableview динамически адаптироваться к содержимому

Проблема в следующем:

Если длина текста больше ширины ячейки, текст переносится, но высота строки не увеличивается. который отображает остальной текст в разрезе. Другой мой вопрос: как адаптировать высоту каждой ячейки к содержащемуся в ней тексту?

Screenshot

Вот часть QML:

Window {
id: window
visible: true
width: 440
height: 400
title: qsTr("Table test")

ListModel {
    id: stringsModel

    ListElement {
        ID: 0
        String: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam'
    }
    ListElement {
        ID: 1
        String: 'This is a test string'
    }ListElement {
        ID: 1
        String: 'This is another test string'
    }
}

TableView {
    anchors.fill: parent
    frameVisible: false
    model: stringsModel

    TableViewColumn { role: "ID"; title: "ID"; width: window.width / 2 }
    TableViewColumn { role: "String"; title: "String"; width: window.width / 2; delegate: stringDelegate;}

    Component {
        id: stringDelegate
        Item {
            id: stringItem
            Text {
                id: stringTxt
                width: parent.width
                text: styleData.value
                wrapMode: TextEdit.WordWrap
            }
        }
    }
}

}

1
0
735
1

Ответы 1

Корневой элемент вашего делегата должен определять его свойство implicitHeight. Что-то вроде этого:

Component {
    id: stringDelegate
    Item {
        id: stringItem
        implicitHeight: stringTxt.paintedHeight
        Text {
            id: stringTxt
            width: parent.width
            text: styleData.value
            wrapMode: TextEdit.WordWrap
        }
    }
}

попытка вышеуказанного решения в делегате -> Недопустимое присвоение свойства: «implicitHeight» - свойство только для чтения

AAEM 15.03.2021 04:55

Qt doc говорит, что некоторые компоненты определяют implicitHeight как доступный только для чтения. Убедитесь, что вы не используете один из них.

Andrii 15.03.2021 09:51

Другие вопросы по теме