J'utilise Qt pour construire une interface utilisateur et j'ai besoin d'une fenêtre de dialogue avant la fenêtre principale de l'application, de sorte que l'utilisateur peut sélectionner des fichiers pour charger des choses comme ça. Ce que j'ai est une principale assez simple:Qt Application bloque à la sortie (après QDialog exec)
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
IView *view = new QtView();
view->showView();
int rc = a.exec();
std::cout << "exit" << std::endl;
return rc;
}
la classe QtView est la mise en œuvre concrète de l'interface iView. Il a l'instance de mainwindow et une instance de QDialog aussi. int view-> Showview() méthode ce que j'ai:
void QtView::showView()
{
this->_configDialog->exec();
this->_mainAppWindow->show();
}
Il fonctionne très bien, la boîte de dialogue ouvre et lorsque l'utilisateur clique sur OK, et retourne exec la fenêtre principale apparaît. Le problème est que lorsque je quitte la fenêtre principale, j'obtiens un processus de zombies et l'application semble juste se bloquer même si toutes les fenêtres ont été fermées et que je n'obtiens pas la "sortie" que j'imprime juste avant le retour principal. Je ne suis pas sûr de ce que je fais de mal, mais je reçois la même resutl même si je clique sur la croix pour fermer la boîte de dialogue, la fenêtre principale s'ouvre, et une fois fermée les choses pendent juste là.
Si quelqu'un a un conseil, ce serait cool. Merci.
Ça ne marche pas non plus. L'application se termine si j'utilise ceci -> _ configDialog-> show(), mais pas quand je l'utilise -> _ configDialog-> exe(); Et même si je mets un parent sur le dialogue, pas de différence. La seule façon dont l'application se termine est si la méthode close() est appelée dans ma fenêtre principale. – dotminic