Python 在QComboBox中返回多列

Python 在QComboBox中返回多列,python,mysql,pyqt,pyside2,Python,Mysql,Pyqt,Pyside2,我使用QComboBox作为表中的委托,用于设置基础sql表的列。组合框设置为QProxyFilterModel,然后再设置为QTableView模型,因为组合框中的信息存在于另一个sql表中 我想做的是在按下组合框时返回多个列,而不是只返回一个列。我知道要做的是字符串连接,但我不确定在哪里实现它 因为我已经对QTableView进行了子类化,所以我想我可以创建一个自定义角色来连接特定列并将它们返回到代理模型,但我不知道如何从代理模型传递角色。我是否在代理模型中重新实现方法数据 另一个明显的选择

我使用QComboBox作为表中的委托,用于设置基础sql表的列。组合框设置为QProxyFilterModel,然后再设置为QTableView模型,因为组合框中的信息存在于另一个sql表中

我想做的是在按下组合框时返回多个列,而不是只返回一个列。我知道要做的是字符串连接,但我不确定在哪里实现它

因为我已经对QTableView进行了子类化,所以我想我可以创建一个自定义角色来连接特定列并将它们返回到代理模型,但我不知道如何从代理模型传递角色。我是否在代理模型中重新实现方法
数据

另一个明显的选择是将QComboBox子类化,并让它连接我需要的列,但我觉得这是更糟糕的选择


关于如何实施上述措施有何想法

据我所知,QCOMBOX使用多列模型,您希望弹出窗口显示2个或更多连接列,如果是这样,最简单的选择是建立QCOMBOX的自定义委托

在以下示例中,列0和列1连接在一起,还有一个QTableView,其目的是显示模型是多列的:

从PyQt5导入QtGui、QtWidgets
类委托(QtWidgets.QStyledItemDelegate):
def initStyleOption(self、option、index):
super().initStyleOption(选项,索引)
列=(0,1)
text=“\t”.join([index.sibling(index.row(),c.data(),用于列中的c]))
option.text=文本
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
model=QtGui.QStandardItemModel(0,2)
对于范围(10)内的i:
it1=QtGui.QStandardItem(“col1-{}”.format(i))
it2=QtGui.QStandardItem(“col2-{}”.format(i))
model.appendRow([it1,it2])
combo=qtwidts.QComboBox()
委托=委托(组合)
combo.setItemDelegate(委托)
combo.setModel(model)
view=QtWidgets.QTableView()
view.setModel(model)
w=qtwidts.QWidget()
lay=qtwidts.QVBoxLayout(w)
lay.addWidget(组合)
lay.addWidget(视图)
w、 调整大小(640480)
w、 show()
sys.exit(app.exec_())