質問

QTのキープレス関数を介してアプリケーションにキープレスをシミュレートしています。すべてのキープレスは正常に機能します。しかし、私が合格するとき QT::Key_Enter 現在アクティブウィンドウのOKボタンを押すか、 QT::Key_Cancel キャンセルボタンの場合、それは何もしません。

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

私は持っています:

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");

他のヒント

あなたはカスタムを入れたいかもしれません イベントフィルター キーイベントをキャプチャして、実際に何が起こるかを確認するためのウィジェットで。

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