web-dev-qa-db-ja.com

PyQt:アイテムのテキスト(タイトル)を知っているアイテムにコンボボックスを設定する方法

アイテムのテキスト値を知っているアイテムにコンボボックスを設定することは可能ですか?アイテムのインデックスを見つけるためだけにfor i in range(myCombobox.count())をループすることを避けようとしているので、そのアイテムのインデックスにコンボボックスを設定するために使用できます。

19
alphanumeric

はい、 QComboBox.findText があり、一致したアイテムのインデックスを返します(存在しない場合は-1)。デフォルトでは、検索は大文字と小文字を区別して正確に一致しますが、2番目の引数として match-flags を渡すことで動作を微調整できます。たとえば、case-insensitiveマッチングを行うには:

    index = combo.findText(text, QtCore.Qt.MatchFixedString)
    if index >= 0:
         combo.setCurrentIndex(index)

アイテムのデータに一致する同等の findData メソッドもあります。

38
ekhumoro