我正在調用Oracle中的存儲過程來在PYQT中填充QComboBox。數據顯示如下:我可以使用字符串作爲QComboBox中的索引嗎?
代碼:「PAY_COMP」 說明:「支付公司
代碼:「USER_COMP」 說明:「用戶企業」
我要顯示在說明書組合框,但想使用代碼作爲索引,這可能嗎?原因是,當用戶選擇「付款公司」時,我想發送'PAY_COMP'到後端進行更新。
或者還有其他的方法來實現這個?
我正在調用Oracle中的存儲過程來在PYQT中填充QComboBox。數據顯示如下:我可以使用字符串作爲QComboBox中的索引嗎?
代碼:「PAY_COMP」 說明:「支付公司
代碼:「USER_COMP」 說明:「用戶企業」
我要顯示在說明書組合框,但想使用代碼作爲索引,這可能嗎?原因是,當用戶選擇「付款公司」時,我想發送'PAY_COMP'到後端進行更新。
或者還有其他的方法來實現這個?
我不知道python,但至少在C++中,您可以將QVariant
數據附加到組合框中的每個元素。 A 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
現在,你只需要的是轉移到蟒蛇,但我認爲該接口是相同的。
感謝您提供非常詳細的回覆,在您的幫助下我能夠實現這一目標。再次感謝! – Goldglv
另外,不知道如果我正確地設置的,裏面的時候comboChanged,得到了一些奇怪的結果: #Weight 有效範圍內的指數(rowCount時): \t組合= QtWidgets.QComboBox() combo.currentIndexChanged.connect( self.comboChanged) 對於t在comboBoxWeight: \t combo.addItem(T [0],的QVariant(T [1])) self.tableWidgetCode.setCellWidget(索引,0,二合一) – Goldglv
好的,有一個問題。現在我可以用「代碼」和「描述」設置組合框,一旦我從過程中獲取數據,我需要將數據設置在適當的行中。 因此,如果我從proc返回的數據'PAY_COMP',我如何去設置它在組合框內的表中顯示'Payment Company'? 我假設我需要使用類似於: self.tableWidgetCode.cellWidget(0,0).setItemData(row)但我無法得到它的工作... @user – Goldglv