Вопрос

I have a QDialog which I open like this:

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

The dialog opens just fine, but unfortunately "Hello World" isn't printed when calling openDialog() - even after closing the dialog. However, when I open another completely unrelated file dialog afterwards, the message is printed out.

What is causing the dialog to block until another dialog is opened? The same thing happens when I'm using this->dialog->exec(); or this->dialog->show();.

It might be worth noting that MyModule::openDialog() is a slot which is connected to the click-event of a button.

Any ideas?

Это было полезно?

Решение

It depends on the OS but generally printf() doesn't play nicely with GUIs.

On windows for instance nothing would appear, on unix you could do fprintf(stdout, ) and then fflush(stdout) or fprintf(stderr, ) which isn't buffered

If this is just a debug function, take a look at qDebug() - it's what it's there for.

Другие советы

stdout is buffered. Calling printf("Hello world"); will not output anything until the output buffer is full or (sometimes) a newline is printed. Try calling printf("Hello World\n"); instead or printf("Hello World\n"); fflush(stdout);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top