1. 程式人生 > >PyQt5中QTableWidget設置列寬大小的幾種方式

PyQt5中QTableWidget設置列寬大小的幾種方式

etc vertica toc 出現 沒有 ets ima class 兩種

我們在使用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)

效果如下:

技術分享圖片

PyQt5中QTableWidget設置列寬大小的幾種方式