我們在使用QTableWidget的時候,經常會出現列寬大小和我們想象不一致的情況,如下圖:
內容不能完全顯示,需要手動調整列寬才能顯示完全。
還有如下圖:
因此需要我們擅於調整列寬為我們所使用,現將列寬調整總結如下(行寬請參考):
列寬自動分配
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) # self.tableWidget.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
效果如下:
此種模式下,我們沒法手動調整列寬。
手動調整
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
效果如下:
使用Qt設計師編譯后生成的代碼就是這種的。
固定值
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed)
效果如下:
用戶無法調整該部分的大小。該部分只能使用resizeSection()以編程方式調整大小。節大小默認為defaultSectionSize。
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.tableWidget.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents)
我們把它和列寬自動分配結合在一起看,效果立馬顯現。
效果如下:
上面兩種方式結合
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.tableWidget.horizontalHeader().setSectionResizeMode(0, QHeaderView.Interactive)
效果如下:
看到沒有,列寬是自動分配的,但是第一列我們可以手動調整寬度,而表格整體的列寬仍是自動分配的。第二、三列我們沒有辦法調整列寬,這個是自動分配的。
自定義列寬
self.tableWidget.setColumnWidth(0, 40) self.tableWidget.setColumnWidth(1, 200) self.tableWidget.setColumnWidth(2, 200)
效果如下: