js20184 发表于 2023-12-25 16:32

在PyQt6中,使 QTableWidget 的列自动适应内容宽度

在PyQt6中,要使 QTableWidget 的列自动适应内容宽度,可以使用 QHeaderView 的 setSectionResizeMode 方法。这个方法可以设置表头(header)的尺寸调整模式,其中 QHeaderView.Stretch 和 QHeaderView.ResizeToContents 是两种常用的模式。
[*]QHeaderView.Stretch:将所有列的宽度调整为填满整个 QTableWidget 的宽度。
[*]QHeaderView.ResizeToContents:根据内容自动调整每列的宽度。
以下是一个简单的示例,展示如何设置 QTableWidget 以自动适应内容宽度:from PyQt6.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QHeaderView

app = QApplication([])
table = QTableWidget(5, 3)# 5行3列的表格

# 填充数据
for i in range(5):
    for j in range(3):
      item = QTableWidgetItem(f"Item {i}-{j}")
      table.setItem(i, j, item)

# 设置列宽自适应内容
header = table.horizontalHeader()
header.setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)

table.show()
app.exec()
在这个示例中,创建了一个5行3列的 QTableWidget,并使用 setSectionResizeMode 方法设置了水平表头的尺寸调整模式为 ResizeToContents,这意味着列宽会根据内容自动调整。如果想要让某些列使用不同的尺寸调整模式,可以针对那些特定的列单独调用 setSectionResizeMode 方法。例如,如果您想要第一列根据内容调整宽度,而其他列平均分配剩余空间,可以这样设置:header.setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents)# 第一列根据内容调整宽度
for i in range(1, table.columnCount()):
    header.setSectionResizeMode(i, QHeaderView.ResizeMode.Stretch)# 其他列平均分配宽度

FruitBaby 发表于 2023-12-25 18:53

按照楼主的步骤试试

shojnhv 发表于 2023-12-25 20:48

学习了,多多分享
页: [1]
查看完整版本: 在PyQt6中,使 QTableWidget 的列自动适应内容宽度