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