QTableView是一个二维表格视图控件,用于显示数据,支持排序、编辑、选择等功能。下面是QTableView的API大全和一个简单的示例。
一、QTableView常用API
- setModel(QAbstractItemModel *model): 设置数据模型。
- setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior): 设置选择行为,有QAbstractItemView::SelectRows和QAbstractItemView::SelectItems两个选项。
- setSelectionMode(QAbstractItemView::SelectionMode mode): 设置选择模式,有QAbstractItemView::SingleSelection和QAbstractItemView::MultiSelection两个选项。
- setSortingEnabled(bool enable): 启用或禁用排序功能。
- setEditTriggers(QAbstractItemView::EditTriggers triggers): 设置编辑触发方式,有QAbstractItemView::NoEditTriggers、QAbstractItemView::CurrentChanged、QAbstractItemView::DoubleClicked和QAbstractItemView::SelectedClicked等选项。
- resizeColumnsToContents(): 根据内容自适应列宽。
- resizeRowsToContents(): 根据内容自适应行高。
- horizontalHeader(): 获取水平表头对象。
- verticalHeader(): 获取垂直表头对象。
- currentIndex(): 获取当前索引。
- model(): 获取数据模型。
二、QTableView案例示例
下面是一个简单的示例,展示如何创建一个QTableView并设置数据模型。
from PyQt5.QtWidgets import QApplication, QTableView
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItemModel, QStandardItem
class TableView(QTableView):
def __init__(self):
super().__init__()
self.model = QStandardItemModel(4, 3)
self.model.setHorizontalHeaderLabels(['Name', 'Age', 'Gender'])
self.setItem(0, 0, QStandardItem('Alice'))
self.setItem(0, 1, QStandardItem('25'))
self.setItem(0, 2, QStandardItem('Female'))
self.setItem(1, 0, QStandardItem('Bob'))
self.setItem(1, 1, QStandardItem('30'))
self.setItem(1, 2, QStandardItem('Male'))
self.setModel(self.model)
self.setSortingEnabled(True)
self.setEditTriggers(QTableView.NoEditTriggers)
self.setSelectionBehavior(QTableView.SelectRows)
self.setSelectionMode(QTableView.SingleSelection)
self.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.verticalHeader().setVisible(False)
self.setAlternatingRowColors(True)
self.setStyleSheet("QTableView::item:hover{background-color: #E6E6FA;}")
if __name__ == '__main__':
app = QApplication([])
table_view = TableView()
table_view.show()
app.exec_()
在这个示例中,我们创建了一个QStandardItemModel对象作为数据模型,设置了水平表头标签,然后设置了数据项,并将数据模型设置为QTableView的模型。我们还启用了排序功能,禁用了编辑触发方式,设置了选择行为和选择模式,根据内容自适应列宽和行高,并设置了交替行颜色和鼠标悬停颜色。
运行这个示例,可以看到一个简单的二维表格视图,其中显示了姓名、年龄和性别三列数据,并且可以根据点击表头进行升序或降序排序。
除了上面的常用API外,QTableView还有很多其他的API,包括设置背景颜色、设置网格线、设置行高、设置列宽、获取当前选择的行等等。根据需要选择合适的API进行使用即可。