我有一个数据库('texpalsac'),Qtdesigner(ventas.ui)和一个表(产品):
PRODUCTS
COD NAME
111 bag
112 shoes
121 pants
122 t-shirts
我希望comboBox(comboArt)显示第二列(“ NAME”),但我不知道该怎么做。现在仅出现第一列(“ COD”:111,112 ...)。 谢谢
class MiFormulario(QDialog, QComboBox):
def __init__(self, parent=None):
super(MiFormulario, self).__init__(parent)
uic.loadUi('Venta.ui', self)
self.model = QtSql.QSqlTableModel (self)
self.model.setTable ("products")
self.model.select ()
self.comboArt.setModel (self.model)
答案 0 :(得分:0)
您必须使用setModelColumn()
的{{1}}方法来指示要显示的列:
QComboBox
加号:
如果要显示包含2列的QComboBox,则必须创建一个自定义QComboBox,如下所示:
multicombobox.py
class MiFormulario(QDialog): # <-- remove QComboBox, it is unnecessary
def __init__(self, parent=None):
super(MiFormulario, self).__init__(parent)
uic.loadUi('Venta.ui', self)
self.model = QtSql.QSqlTableModel(self)
self.model.setTable("products")
self.model.select()
self.comboArt.setModel(self.model)
self.comboArt.setModelColumn(1) # <--- select column 1
如果要在Qt Designer中使用它,则必须对其进行升级,为此,您可以查看this answer。