En cherchant à répondre à cette question, j'ai découvert cet exemple dans le site Web de la Commission européenne. documentation .
QPushButton *quitButton = new QPushButton("Quit");
connect(quitButton, &QPushButton::clicked, &app, &QCoreApplication::quit, Qt::QueuedConnection);
Mutatis mutandis pour votre action particulière, bien sûr.
Avec cette note.
Une bonne pratique consiste à toujours connecter les signaux à ce slot en utilisant une QueuedConnection. Si un signal connecté (non mis en file d'attente) à ce slot est est émis avant que le contrôle n'entre dans la boucle d'événement principale (par exemple, avant que "int main" appelle exec()), le slot n'a pas d'effet et l'application ne sort jamais. sortie de l'application. L'utilisation d'une connexion en file d'attente garantit que le slot ne sera pas invoqué avant que le contrôle n'entre dans la boucle d'événements principale. ne sera pas invoqué avant que le contrôle n'entre dans la boucle d'événements principale.
Il est courant de connecter le signal QGuiApplication::lastWindowClosed() à quit()