Domanda

sto simulando pressione dei tasti a un'applicazione attraverso la funzione KeyPress di Qt. Tutto il lavoro bene le pressioni dei tasti. Tuttavia quando passo davanti a un QT::Key_Enter che dovrebbe premere il pulsante OK della finestra attualmente attiva, o QT::Key_Cancel per il pulsante Annulla, non fa nulla.

Sto pensando che forse, perché questi pulsanti non hanno la messa a fuoco, e la finestra madre stessa ha. Come si ottiene i figli di una finestra? o meglio trovare il pulsante OK o Annulla su di esso quindi è possibile impostare come l'activeWindow e quindi passare pressione dei tasti con successo?

ho:

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

Soluzione

È possibile utilizzare la href="https://doc.qt.io/qt-5.12/qobject.html#findChild" rel="noreferrer"> findChild funzione findChildren per ottenere tutti i bambini che hanno lo stesso nome e la scorrere l'elenco utilizzando foreach o QListIterator .

Per ottenere un pulsante si può provare:

QPushButton* button = pWin->findChild<QPushButton*>("Button name");

Altri suggerimenti

Si potrebbe desiderare di mettere un evento filtro personalizzato sul widget per la cattura l'evento chiave e vedere cosa succede realmente ad esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top