Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 我可以使用字符串作为QComboBox中的索引吗?_Qt_Qcombobox - Fatal编程技术网

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

Qt 我可以使用字符串作为QComboBox中的索引吗?,qt,qcombobox,Qt,Qcombobox,我目前正在调用Oracle中的存储过程来填充PYQT中的QComboBox。数据如下所示: 代码:“支付薪酬” 描述:“付款公司” 代码:'USER\u COMP' 描述:'用户公司' 我想在组合框中显示描述,但想使用代码作为索引,这可能吗?原因是,当用户选择“支付公司”时,我想将“支付公司”发送到后端进行更新 还是有另一种方法来实现这个?我不知道Python,但是至少在C++中,你可以将qFALUT数据附加到组合框中的每个元素。QVariant可以是几乎所有类型,例如字符串或枚举 填充组合框时

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

代码:“支付薪酬” 描述:“付款公司”

代码:'USER\u COMP' 描述:'用户公司'

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


还是有另一种方法来实现这个?

我不知道Python,但是至少在C++中,你可以将qFALUT数据附加到组合框中的每个元素。QVariant可以是几乎所有类型,例如字符串或枚举

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

组合框还提供了获取一个特定数据项的索引的方法:int-QComboBox::findDataconst QVariant&data,int-role=Qt::UserRole,Qt::MatchFlags flags=static\u cast Qt::matchjustice | Qt::MatchCaseSensitive const


现在,您只需将其转换为python,但我假设接口将是相同的。

感谢您提供的非常详细的响应,在您的帮助下,我能够实现这一点。再次感谢!另外,不确定我是否正确设置了此选项,当内部comboChanged时,会得到一些奇怪的结果:rangerowCount中索引的权重:combo=QtWidgets.QComboBox combo.currentIndexChanged.connectself.comboChanged中t的权重:combo.addItemt[0],QVariatt[1]self.tableWidgetCode.setCellWidgetindex,0,好的,还有一个问题。现在我已经能够设置带有“代码”和“描述”的组合框,一旦我从过程中获得数据,我需要在适当的行中设置数据。因此,如果我从proc返回数据“PAY_COMP”,如何在组合框的表中设置它以显示“Payment Company”?我假设我需要使用self.tableWidgetCode.cellWidget0,0.setItemDatarow之类的东西,但我无法让它工作@用户我实际上不太确定你想做什么。如果要将组合框的选定项更改为特定项,则可以使用QComboBox::findData获取前面提到的相应项的索引。然后可以使用QComboBox::setCurrentIndex将此项设置为所选项。例如:comboBox->setCurrentIndexcomboBox->findDataPAY_COMP.Yes,在您的帮助下,现在可以正常工作了,谢谢。现在唯一的问题是当调用comboChanged函数时,我需要获取currentRow,如果用户一直在tbale中选择组合框,currentRow永远不会更改。我必须点击另一个专栏来改变它。谷歌搜索了这个,但结果是空的@使用者