我可以在QComboBox中使用字符串作为索引吗?

时间:2017-03-22 15:15:01

标签: qt qcombobox

我目前正在Oracle中调用存储过程来填充PYQT中的QComboBox。数据如下所示:

代码:' PAY_COMP' 说明:'付款公司'

代码:' USER_COMP' 说明:'用户公司'

我想在组合框中显示描述但想要使用代码作为索引,这可能吗?原因是,当用户选择“付款公司”时,我想发送' PAY_COMP'到后端进行更新。

或者还有其他方法可以实现吗?

1 个答案:

答案 0 :(得分:1)

我不了解python,但至少在C ++中,您可以将QVariant数据附加到组合框中的每个元素。 QVariant几乎可以是每种类型,例如字符串或枚举。

填充组合框时,我会使用成员函数void QComboBox::addItem(const QString & text, const QVariant & userData = QVariant())。然后,当用户选择了一个项目并且我知道组合框的当前索引时,我可以使用QVariant QComboBox::itemData(int index, int role = Qt::UserRole) const来获取该项目的QVariant,然后可以将其转换为实际输入包含的数据,例如使用QString QVariant::toString() const

组合框还提供了获取某个特定数据项索引的方法:int QComboBox::findData(const QVariant & data, int role = Qt::UserRole, Qt::MatchFlags flags = static_cast<Qt::MatchFlags> ( Qt::MatchExactly | Qt::MatchCaseSensitive )) const

现在你只需将它传递给python,但我认为接口是相同的。