一、概述
在Qt Designer中,對於表視圖QTableView,在屬性在下面有專門一欄列出了跟標題相關的屬性,如圖:
這些屬性並不是QTableView的直接屬性,而是QTableView的horizontalHeader和verticalHeader兩個屬性的子屬性。
二、horizontalHeader和verticalHeader
horizontalHeader和verticalHeader分別表示視圖數據項的水平標題和豎直標題,水平標題表示每列的標題如字段名,豎直標題表示每行的標題如行號。
horizontalHeader和verticalHeader分別通過QTableView的horizontalHeader()和verticalHeader()方法獲取,返回類型為QHeaderView類型,可以通過QTableView的方法setVerticalHeader(QHeaderView header)、setHorizontalHeader(QHeaderView header)來設置。
三、Qt Designer標題屬性與QHeaderView對應關系
3.1、horizontalHeaderVisible和verticalHeaderVisible
這兩個屬性都對應QHeaderView的visible屬性,表示標題是否可見,該屬性實際上是從QWidget繼承過來的屬性,可以通過isVisible()、setVisible(bool visible)進行訪問。
要設置視圖中水平標題和豎直標題可見,分別用類似如下語句即可:
self.tableView.horizontalHeader().setVisible(True)
self.tableView.verticalHeader().setVisible(True)
3.2、horizontalCascadingSectionResizes和verticalCascadingSectionResizes屬性
horizontalCascadingSectionResizes和verticalCascadingSectionResizes這兩個屬性都對應QHeaderView的CascadingSectionResizes屬性,
CascadingSectionResizes屬性用於控制當用戶調整標題的區域(sections)大小達到其最小值時,是否將交互式大小調整級聯到下一區域。關於這個屬性大家可以參考《PyQt(Python+Qt)學習隨筆:QHeaderView的CascadingSectionResizes屬性》相關的介紹。
3.2、horizontalHeaderDefaultSectionSize和verticalHeaderDefaultSectionSize屬性
horizontalHeaderDefaultSectionSize和verticalHeaderDefaultSectionSize這兩個屬性都對應QHeaderView的defaultSectionSize屬性,defaultSectionSize用於控制標題頭各字段區域的在重寫調整大小之前的默認大小。
注意:defaultSectionSize這個屬性的值僅對大小調整模式resizeMode設置為 Interactive 或 Fixed時有效。
默認情況下,此屬性的值依賴於樣式。因此,當樣式更改時,此屬性將同時根據樣式的設置更新。當代碼調用setDefaultSectionSize()后,此屬性就不再受樣式的影響,而調用resetDefaultSectionSize()將恢復根據樣式的設置更新。
可以使用方法defaultSectionSize()、setDefaultSectionSize(int size)來訪問和設置該屬性的值。
3.3、horizontalHeaderHighlightSections和verticalHeaderHighlightSections屬性
horizontalHeaderHighlightSections和verticalHeaderHighlightSections這兩個屬性對應QHeaderView的highlightSections屬性,highlightSections屬性用於控制當選擇了tableView視圖中數據項時,對應的表頭區域是否高亮。
可以通過方法highlightSections() 、setHighlightSections(bool highlight)來訪問或設置該屬性相關的值。
示例代碼:
self.tableView.verticalHeader().setHighlightSections(True)
self.tableView.horizontalHeader().setHighlightSections(True)
3.4、horizontalHeaderMinimumSectionSize和verticalHeaderMinimumSectionSize屬性
horizontalHeaderMinimumSectionSize和verticalHeaderMinimumSectionSize這兩個屬性對應QHeaderView的minimumSectionSize屬性,該屬性用於控制表頭各字段區域的最小大小。
minimumSectionSize是允許的最小尺寸,如果設置為-1,QHeaderView將使用globalStrut(globalStrut是用於控制所有界面交互元素的最小大小)的最大值或fontMetrics(fontMetrics為當前部件字體對應的字符或字符串大小的計算度量數據,如baseline(基線)、width、asent(超出基線的高度)、decent(基線之下的高度))指定的大小。
minimumSectionSize屬性的設置對所有大小調整模式都有效。
3.5、horizontalHeaderShowSortIndicator和verticalHeaderShowSortIndicator屬性
horizontalHeaderShowSortIndicator和verticalHeaderShowSortIndicator這兩個屬性對應QHeaderView的showSortIndicator屬性,showSortIndicator屬性用於控制表頭是否顯示排序標記。排序標記會顯示在當前點擊選擇的標題字段上。
注意在排序標記顯示屬性showSortIndicator為True的情況下:
- 在首次顯示視圖時,默認顯示在第一列和第一行的標題上,但此時如果應用數據未進行排序處理,實際顯示數據是按數據生成順序顯示;
- 當點擊水平標題時,就會按點擊字段對視圖數據排序顯示,再次點擊就會反序顯示;
- 當點擊豎直標題時,排序標記會變化,但視圖中的數據無變化,如果需要變化,應用需要進行調整。
以上情況是老猿驗證的情況,最后一點是否正確老猿暫時不能完全確認。
showSortIndicator屬性可以通過方法isSortIndicatorShown() 、setSortIndicatorShown(bool show)進行訪問或設置。
示例代碼:
self.tableView.horizontalHeader().setSortIndicatorShown(True)
3.6、horizontalHeaderStretchLastSection和verticalHeaderStretchLastSection屬性
horizontalHeaderStretchLastSection和verticalHeaderStretchLastSection這兩個屬性對應QHeaderView的stretchLastSection屬性,stretchLastSection屬性用於控制最后一個顯示的表頭是否占用視圖中所有可用空間。
stretchLastSection屬性默認值為False,可以通過stretchLastSection()、setStretchLastSection(bool stretch)方法進行訪問和設置。
一般情況下,只有水平表頭才需要設置該屬性,豎直表頭也可以設置該屬性,並且在視圖中數據行數不多時會拉伸最后一行數據占用整個視圖的空間,但並沒有多少實際意義。