如何消除QTreeWidget滚动到底部后出现的底部空白区域?
QTreeWidget滚动到底部出现空白的解决办法
问题说明
我用PyQt5做了个4列的QTreeWidget,最后一列填充了QFrame。运行下方的ui.py代码后,滚动到控件底部会出现一块空白区域。经计算,滚动区域的理想总高度为1823(表头高度加所有行高度之和),但手动拖动对话框调整大小后,空白问题就消失了。
重现代码
文件 ui.py
from PyQt5 import QtCore, QtGui, QtWidgets import sys if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) app.setStyle("Windows") treeWidget = QtWidgets.QTreeWidget() treeWidget.headerItem().setText(0, "Α/Α") treeWidget.headerItem().setText(1,"Τύπος") treeWidget.headerItem().setText(2,"Τίτλος") treeWidget.headerItem().setText(3,"Προεπισκόπιση") treeWidget.setStyleSheet("QTreeWidget::item{height:60px;}") l = [] for i in range(0,30): l.append(QtWidgets.QTreeWidgetItem(["1","1","1","1"])) treeWidget.addTopLevelItems(l) # add everything to the tree treeWidget.show() right_height = treeWidget.header().height() for el in l: right_height += treeWidget.visualItemRect(el).height() print(right_height) sys.exit(app.exec_())
问题截图

解决方法
出现这个问题是因为用样式表设置行高后,QTreeWidget初始化时没能及时计算出正确的内容总高度,导致滚动区域尺寸错误。以下是三种可行的解决思路:
方法一:强制触发布局更新
在调用treeWidget.show()之后,添加两行代码强制控件重新计算尺寸:
treeWidget.show() # 新增代码 treeWidget.updateGeometry() treeWidget.viewport().update()
方法二:延迟调整控件高度
利用QTimer等控件完全显示后再调整高度,确保所有行都完成布局:
from PyQt5.QtCore import QTimer # ... 原代码添加完所有项后 treeWidget.show() def fix_scroll_height(): total_height = treeWidget.header().height() for item in l: total_height += treeWidget.visualItemRect(item).height() # 加20是给滚动条预留空间,可根据实际情况调整 treeWidget.setFixedHeight(total_height + 20) # 延迟100ms执行,确保控件布局完成 QTimer.singleShot(100, fix_scroll_height)
方法三:自定义TreeWidget重载尺寸提示(推荐)
编写自定义的QTreeWidget子类,重写sizeHint()方法,直接返回正确的内容高度:
class CustomTreeWidget(QtWidgets.QTreeWidget): def sizeHint(self): total_height = self.header().height() # 遍历所有项计算总高度 for item in self.findItems("", QtCore.Qt.MatchContains): total_height += self.visualItemRect(item).height() # 返回合适的尺寸,宽度沿用当前控件宽度 return QtCore.QSize(self.width(), total_height) # 替换原有的控件创建代码 treeWidget = CustomTreeWidget()
以上方法都能让QTreeWidget正确计算内容总高度,消除底部的空白区域。
内容的提问来源于stack exchange,提问作者Chris P
相关产品推荐
相关产品推荐

