Какая разница между двумя запусками окна?

Рейтинг: 1Ответов: 1Опубликовано: 08.11.2014

Первый способ:

MyWindow *wnd = new MyWindow(this);  
wnd->show();

Второй способ:

MyWindow wnd(this);  
wnd.show();  
wnd.exec();

Зачем во втором способе нужен exec() ?

Ответы

▲ 3Принят

Разница между show() и exec() состоит в том, что при show() основной поток продолжает выполняться, а при exec() выполнение основной программы приостанавливается до закрытия child-окна. Применяется, например, в модальных диалогах.

Видимо, в коде, из которого вы взяли второй пример, дочернее окно делает что-то, что необходимо основному. Поэтому основной поток ждет закрытия дочернего окна.