29

にいくつかのアイテムを追加するのに助けが必要QComboBoxです。そのため、2 つのコンボボックスがあり、選択したアイテムに応じて、1 つがもう 1 つに入力されます。

私の質問は、additem新しいアイテムに使用すると機能しますが、コンボボックスに別のオプションを選択すると、新しいアイテムが追加されますが、以前のアイテムはなくなり、新しいアイテムの下に空白のアイテムがあります。

最初のコンボボックスから新しいオプションを選択するたびに、2番目のコンボボックスの内容をクリアすると思いました。だから私clear()は2番目に使用しましたが、うまくいきませんでした。

それが私がそれを考えた方法です:

self.comboBox_2.clear()
for index,i in enumerate(list1):
  self.comboBox_2.addItem(_fromUtf8(""))
  self.comboBox_2.setItemText(index+2, QApplication.translate("Dialog", i, None, QApplication.UnicodeUTF8))

上記は、最初のcombobox変更時に実行される関数の一部です。

4

3 に答える 3

51

が文字列のリストであると仮定すると、 addItemsメソッドlist1を使用して一度にすべてを簡単に追加できます。

self.comboBox_2.clear()
self.comboBox_2.addItems(list1)

QApplication.translateあなたの例ではおそらく間違った方法で使用していることに注意してください。list1の文字列を別の言語に翻訳できるようにしたい場合は、リストを作成するときにそれを行い、文字列リテラルを使用する必要があります。

例えば:

list1 = [
    self.tr('First Item'),
    self.tr('Second Item'),
    self.tr('Third Item'),
    ]

_fromUtf8また、この関数は、コードで非ASCII文字を含む文字列リテラルを使用している場合にのみ実際に役立つことに注意してください.それ以外の場合は、基本的にノーオペレーションです.

編集

たとえば、リストにピックスマップとテキストのタプルが含まれている場合、次のようなものを使用できます。

self.comboBox_2.clear()
for pixmap, text in list1:
    self.comboBox_2.addItem(QIcon(pixmap), text)
于 2011-12-08T00:38:13.420 に答える
4

https://github.com/shuge/Enjoy-Qt-Python-Bindingには、シンプルで読みやすいデモ/例がいくつかあり ます。

QComboBoxそれを複製すると、そのアイコン項目の基本およびカスタムの使用方法に関するデモが表示されます。

于 2011-12-11T02:12:26.513 に答える