如何使用其唯一 ID 将项目添加到 Qcombobox

how to add items to Qcombobox with its unique Id

您有什么想法可以将项目添加到 Qcombobox 中吗?

当用户选择项目时,我们可以检索所选项目的唯一ID吗?

假设我们有:

=============
| ID | NAME |
=============
| 1  |   A  |
=============
| 2  |   B  |
=============
| 3  |   C  |
=============
| 4  |   D  |
=============

并且我们只想在 QCombobox 中显示 NAME 的列,但是当其中一项被选中时,我们可以访问所选项目的 ID。

你只需要使用一个模型,在一个角色中设置 ID,在另一个角色中设置 NAME,在下一部分中我将展示一个示例:

from PyQt5 import QtCore, QtGui, QtWidgets


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)


    data =  [(1, "A"), (2, "B"), (3, "C"), (4, "D")]
    model = QtGui.QStandardItemModel()
    for i, text in data:
        it = QtGui.QStandardItem(text)
        it.setData(i)
        model.appendRow(it)

    @QtCore.pyqtSlot(int)
    def on_currentIndexChanged(row):
        it = model.item(row)
        _id = it.data()
        name = it.text()
        print("selected name: ",name, ", id:", _id)

    w = QtWidgets.QComboBox()
    w.currentIndexChanged[int].connect(on_currentIndexChanged)
    w.setModel(model)
    w.show()
    sys.exit(app.exec_())