Как сделать, чтобы высота строки qml TableView динамически адаптировалась к контенту - PullRequest
0 голосов
/ 31 октября 2018

Проблема заключается в следующем:

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

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 голосов
/ 31 октября 2018

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

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