如何让qml TableView行高动态适应内容
Posted
技术标签:
【中文标题】如何让qml TableView行高动态适应内容【英文标题】:How to make qml TableView row height dynamically adapt to content 【发布时间】:2018-10-31 11:32:38 【问题描述】:问题如下:
如果文本的长度大于单元格的宽度,则文本被换行,但行高不增加。显示剩余的文本被切掉。我的另一个问题是,如何使每个单元格的高度适应其中包含的文本?
这是 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】:您的委托的根项目应定义其implicitHeight
属性。
像这样的:
Component
id: stringDelegate
Item
id: stringItem
implicitHeight: stringTxt.paintedHeight
Text
id: stringTxt
width: parent.width
text: styleData.value
wrapMode: TextEdit.WordWrap
【讨论】:
在委托中尝试上述解决方案 --> 无效的属性分配:“implicitHeight”是只读属性 Qt doc says 一些组件将implicitHeight
定义为只读。确保您不要使用其中之一。以上是关于如何让qml TableView行高动态适应内容的主要内容,如果未能解决你的问题,请参考以下文章
根据内容动态调整tableview单元格的高度 - iOS Swift
如何计算 tableView 行高并将值传递给 heightForRowAtIndexPath