You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:06:14