QComboBox でのテキスト変更イベントのキャプチャ
質問
Red Hat Linux 上で Qt アプリケーションを開発しています。復帰キー押下イベントをキャプチャしたい QComboBox
.
スロットを信号に接続しました editTextChanged()
これはキーを押すたびに発行されますが、 キーを入力してください.
なぜそうなのか?他に検出する方法はありますか キャリッジリターン?
解決
スロットを作成して接続したと仮定します。 QComboBox::editTextChanged()
信号。
このシグナルはテキストが変更されたときに発生し、 入力 テキストは変更されず、そのまま受け入れられます。キャプチャしたい場合は キャリッジリターン, 、従うことができる方法はいくつかあります。
サブクラス
QComboBox
.
オーバーライドkeyPressEvent()
:最初の電話QComboBox::keyPressEvent()
そして押されたキーが 入力. 。そうであれば、信号を発します。
必要なときにはいつでもこのサブクラスを使用してください。方法がわからない場合は、QDesigner でのウィジェットのプロモートについて検索してください。継承した新しいクラスを実装する
QObject
. 。このクラスではオーバーライドしますeventFilter()
:イベントがキー押下であるかどうかを確認します。ある場合は、次のとおりであるかどうかを確認してください。 入力 鍵。そうであれば、信号を発します。
次に、このクラスのインスタンスを作成し、それをイベント フィルターとして設定します。QComboBox
. 。実装したこのインスタンスの信号にスロットを接続します。
これらが明確でない場合は、次のページを読むことをお勧めします。
他のヒント
またactivated( const QString& )
信号に見ることができます。ユーザーのヒットが入力したときに放出されることがあります。