一、概述
在Qt Designer中,對於樹型視圖QTreeView,在屬性在下面有專門一欄列出了跟標題相關的屬性,如圖:
這些屬性並不是QTreeView的直接屬性,而是QTreeView的header屬性的子屬性。
二、Qt Designer標題屬性與QHeaderView對應關系
2.1、headerVisible
headerVisible屬性對應QHeaderView的visible屬性,表示標題是否可見,該屬性實際上是從QWidget繼承過來的屬性,可以通過isVisible()、setVisible(bool visible)進行訪問。
要設置視圖中標題是否可見,分別用類似如下語句即可:
self.treeView.header().setVisible(True)
self.treeView.header().setVisible(True)
2.2、headerCascadingSectionResizes屬性
headerCascadingSectionResizes屬性對應QHeaderView的CascadingSectionResizes屬性,
CascadingSectionResizes屬性用於控制當用戶調整標題的區域(sections)大小達到其最小值時,是否將界面交互式大小調整級聯到下一區域。關於這個屬性大家可以參考《PyQt(Python+Qt)學習隨筆:QHeaderView的CascadingSectionResizes屬性》相關的介紹。
可以調用方法cascadingSectionResizes()、setCascadingSectionResizes(bool enable)來訪問或設置該屬性。
案例:
self.treeView.header().setCascadingSectionResizes(True)
2.3、headerDefaultSectionSize屬性
headerDefaultSectionSize屬性對應QHeaderView的defaultSectionSize屬性,defaultSectionSize用於控制標題頭各字段區域的在重寫調整大小之前的默認大小。
注意:defaultSectionSize這個屬性的值僅對大小調整模式resizeMode設置為 Interactive 或 Fixed時有效。
默認情況下,此屬性的值依賴於樣式。因此,當樣式更改時,此屬性將同時根據樣式的設置更新。當代碼調用setDefaultSectionSize()后,此屬性就不再受樣式的影響,而調用resetDefaultSectionSize()將恢復根據樣式的設置更新。
可以使用方法defaultSectionSize()、setDefaultSectionSize(int size)來訪問和設置該屬性的值。
2.4、headerHighlightSections屬性
headerHighlightSections屬性對應QHeaderView的highlightSections屬性,highlightSections屬性用於控制當選擇了QTreeView視圖中數據項時,對應的表頭區域是否高亮。
可以通過方法highlightSections() 、setHighlightSections(bool highlight)來訪問或設置該屬性相關的值。
示例代碼:
self.treeView.header().setHighlightSections(True)
注意:
老猿在使用QFileSystemModel來與QTreeView配套驗證該功能時發現該功能不起作用,經驗證測試與QTreeView的sortingEnabled屬性相關,只有在sortingEnabled屬性為True時高亮才起作用。
2.5、headerMinimumSectionSize屬性
headerMinimumSectionSize屬性對應QHeaderView的minimumSectionSize屬性,該屬性用於控制表頭各字段區域的最小大小。
minimumSectionSize是允許的最小尺寸,如果設置為-1,QHeaderView將使用globalStrut(globalStrut是用於控制所有界面交互元素的最小大小)的最大值或fontMetrics(fontMetrics為當前部件字體對應的字符或字符串大小的計算度量數據,如baseline(基線)、width、asent(超出基線的高度)、decent(基線之下的高度))指定的大小。
minimumSectionSize屬性的設置對所有大小調整模式都有效。
2.6、headerShowSortIndicator屬性
headerShowSortIndicator屬性對應QHeaderView的showSortIndicator屬性,showSortIndicator屬性用於控制表頭是否顯示排序標記。排序標記會顯示在當前點擊選擇的標題字段上。
注意在排序標記顯示屬性showSortIndicator為True的情況下:
- 在首次顯示視圖時,默認顯示在第一列的標題上,但此時如果應用數據未進行排序處理,實際顯示數據是按數據生成順序顯示,不一定是有序的;
- 當點擊標題時,排序標記會變化,但視圖中的數據無變化,如果需要變化,應用需要進行調整。調整的方案是接收視圖表頭的sortIndicatorChanged信號,在信號處理中對數據進行排序處理,連接信號的示例代碼如下:
self.treeView.header().sortIndicatorChanged.connect(self.sortTrigged)
上述代碼中sortTrigged是槽函數。
showSortIndicator屬性可以通過方法isSortIndicatorShown() 、setSortIndicatorShown(bool show)進行訪問或設置。
示例代碼:
self.treeView.header().setSortIndicatorShown(True)
2.7、headerStretchLastSection屬性
headerStretchLastSection屬性對應QHeaderView的stretchLastSection屬性,stretchLastSection屬性用於控制最后一個顯示的表頭是否占用視圖中所有可用空間。
stretchLastSection屬性默認值為False,可以通過stretchLastSection()、setStretchLastSection(bool stretch)方法進行訪問和設置。