QTableWidget 设置列宽无效
时间: 2025-02-18 14:28:25 浏览: 55
### 解决 QTableWidget 设置列宽无效的问题
当遇到 `QTableWidget` 的列宽设置不生效的情况时,通常是因为默认的大小调整模式覆盖了手动设定的宽度。为了确保列宽能够按照预期工作,可以通过修改表头的属性来实现。
#### 修改水平表头策略
通过调用 `setSectionResizeMode()` 方法可以控制每列的行为方式:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QHeaderView
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
table_widget = QTableWidget(4, 3)
# 创建一些示例数据并填充到表格中
items = [
["刘备", "[email protected]", "0755-123456"],
["关羽", "[email protected]", "020-987654"],
["张飞", "[email protected]", "021-3233288"]
]
for row_index, item_row in enumerate(items):
for col_index, value in enumerate(item_row):
cell_item = QTableWidgetItem(value)
table_widget.setItem(row_index, col_index, cell_item)
# 关键部分:设置特定列的宽度以及整体表头行为
header = table_widget.horizontalHeader()
header.setSectionResizeMode(0, QHeaderView.ResizeToContents) # 自动适应内容长度
header.setSectionResizeMode(1, QHeaderView.Interactive) # 用户可拖拽改变尺寸
header.resizeSection(2, 150) # 手动指定第三列固定宽度
# 将创建好的表格部件放置于窗口中央显示区域
central_widget = table_widget
main_window.setCentralWidget(central_widget)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
上述代码展示了如何为不同类型的列应用不同的大小调整模式,并且对于希望保持固定的某一列可以直接使用 `resizeSection(index, width)` 来精确定义其宽度[^1]。
另外需要注意的是,在某些情况下如果启用了自动伸缩功能 (`Stretch`) 或者设置了其他全局性的布局参数也可能会干扰单个列宽的效果,因此还需要检查是否有类似的配置影响到了最终呈现的结果[^3]。
阅读全文
相关推荐











