老猿將QTableWidget表格部件中反映部件當前情況的一些方法歸類爲部件狀態訪問方法,包括部件的行數、列數、當前項、當前行、當前列等屬性訪問方法。
1、行數rowCount
QTableWidget的rowCount屬性保存表格部件中的行數,在QTableWidget創建時如果沒有指定行數,則缺省行數爲0,QTableWidget創建後可以通過 setRowCount方法調整行數。
要獲取當前表格部件中的行數,可以通過rowCount()方法獲取,要設置表格部件的行數,可以通過setRowCount(int rows)調整表格的行數,如果參數rows小於現在表格中的實際行數,則表格中超出參數的行數數據會丟棄,就算是後面將行數或列數恢復也不能恢複相關數據。
2、列數columnCount
columnCount屬性保存表格部件中的列數,相關屬性和操作方法和rowCount類似。在QTableWidget創建時如果沒有指定列數,則缺省列數爲0,QTableWidget創建後可以通過 setColumnCount方法調整。
columnCount可以通過columnCount()方法獲取,通過setColumnCount(int columns)設置。
3、當前項訪問方法
當前項是指當前鼠標和鍵盤焦點所在項,在項可以進行選擇操作時,當前項可以是選中狀態,也可以是未選中狀態,選中項也不一定是當前項。與當前項相關的方法包括:
- QTableWidgetItem currentItem() :返回當前項對應項對象,如果沒有當前項則返回None
- setCurrentItem(QTableWidgetItem item):設置當前項
- setCurrentItem(QTableWidgetItem item, QItemSelectionModel.SelectionFlags command):設置當前項
- setCurrentCell(int row, int column):設置當前項
- setCurrentCell(int row, int column, QItemSelectionModel.SelectionFlags command):設置當前項
注意:
- 後面4個方法都是設置當前項,方法名爲setCurrentItem的參數是QTableWidgetItem實例,方法名爲setCurrentCell的參數是行和列,即這兩類方法依據的項定位方法不同
- 參數中帶command參數的,要求除了將當前項改爲參數確認的項之外,還要求有額外的響應,具體響應由command參數確認。關於QItemSelectionModel.SelectionFlags 請參考《PyQt(Python+Qt)學習隨筆:Mode/View中的枚舉類QItemSelectionModel.SelectionFlag取值及含義》;
- 設置當前項的方法無返回值,如果設置失敗(如指定參數項在部件中不存在)是無法直接判斷的,如果設置成功,會觸發QTableWidget部件發射信號currentItemChanged和currentCellChanged信號以及currentChanged信號,這三個信號都表示當前項改變了,只是信號簽名不一樣(關於信號簽名請見《PyQt(Python+Qt)學習隨筆:信號簽名(signature of the signal)是什麼?》)。其中前2個信號是表格部件自身的信號,currentChanged信號是表格部件父類QTableView的信號。
- 如果當前項沒有,則currentItem()方法返回None
4、當前行和列訪問方法
當前項所在的行和列,既可以通過當前項的QTableWidgetItem實例對象的行號(row()方法)和列號(column()方法)獲取,也可以直接通過QTableWidget獲取。調用語法如下:
- int currentColumn()
- int currentRow()
如果部件沒有當前項,則上述兩個方法返回-1。