QSqlRelationalDelegate来自QSortFilterProxyModel,显示Text Not Id

时间:2014-05-24 11:52:38

标签: python qt delegates pyqt qtableview

我有QSqlRelationalTableModelQDataWidgetMapper。它还会提供QSortFilterProxyModel代理,然后代理QTableView。已经尝试了三个小时,在这里搜索过&还找到this post

QTableView需要自定义委托,似乎QSqlRelationalDelegate是合乎逻辑的选项,例如:

class TableDelegate(QSqlRelationalDelegate):
    def __init__(self):
        QSqlRelationalDelegate .__init__(self)

    def createEditor(self, parent, option, i):
        if i.column() == 1:
            editor = QComboBox(parent)
            editor.setModel(ComboModel)
            editor.setModelColumn(ComboModelVisible)
            return editor

    def setEditorData(self, editor, i):
        if i.column() == 1:
            print i.model().data(i).toInt()

这显示填充的QComboBox,但打印元组(0,False)。使用print i.model().data(i).toString()打印ComboBox的可视文本,而不是id整数。虽然i引用了索引位置,但我不知道为什么它会返回相关SQL表的文本内容,而不是基表的id返回到被读/写。还尝试更改为print i.model().data(i, Qt.EditRole).toString()

非常感谢任何帮助。

0 个答案:

没有答案