33

QtのKeyPress関数を使用してアプリケーションへのkeyPressをシミュレートしています。すべてのキープレスは正常に機能します。ただしQT::Key_Enter、現在アクティブなウィンドウの[OK]ボタンを押すことになっているaを渡すかQT::Key_Cancel、キャンセルボタンの場合は何もしません。

これらのボタンにはフォーカスがなく、親ウィンドウ自体にフォーカスがあるので、多分考えています。どうやって窓の子供を手に入れますか?または、[OK]または[キャンセル]ボタンを見つけて、それをactiveWindowとして設定し、KeyPressesを正常に渡すことができますか?

私は持っています:

QWidget *pWin = QApplication::activeWindow;
QObjectList *pList = pWin->children();
//how do you iterate through the list and find the OK or Cancel button?
4

2 に答える 2

68

findChild()オブジェクト名で関数を使用して、特定の子を取得できます。

findChildren()また、を使用して同じ名前のすべての子を取得し、foreach()またはを使用してリストを反復処理することもできますQListIterator

ボタンを取得するには、次のことを試すことができます。

QPushButton* button = pWin->findChild<QPushButton*>("Button name");
于 2010-11-30T08:14:43.467 に答える
2

ウィジェットにカスタムイベントフィルターを配置して、キーイベントをキャプチャし、実際に何が発生するかを確認することをお勧めします。

于 2010-11-30T08:16:40.693 に答える