在QTableWidget表格部件中,如果需要實現表格中各列要占滿部件中的可用空間,同時實現各列平分所有空間,有兩種方法來實現。
方法一、設置水平表頭的sectionResizeMode為Stretch
當水平表頭的sectionResizeMode設置為QHeaderView.Stretch后,各列會自動均分表格部件顯示部分的水平空間。
示例代碼:
self.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
方法二、設置項的sizeHint屬性
使用該方法時,必須設置水平表頭的sectionResizeMode為QHeaderView.ResizeToContents,同時設置水平各項的sizeHint值為表格部件視口寬度除以列數的大小。
示例代碼:
def setHeadSizeHint(self):
count = self.tableWidget.columnCount()
width = int(self.tableWidget.viewport().width()/count)
for col in range(count ):
horizontalHeaderItem = self.tableWidget.horizontalHeaderItem(col)
horizontalHeaderItem.setSizeHint(QtCore.QSize(width ,20))
self.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
上面的示例代碼是以表頭的列來為例介紹的,實際上數據行的列也可以同樣使用。
附加說明:
- 方法二比方法一復雜很多,但這個方法除了做等分列寬,還可以根據應用需要設定各列不同的寬度比例
- 更多細節請參考《PyQt(Python+Qt)學習隨筆:QTableWidget表格部件中行高和列寬的計算方式》