我需要向使用Python中定义的自定义模型的TableView添加一个头。在
我尝试用我的自定义头重写QAbstractTableModel中的headerData函数。下面是同一类实现的C++实例中描述的一系列步骤:Header to a TableView
不幸的是,标题仍然没有出现在表的顶部。但是,该表包含重写QAbstractTableModel中的数据函数的数据。在
Python:class RouteTableModel(QAbstractTableModel):
def __init__(self, parent=None, *args):
super().__init__()
self._datatable = None
self._header = {
0 : 'X',
1 : 'Y',
2 : 'Z'
}
def data(self, index, role=Value):
i = index.row()
j = index.column()
if role == self.Value:
return '{0}'.format(self._datatable[i][j]['value'])
elif role == self.Selected:
return self._datatable[i][j]['selected']
else:
return None
def headerData(self, section, orientation, role=Qt.DisplayRole):
if role == Qt.DisplayRole:
if orientation == Qt.Horizontal:
return self._header[section]
else:
return None
else:
return None
# create the application instance
app = QApplication(sys.argv)
# create a QML engine
engine = QQmlApplicationEngine()
# instantiate the TableModel class
xyztablemodel = RouteTableModel()
engine.rootContext().setContextProperty('XYZTableModel', xyztablemodel)
# load main QML file and start app engine
engine.load('view.qml')
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())
质量管理:
^{pr2}$
Python或qml代码中不会出现错误消息。我希望标题填充到TableView中列的上方,但它们不会显示出来。在