どのようにしてQTでウィジェットの子供を獲得しますか?
質問
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");
他のヒント
あなたはカスタムを入れたいかもしれません イベントフィルター キーイベントをキャプチャして、実際に何が起こるかを確認するためのウィジェットで。
所属していません StackOverflow