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

PyQt5如何在QTableWidget单元格插入QTextEdit并解决组件重叠问题

解决方案

问题根源

你只设置了单元格内QTextEdit控件的最小高度,没有同步调整QTableWidget对应行的高度,单元格高度不足以容纳加高的QTextEdit,就会出现控件溢出、和下一行组件重叠的问题。

正确调整步骤

  • 计算QTextEdit的适配高度时,在文档原始高度基础上增加少量偏移量,抵消控件自带的内边距,避免文字被边框截断
  • 给QTextEdit设置最小高度的同时,同步调用setRowHeight()方法设置对应行的高度,和QTextEdit高度匹配
  • 如果需要支持用户编辑QTextEdit内容后自动适配高度,可以绑定QTextEdit的textChanged信号,内容变更时重新计算高度更新控件和行高

修改后的核心代码

你可以把原有循环里的高度调整部分替换为以下代码:

docHeight = self.tableWidget_3.cellWidget(i, 0).document().size().height()
# 加8px偏移量适配控件内边距,可根据实际显示效果调整数值
adjust_height = int(docHeight) + 8
self.tableWidget_3.cellWidget(i, 0).setMinimumHeight(adjust_height)
# 同步设置对应行的高度
self.tableWidget_3.setRowHeight(i, adjust_height)

可选优化

如果需要用户编辑QTextEdit内容后自动适配行高,可以在创建QTextEdit时添加如下信号绑定:

def update_row_height(row, edit):
    h = int(edit.document().size().height()) + 8
    edit.setMinimumHeight(h)
    self.tableWidget_3.setRowHeight(row, h)

combo.textChanged.connect(lambda row=i, edit=combo: update_row_height(row, edit))

修改后就不会再出现组件重叠的问题,文本也不会被单元格边框截断。

内容的提问来源于stack exchange,提问作者Eliazar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:27:03