如何在 PyQt/PySide 中将数据设置为 QComboBox



这是我如何使用setData向QListWidgetItem添加数据的方法。如何以类似的方式将数据添加到 QComboBox 项(隐藏它)但到 QComboBox 项 - 以及一旦它在那里,我如何从 QComboBoxItems 中检索这些数据?

item = QtGui.QListWidgetItem()
item.setText( myText )
item.setData( QtCore.Qt.UserRole, myData)
self.myListWidget.addItem( item )                       
您可以使用

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_()

最新更新