Question

J'ai un QDialog que j'ouvre comme ceci :

void MyModule::openDialog() {
    this->dialog->open();
    printf("Hello World");
}

La boîte de dialogue s'ouvre très bien, mais malheureusement "Hello World" n'est pas imprimé lors de l'appel d'openDialog() - même après la fermeture de la boîte de dialogue.Cependant, lorsque j'ouvre ensuite une autre boîte de dialogue de fichier totalement indépendante, le message est imprimé.

Qu'est-ce qui provoque le blocage de la boîte de dialogue jusqu'à ce qu'une autre boîte de dialogue soit ouverte ?La même chose se produit lorsque j'utilise this->dialog->exec(); ou this->dialog->show();.

Il serait peut-être intéressant de noter que MyModule::openDialog() est un emplacement qui est connecté à l'événement clic d'un bouton.

Des idées?

Était-ce utile?

La solution

Cela dépend du système d'exploitation mais généralement printf() ne fonctionne pas bien avec les interfaces graphiques.

Sous Windows, par exemple, rien n'apparaît, sous Unix, vous pouvez faire fprintf(stdout, ) puis fflush(stdout) ou fprintf(stderr, ) qui n'est pas mis en mémoire tampon.

S'il ne s'agit que d'une fonction de débogage, jetez un œil à qDebug() - c'est à cela qu'elle sert.

Autres conseils

stdout est mis en mémoire tampon.Appel printf("Hello world"); ne produira rien jusqu'à ce que le tampon de sortie soit plein ou (parfois) qu'une nouvelle ligne soit imprimée.Essayez d'appeler printf("Hello World\n"); à la place ou printf("Hello World\n"); fflush(stdout);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top