PyQt學習隨筆:QTableWidget的selectedRanges、setRangeSelected訪問選中矩形範圍的方法

在QTableWidget對項的操作支持選中多個項的情況下,可以通過方法selectedRanges返回選中矩形的列表,通過方法setRangeSelected將指定矩形範圍的項選中或去選中。相關方法調用語法如下:

  • list[QTableWidgetSelectionRange] selectedRanges()
  • setRangeSelected( QTableWidgetSelectionRange range, bool select)

注:

案例:

爲了說明矩形內的項是邏輯項連續,我們來看一個案例:
在這裏插入圖片描述
上圖中的行3和行4通過如下語句交互了可見位置,同時設定選擇範圍爲(1,1)->(2,2):

self.tableWidget.verticalHeader().moveSection(3,2) #將第4行移動到第3行
rect = QtWidgets.QTableWidgetSelectionRange(1, 1, 2, 2) #定義矩形範圍爲邏輯行爲1,列爲1(即第二行第二列)到第3邏輯行3邏輯列的項
self.tableWidget.setRangeSelected(rect, True)

通過範圍選擇後,選中的範圍從界面上看卻不是連續的,但實際上邏輯項是連續的。

我們通過如下語句輸出選中範圍:

 def showSelectRect(self):
     selectRect = self.tableWidget.selectedRanges()
     for r in selectRect:
         print(f'({r.topRow()},{r.leftColumn()})-->({r.bottomRow()},{r.rightColumn()})')

針對上圖輸出的信息如下:

(1,1)-->(2,2)

如果針對上圖通過鼠標改變選中範圍,如圖:
在這裏插入圖片描述
界面上看起來可見項是連續的,輸出矩形選中範圍結果如下:

(1,1)-->(1,2)
(3,1)-->(3,2)

顯示爲兩個矩形,不是連續的範圍。

老猿Python,跟老猿學Python!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章