2016-08-30 50 views
1

以下のコードは、QComboBoxとQPushButtonの両方が同じレイアウトに割り当てられます。 Comboboxは編集可能に設定されているため、ユーザーは新しいコンボボックスアイテムの値を入力できます。 (Enterではなく)キーボードのキーを押すと、新しい値はコンボボックスに追加されません。 質問:ユーザーがのComboBoxを残しても、ComboBoxのアイテムが新しい値で更新されるようにする方法TabQComboBoxが編集可能に設定されている場合

enter image description here

from PyQt4 import QtGui 

def comboActivated(arg=None): 
    print '\n ...comboActivated: %s'%arg 

widget = QtGui.QWidget() 
layout = QtGui.QVBoxLayout() 
widget.setLayout(layout) 
combo = QtGui.QComboBox() 
combo.setEditable(True) 
combo.addItems(['One','Two','Three']) 
combo.activated.connect(comboActivated) 
layout.addWidget(combo) 
layout.addWidget(QtGui.QPushButton('Push')) 
widget.show() 

答えて

1

ユーザがボックス内のテキストを編集する場合、editTextChanged()信号は、その引数として編集されたテキストに放出されます。また、ユーザーがTabを入力してボタンに移動したときのように、ウィジェット自体がフォーカスを失った場合、ウィジェットはfocusOutEvent()信号を送信します。この信号の引数はQFocusEventで、フォーカスが失われた理由を問い合わせることができます。例えば、ユーザがTabボタンを押してウィジェットを離れると、イベントのreason()メソッドはQt.TabFocusReasonを返します。

これらの信号のいずれか(または両方)にスロットを接続して、テキストの編集後にユーザーがウィジェットを終了したときにその信号を処理し、ボックスの値リストに追加できるようにします。

QValidatorクラスとそのサブクラス(ウィジェットに編集可能なテキストで添付)を調べ、ウィジェットの有効な入力のタイプ(整数、テキストなど)を定義することもできます。これは編集可能なウィジェットに対するユーザーの入力を確認する最も簡単で簡単な方法です。

+0

ありがとうございます!この場合、 'editTextChanged()'で十分です! – alphanumeric

関連する問題