QtのKeyPress関数を使用して、アプリケーションに対するkeyPressesをシミュレートしています。すべてのKeyPressが正常に機能します。ただし、QT::Key_Enter
現在アクティブなウィンドウのOKボタンを押すことになっている、またはQT::Key_Cancel
キャンセルボタンの場合、何もしません。
これらのボタンにはフォーカスがなく、親ウィンドウ自体にもフォーカスがあるため、私は多分考えています。ウィンドウの子をどのように取得しますか?または、その上に[OK]または[キャンセル]ボタンを見つけて、それをactiveWindowとして設定し、KeyPressを正常に渡すことができますか?
私が持っています:
QWidget *pWin = QApplication::activeWindow;
QObjectList *pList = pWin->children();
//how do you iterate through the list and find the OK or Cancel button?
findChild
関数をオブジェクト名と共に使用して、特定の子を取得できます。 findChildren
を使用すると、同じ名前のすべての子を取得し、foreach
または QListIterator
を使用してリストを反復処理できます。
あなたが試すことができるボタンを取得するには:
QPushButton* button = pWin->findChild<QPushButton*>("Button name");
ウィジェットにカスタムの イベントフィルター を配置して、キーイベントをキャプチャし、実際に何が起こるかを確認することができます。