如何在PyQt/PySide中向QComboBox设置数据?

4

我是如何使用setData向QListWidgetItem添加数据的。我该如何以类似的方式(隐藏它)向QComboBox项目添加数据,以及在将其添加到其中后如何从QComboBoxItems检索此数据?

item = QtGui.QListWidgetItem()
item.setText( myText )
item.setData( QtCore.Qt.UserRole, myData)

self.myListWidget.addItem( item )                       
1个回答

10

您可以使用 QComboBox.addItem(self, QString text, QVariant userData = QVariant()) 来添加项目,以及使用QComboBox.itemData (self, int index, int role = Qt.UserRole)来检索数据:

import PyQt4.QtGui as gui, PyQt4.QtCore as core

app = gui.QApplication([])

cb = gui.QComboBox()

cb.addItem('int 1',1)
cb.addItem('int 2',2)
cb.addItem('int 3',3)
cb.addItem('int 4',4)

print cb.itemData(0).toInt()[0]

core.pyqtSlot('int')
def f(index):
    data,can_convert =  cb.itemData(index).toInt()
    if can_convert:
        print 'integer:',data

cb.currentIndexChanged.connect(f)

cb.show()

app.exec_()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接