重新实现QSqlTableMod的数据方法的PyQt问题

2024-09-28 21:02:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的新手,主要是pyqt。问题很简单:我有一个QTableView,我想“简单地”改变一些行的颜色。我四处阅读后发现,最简单的解决方案应该是以这样的方式覆盖模型中的数据方法:

class MyModel(QtSql.QSqlTableModel):

    def data(self,idx,role):
        testindex=self.index(idx.row(),idx.column(),idx.parent())
        if(role==QtCore.Qt.BackgroundRole):
            return QtGui.QColor(255,0,0)
        elif role == QtCore.Qt.DisplayRole:
            return QtSql.QSqlTableModel().data(testindex)

当我使用这个模型重新实现时,行的颜色正在改变,但是单元格值消失了,返回语句QtSql.QSqlTableModel().data(testindex)总是None。 我快疯了,想找到解决办法。你能帮帮我吗?在


Tags: 模型selfdatareturn颜色qtpyqtrole
1条回答
网友
1楼 · 发布于 2024-09-28 21:02:41

您的实现有两种破坏方式:(1)对于任何未指定的角色,它总是返回None;(2)每次请求display role时,它都会创建一个QSqlTableModel的新实例,而不是调用基类方法。在

实施应该是这样的:

class MyModel(QtSql.QSqlTableModel):

    def data(self, index, role):
        if role == QtCore.Qt.BackgroundRole:
            return QtGui.QColor(255, 0, 0)
        return super(MyModel, self).data(index, role)

相关问题 更多 >