質問

Red Hat Linux 上で Qt アプリケーションを開発しています。復帰キー押下イベントをキャプチャしたい QComboBox.

スロットを信号に接続しました editTextChanged() これはキーを押すたびに発行されますが、 キーを入力してください.
なぜそうなのか?他に検出する方法はありますか キャリッジリターン?

役に立ちましたか?

解決

スロットを作成して接続したと仮定します。 QComboBox::editTextChanged() 信号。
このシグナルはテキストが変更されたときに発生し、 入力 テキストは変更されず、そのまま受け入れられます。キャプチャしたい場合は キャリッジリターン, 、従うことができる方法はいくつかあります。

  1. サブクラス QComboBox.
    オーバーライド keyPressEvent() :最初の電話 QComboBox::keyPressEvent() そして押されたキーが 入力. 。そうであれば、信号を発します。
    必要なときにはいつでもこのサブクラスを使用してください。方法がわからない場合は、QDesigner でのウィジェットのプロモートについて検索してください。

  2. 継承した新しいクラスを実装する QObject. 。このクラスではオーバーライドします eventFilter() :イベントがキー押下であるかどうかを確認します。ある場合は、次のとおりであるかどうかを確認してください。 入力 鍵。そうであれば、信号を発します。
    次に、このクラスのインスタンスを作成し、それをイベント フィルターとして設定します。 QComboBox. 。実装したこのインスタンスの信号にスロットを接続します。

これらが明確でない場合は、次のページを読むことをお勧めします。

Qt デザイナーでのカスタム ウィジェットの使用

Qt イベントとイベントフィルター

他のヒント

またactivated( const QString& )信号に見ることができます。ユーザーのヒットが入力したときに放出されることがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top