Domanda

Ho un qdialog che apro così:

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

La finestra di dialogo si apre bene, ma sfortunatamente "Hello World" non viene stampato quando si chiama Opendialog () - anche dopo aver chiuso la finestra di dialogo. Tuttavia, quando apro un altro dialogo file completamente non correlato, il messaggio viene stampato.

Cosa sta causando il blocco della finestra di dialogo fino a quando non viene aperto un'altra finestra di dialogo? La stessa cosa succede quando sto usando this->dialog->exec(); o this->dialog->show();.

Potrebbe valere la pena notare che MyModule::openDialog() è uno slot che è collegato all'evento click di un pulsante.

Qualche idea?

È stato utile?

Soluzione

Dipende dal sistema operativo ma generalmente printf () non gioca bene con le GUI.

Su Windows, ad esempio, non sarebbe sembrato nulla, su Unix potresti fare fprintf (stdout,) e poi fflush (stdout) o fprintf (stderr) che non è bufferizzato

Se questa è solo una funzione di debug, dai un'occhiata a QDEBUG () - è quello per cui è lì.

Altri suggerimenti

stdout è bufferizzato. Chiamata printf("Hello world"); non uscirà nulla fino a quando il buffer di output è pieno o (a volte) viene stampata una nuova linea. Prova a chiamare printf("Hello World\n"); invece o printf("Hello World\n"); fflush(stdout);

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