小编log*_*oft的帖子

带有 QSqlRelationalDelegate 的 QSqlRelationalTableModel 无法在 QAbstractProxyModel 后面工作

我需要交换 QSqlRelationalTableModel 的行和列。经过大量搜索后,我编写了一个小代理模型来翻转行和列。

它正在部分发挥作用。表中的关系已解决并显示,但选择它们的保管箱丢失了。另外,我如何让他们更新?

这是一个重现该行为的独立脚本。

我的错误在哪里?我强烈怀疑它与模型的信号和插槽有关,但我没有找到任何暗示哪些信号和插槽以及如何重新实现它们。

还有另一种更简单的方法来交换行和列吗?

编辑:澄清委托模型并不完全不起作用,它只是部分起作用。

from PySide import QtCore, QtGui, QtSql
from PySide.QtCore import Qt, QModelIndex
from PySide.QtGui import QAbstractProxyModel, QWidget, QHBoxLayout, QTableView
from PySide.QtSql import QSqlRelationalDelegate


class FlipProxyModel(QAbstractProxyModel):
    def __init__(self, parent=None):
        super(FlipProxyModel, self).__init__(parent)

    def mapFromSource(self, index):
        return self.createIndex(index.column(), index.row())

    def mapToSource(self, index):
        return self.sourceModel().index(index.column(), index.row(), QModelIndex())

    def columnCount(self, parent):
        return self.sourceModel().rowCount(QModelIndex())

    def rowCount(self, parent):
        return self.sourceModel().columnCount(QModelIndex())

    def index(self, row, column, parent):
        return self.createIndex(row, column)

    def parent(self, index):
        # tables have no parent object so return empty …
Run Code Online (Sandbox Code Playgroud)

pyqt pyside qsqltablemodel qsqldatabase

1
推荐指数
1
解决办法
1773
查看次数

标签 统计

pyqt ×1

pyside ×1

qsqldatabase ×1

qsqltablemodel ×1