Je simule keyPresses à une application via la fonction KeyPress de Qt. Tous les KeyPresses fonctionnent bien. Cependant, quand je passe un QT::Key_Enter
qui est censé appuyer sur le bouton OK de la fenêtre actuellement active, ou QT::Key_Cancel
pour le bouton d'annulation, il ne fait rien.
Je pense peut-être, car ces boutons n'ont pas le focus et la fenêtre parent elle-même l'a. Comment obtenez-vous les enfants d'une fenêtre? ou plutôt trouver le bouton OK ou Annuler dessus pour que vous puissiez le définir comme activeWindow puis passer avec succès KeyPresses?
J'ai:
QWidget *pWin = QApplication::activeWindow;
QObjectList *pList = pWin->children();
//how do you iterate through the list and find the OK or Cancel button?
Vous pouvez utiliser la fonction findChild
avec le nom de l'objet pour obtenir des enfants spécifiques. Vous pouvez également utiliser findChildren
pour obtenir tous les enfants portant le même nom et effectuer une itération dans la liste à l'aide de foreach
ou QListIterator
.
Pour obtenir un bouton, vous pouvez essayer:
QPushButton* button = pWin->findChild<QPushButton*>("Button name");