QSqlTableModel,数据函数重载

1 投票
1 回答
783 浏览
提问于 2025-04-15 19:44

我正在尝试继承 QSqlTableModel,以便按照我需要的方式显示表格中的数据。

class TableViewModel(QSqlTableModel):

    def __init__(self):
        super(TableViewModel, self).__init__()


    def flags(self, modelIndex):
        if not modelIndex.isValid():
            return
        if modelIndex.column() != 1 and modelIndex.column() != 4:
            return Qt.ItemIsEnabled | Qt.ItemIsSelectable
        return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable

    def data(self, modelIndex, role=Qt.DisplayRole):
        if not modelIndex.isValid():
            return QVariant()

        if role != Qt.DisplayRole & role != Qt.EditRole:
            return QVariant()

        return record.value(modelIndex.column())

用这段代码我只得到了空单元格。如果没有 data() 函数,这段代码运行得很好,TableView 中的数据显示得正好是我想要的。

我只是被从 QSqlTableModel 中获取数据的过程搞得很困惑。我应该去哪里找这些数据?还是说我调用的方式不对?

提前谢谢你们。

1 个回答

2

我不太清楚那个 record.value 应该是什么(在你的代码里没有说明这个 record 变量是在哪里定义的,或者它是怎么、什么时候被设置的)。不过,关于“从 QSqlTableModel 获取数据”(我假设你是指你正在继承的基类),可以使用

whatever = QSqlTableModel.data(self, modelIndex, role)

撰写回答