Qtで次のようなプログラムを書いています:

メイン ウィンドウは私のクラスWindow : QWidgetで、QGridLayout他の 4 つのウィジェット (Input_Menu : QWidgetとOutput_Menu : QWidget、そして 2 Canvas : QWidget)を含む があります。
ユーザーがキーを押したときに特定のイベントをトリガーしたいと考えています。問題は、Window時々フォーカスを失うことです(それは、に行くInput_Menu、またはおそらくInput_Menu...のボタンに行きます)
次の解決策を試しましたが、不十分な (そして汚れている) ようです。
- 焦点
Windowを失うたびに焦点を当てます。 - キーボード イベントを受信するたびに、
Windowの関数 (またはそのクローン)をトリガーするフォーカスを持つ可能性のある各ウィジェットに通知します。KeyPressEvent
理想的には、ウィジェットがイベント (キーボード イベントなど) を受け取り、それをどう処理すればよいかわからない場合、親のイベント ハンドラーを自動的に呼び出す必要があります。これが Qt のデフォルト機能であることを望んでいましたが、そうは見えません。一方で、フォーカス全体については本当に混乱していて、何が起こっているのかよくわかりません。誰かが私にこれを説明できますか: 私はstd::cout << "key pressed" << std::endl;自分のWindow::KeyPressEvent関数に a を含めました。プログラムを最初に実行したとき、フォーカスが の一番上の QComboBox にあるようですInput_Menu。上/下キーを押すと、そのボックス内を移動し、コンソールに「キーが押されました」と表示されません。ほとんどの文字をヒットしても何も起こりません。しかし、左/右キーを押すと、コンソールに「キーが押されました」と表示されます!?
あなたの洞察を前もって感謝します。