2017-03-22 6 views
0

私は現在、PYQTにQComboBoxを設定するためにOracleのストアドプロシージャを呼び出しています。QComboBoxで文字列をインデックスとして使用できますか?

コード::「PAY_COMP」 説明:[支払い当社

コード:「USER_COMP」 説明:「ユーザー同社

私は説明を表示したいデータは次のように表示されますコンボボックスが、インデックスとしてコードを使用したい場合、これは可能ですか?理由は、ユーザーが「支払い会社」を選択したときに、更新するバックエンドに「PAY_COMP」を送信したいのです。

これを実装する別の方法がありますか?

答えて

1

私はPythonについてはわかりませんが、少なくともC++では、コンボボックスの各要素にQVariantのデータを添付することができます。 A QVariantは、事実上すべてのタイプ、例えば文字列または列挙型にすることができます。

コンボボックスを入力するときは、メンバー関数void QComboBox::addItem(const QString & text, const QVariant & userData = QVariant())を使用します。次に、ユーザーがアイテムを選択し、コンボボックスの現在のインデックスを知っている場合は、そのアイテムのQVariantを取得するためにQVariant QComboBox::itemData(int index, int role = Qt::UserRole) constを使用して、含まれているデータの実際のタイプに変換することができます。 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にそれを転送する必要がありますが、私は、インターフェイスが同じになりますと仮定します。

+0

非常に詳細な応答をいただきありがとうございます、私はこれを得ることができましたあなたの助けを借りて。再度、感謝します!範囲(をrowCount)にインデックス用 #Weight :いくつかの奇妙な結果を得る – Goldglv

+0

また、わからない私はこれを正しく設定した場合、ときcomboChanged内部、 \tコンボ= QtWidgets.QComboBox() combo.currentIndexChanged.connect( comboBoxWeightでのトンのためのself.comboChanged) : \t combo.addItem(T [0]、QVariant(T [1])) self.tableWidgetCode.setCellWidget(インデックス、0、コンボ) – Goldglv

+0

[OK]を、1つのより多くの疑問を持っていました。 「コード」と「説明」でコンボボックスを設定できたので、プロシージャからデータを取得したら、適切な行にデータを設定する必要があります。 データから「PAY_COMP」が返された場合、コンボボックス内のテーブルで「Payment Company」を表示するにはどうすればよいですか? 私は次のようなものを使用する必要があると仮定しています: self.tableWidgetCode.cellWidget(0,0).setItemData(行)を取得できません... @user – Goldglv

関連する問題