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