温馨提示×

使用QAbstractTableModel的简单范例

小云
201
2023-09-13 05:50:30
栏目: 编程语言

下面是一个使用QAbstractTableModel的简单范例:

from PyQt5.QtCore import QAbstractTableModel, Qt class MyTableModel(QAbstractTableModel): def __init__(self, data, header): super().__init__() self._data = data self._header = header def rowCount(self, parent): return len(self._data) def columnCount(self, parent): return len(self._data[0]) def data(self, index, role): if role == Qt.DisplayRole: row = index.row() column = index.column() return self._data[row][column] return None def headerData(self, section, orientation, role): if role == Qt.DisplayRole: if orientation == Qt.Horizontal: return self._header[section] elif orientation == Qt.Vertical: return section + 1 return None # 使用范例 if __name__ == "__main__": import sys from PyQt5.QtWidgets import QApplication, QTableView app = QApplication(sys.argv) data = [ ["Alice", 25, "Female"], ["Bob", 32, "Male"], ["Charlie", 45, "Male"], ] header = ["Name", "Age", "Gender"] model = MyTableModel(data, header) view = QTableView() view.setModel(model) view.resize(300, 200) view.show() sys.exit(app.exec_()) 

这个例子创建了一个自定义的QAbstractTableModel派生类,用于显示一个简单的表格。构造函数中传入了数据和表头,然后在rowCount和columnCount方法中返回数据的行数和列数。在data方法中,根据index和role返回相应的数据。在headerData方法中,根据section、orientation和role返回表头的数据。最后,通过创建一个QTableView对象,并将自定义的TableModel对象设置为其模型,来显示表格数据。

0