我目前正在Oracle中调用存储过程来填充PYQT中的QComboBox。数据如下所示:
代码:' PAY_COMP' 说明:'付款公司'
代码:' USER_COMP' 说明:'用户公司'
我想在组合框中显示描述但想要使用代码作为索引,这可能吗?原因是,当用户选择“付款公司”时,我想发送' PAY_COMP'到后端进行更新。
或者还有其他方法可以实现吗?
答案 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,但我认为接口是相同的。