pyside6的QAbstractTableModel类在实例化时必须重写rowCount()、columnCount()和data()三个方法,标题头由headerData()方法提供。
rowCount([parent=QModelIndex()])方法 返回表格行数
def rowCount(self,parent:QModelIndex) -> int:
return 2
columnCount([parent=QModelIndex()])方法 返回表格列数
def columnCount(self, index: QModelIndex) -> int:
return 6
headerData(section, orientation[, role=Qt.DisplayRole])方法 返回行或列标题头,orientation的值判断行还是列,根据role判断返回内容
header_data = ['第一列','第二列','第三列','第四列','第五列','第六列']
def headerData(self, section: int, orientation: Qt.Orientation, role: Qt.ItemDataRole) -> Any:
if role == Qt.ItemDataRole.DisplayRole and orientation == Qt.Orientation.Horizontal:
return header_data[section]
data(index[, role=Qt.DisplayRole]) 根据role的值,返回表格内容,包括值、字体颜色、单元格颜色等
| role | 用途 |
|---|---|
| DisplayRole | 主要用于以文本的形式显示数据。 |
| EditRole | 可用于文本数据的编辑。 |
| DecorationRole | 可以将数据通过图标的方式呈现出来。 |
| ToolTipRole | 实现当鼠标处于选中的数据时,显示出数据的相关提示。 |
| StatusTipRole | 在状态栏显示提示的数据 |
| WhatsThisRole | 可以通过选中数据摁下快捷键shift+F1来显示提示。 |
| FontRole | 可以改变数据的字体。 |
| TextAlignmentRole | 可以将文本的位置进行居中、居左居右调整。 |
| BackgroundColorRole | 可以改变背景色。 |
| TextColorRole | 设置文字颜色 |
| ForegroundRole | 可以改变前景色 |
| CheckStateRole | 在某列中设置了CheckStateRole角色后,设置的列则可以显示出一个CheckBox。 |
| AccessibleTextRole | 用于辅助功能和插件扩展的文本(如屏幕阅读器) |
| AccessibleDescriptionRole | 用于无障碍项目的描述 |
| SizeHintRole | 可以提示相应大小 |
| InitialSortOrderRole | 标题视图初始排序顺序 |
| UserRole | 用于应用程序的特定目的(自己定义用途)。用户自己决定使用什么数据,如何处理数据。 |
table_data = [['1-1','1-2','1-3','1-4','1-5','1-6'],['2-1','2-2','2-3','2-4','2-5','2-6']]
def data(self, index: QModelIndex, role: Qt.ItemDataRole) -> Any:
if role == Qt.ItemDataRole.DisplayRole:
return table_data[index.row()][index.column()]