我有一个使用pyqt5的应用程序,它在qml中有一个tableview,它从一个dataframe获取数据。
每次使用新的dataframe加载更新数据时,我都需要列宽自动适应内容的宽度。我在论坛上没有发现关于这个问题的任何新的答案,旧的答案非常令人困惑,我不敢相信在2021年,没有一个简单的解决方案可以解决桌上治疗中如此常见的问题。
我拥有的qml代码如下:
TableView {
id: tableView
antialiasing: true
width: parent.width
height: parent.height
columnWidthProvider: function (column) { return 200; }
rowHeightProvider: function (column) { return 60; }
leftMargin: rowsHeader.implicitWidth
topMargin: columnsHeader.implicitHeight
rightMargin: columnsHeader.implicitHeight
Layout.fillHeight: true
model: table_model
delegate: Rectangle {
color: "transparent"
Text {
text: display
anchors.fill: parent
anchors.margins: 10
horizontalAlignment: Text.AlignHCenter
color: {
if (temaescolhido.currentText == 'Claro') return 'Black'
return 'White'
}
font.pixelSize: 15
verticalAlignment: Text.AlignVCenter
}
}
Rectangle { // mask the headers
z: 3
color: "transparent"
y: tableView.contentY
x: tableView.contentX
width: tableView.leftMargin
height: tableView.topMargin
}
Row {
id: columnsHeader
y: tableView.contentY
z: 2
Repeater {
model: tableView.columns > 0 ? tableView.columns : 1
Label {
width: tableView.columnWidthProvider(modelData)
height: 35
text: table_model.headData(modelData, Qt.Horizontal)
color: 'green'
font.bold: true
font.pixelSize: 15
padding: 10
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
background: Rectangle { color: "#adadad" }
}
}
}
Column {
id: rowsHeader
x: tableView.contentX
z: 2
Repeater {
model: tableView.rows > 0 ? tableView.rows : 1
Label {
width: 35
height: tableView.rowHeightProvider(modelData)
text: table_model.headData(modelData, Qt.Vertical)
color: 'green'
font.bold: true
font.pixelSize: 15
padding: 10
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
background: Rectangle { color: "#adadad" }
}
}
}
ScrollIndicator.horizontal: ScrollIndicator { }
ScrollIndicator.vertical: ScrollIndicator { }
}
暂无答案!
目前还没有任何答案,快来回答吧!