PySide6中QTableWidget添加自定义组件显示异常求助
解决PySide6 QTableWidget自定义组件与单元格间隙问题
要消除自定义组件和QTableWidget单元格之间的间隙,需从布局边距/间距、组件大小策略、表格行高适配三个维度调整,具体修改如下:
1. 修改自定义组件的布局设置
默认QHBoxLayout自带边距和间距,这是间隙的核心来源,直接移除这些默认值:
from PySide6.QtWidgets import QWidget, QLineEdit, QPushButton, QHBoxLayout, QSizePolicy class PositionAddWidgets1(QWidget): def __init__(self, parent=None): super().__init__(parent) self.line_edit = QLineEdit(self) self.button1 = QPushButton("Add", self) self.button2 = QPushButton("1800", self) self.button3 = QPushButton("900", self) self.button4 = QPushButton("200", self) layout = QHBoxLayout() # 移除布局内部边距 layout.setContentsMargins(0, 0, 0, 0) # 移除组件间的间距 layout.setSpacing(0) layout.addWidget(self.line_edit) layout.addWidget(self.button1) layout.addWidget(self.button2) layout.addWidget(self.button3) layout.addWidget(self.button4) self.setLayout(layout) # 设置组件大小策略,让组件完全填充单元格空间 self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
2. 适配表格行高
添加组件后,让表格行高自动匹配组件高度,避免上下方向的间隙:
custom_widget = PositionAddWidgets1() self.tableWidget_position_sell.setCellWidget(row, 6, custom_widget) # 让行高自动适配组件内容 self.tableWidget_position_sell.resizeRowToContents(row)
效果对比
当前显示效果:
期望显示效果(调整后可实现):
内容的提问来源于stack exchange,提问作者Simbu
相关产品推荐
相关产品推荐

