我有QSqlRelationalTableModel
喂QDataWidgetMapper
。它还会提供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()
非常感谢任何帮助。