Вы можете сделать это, запустив локальный цикл обработки событий, позволяя компонентам обрабатывать сетевой доход и загружать страницу. Когда они излучают сигнал, вы выполняете слот в цикле событий, чтобы выйти из него.
void My_Class::start()
{
QEventLoop qel;
QObject::connect(WebPage, SIGNAL(finished()), &qel, SLOT(quit()));
WebPage->load();
qel.exec();
}
Я использовал это раньше, и он отлично работает. Однако я не советую использовать это слишком часто, потому что он будет обрабатывать события, в том числе и те, которые вызывающий start
может не ожидать обработки во время вызова start
, поэтому вам нужно чтобы документировать это своим посетителям. Вы можете предотвратить обработку некоторых событий, передав определенные флаги QEventLoop::exec
, например, запретив обрабатывать события пользовательского интерфейса.