Открытие QDialog неблокирующим способом
У меня есть QDialog, который я открываю так:
void MyModule::openDialog() {
this->dialog->open();
printf("Hello World");
}
Диалог открывается просто отлично, но, к сожалению, "Hello World" не выводится при вызове openDialog() - даже после закрытия диалога. Тем не менее, когда я открываю еще одно совершенно не связанное с файлом диалоговое окно, сообщение распечатывается.
Что вызывает блокирование диалога до открытия другого диалога? То же самое происходит, когда я использую this->dialog->exec();
или же this->dialog->show();
,
Стоит отметить, что MyModule::openDialog()
это слот, который связан с событием нажатия кнопки.
Есть идеи?
2 ответа
Это зависит от ОС, но обычно printf () не очень хорошо работает с графическим интерфейсом.
Например, в Windows ничего не появится, в Unix вы можете сделать fprintf (stdout), а затем fflush (stdout) или fprintf (stderr,), который не буферизуется.
Если это просто функция отладки, взгляните на qDebug() - для этого она и нужна.
Стандартный вывод буферизуется. призвание printf("Hello world");
не будет ничего выводить, пока выходной буфер не заполнится или (иногда) не будет напечатана новая строка. Попробуйте позвонить printf("Hello World\n");
вместо или printf("Hello World\n"); fflush(stdout);