一、基礎設置
QtTableWidget是一個方便的用於顯示數據的表控件,它的基礎設置有以下幾個方面:
1、設置列數和行數
tableWidget.setColumnCount(3) #設置列數為3
tableWidget.setRowCount(5) #設置行數為5
2、設置每個單元格的大小(可選操作)
tableWidget.horizontalHeader().setDefaultSectionSize(120) #設置每列的默認寬度為120
tableWidget.verticalHeader().setDefaultSectionSize(50) #設置每行的默認高度為50
3、設置表頭(可選操作)
tableWidget.setHorizontalHeaderLabels(['姓名', '年齡', '職業'])
二、插入數據
在QtTableWidget中插入數據可以使用setItem方法,Syntax如下:
QTableWidgetItem *QTableWidget::item(int row, int column) const
void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)
其中setItem的第一個參數為所要插入的單元格的行數,第二個參數為所要插入的單元格的列數,第三個參數為插入的單元格的內容。QTableWidgetItem類提供一些工具函數,如setText(設置單元格的文本)和setIcon(設置單元格的圖標)。
newItem = QTableWidgetItem("李華")
tableWidget.setItem(0, 0, newItem) #第一行第一列插入新元素“李華”
三、合併單元格
QtTableWidget提供一個方便的方法來合併單元格,這是通過setSpan方法實現的。syntax如下:
void QTableWidget::setSpan(int row, int column, int rowSpan, int columnSpan)
其中row和column是開始單元格的行號和列號,rowSpan和columnSpan是要合併的行數和列數。
tableWidget.setSpan(0, 1, 1, 2) #合併第一行第二列和第三列的單元格
四、信號和槽函數
QT為所有GUI控件提供了信號和槽函數機制。signal表示一個操作已經完成,slot是一個操作被觸發時需要執行的方法。PyQt5為Qt信號和槽函數提供了一些修飾器來簡化代碼編寫。
1、單元格點擊事件
@pyqtSlot(QTableWidgetItem)
def on_table_cellClicked(self, item):
print(item.text())
2、表頭點擊事件
@pyqtSlot(int)
def on_table_horizontalHeaderDoubleClicked(self, index):
print(index)
五、排序和篩選
QT提供QSortFilterProxyModel模塊進行排序和篩選。我們可以將模型和視圖區分開,這樣就可以在不損失原始數據的情況下只是改變視圖。我們可以定義一個QSortFilterProxyModel對象並設置它的大小和排序方法。在下面的例子中,我們僅對第一列進行排序。
sortingModel = QtCore.QSortFilterProxyModel(self)
sortingModel.setSortRole(QtCore.Qt.DisplayRole) #設置排序的對象為display role,默認role是UserRole-1
sortingModel.setDynamicSortFilter(True)
sortingModel.setSourceModel(self.tableWidget.model())
self.tableWidget.setModel(sortingModel)
sortingModel.sort(0, QtCore.Qt.AscendingOrder) #設置該列按升序排列
六、其他操作
1、隱藏表格
tableWidget.hide()
2、設置表格不可編輯
tableWidget.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
3、設置行選中模式
tableWidget.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
4、刪除單元格
tableWidget.setItem(3, 1, None) # 刪除第4行第2列
5、獲取某個單元格的值
tableWidget.item(3, 1).text() # 獲取第4行第2列單元格的值
七、總結
通過上述方式,我們可以方便地完成數據的錄入、顯示、修改、排序和篩選等操作。QtTableWidget作為一個常用的GUI控件,可以應用於各種數據管理和分析需要中。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/288911.html