我需要交换 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)