Как дождаться завершения всех соединений при использовании QNetworkAccessManager?

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

я делаю парсер на qt с использованием QNetworkAccessManager, пишу веб-паук. С одной страницы скачиваю ссылки на другие страницы, а потом в цикле отправляю запрос на соединение по этим ссылкам и пытаюсь парсить эти страницы и данные записываю в модель QAbstractItemModel. Но у меня возникает проблема, модель создается не дождавшись завершения парсинга. То есть данные я получаю не все а модель уже создается. Можете пожалуйста подсказать как мне сначала завершить полностью парсер а потом только создавать модель?

void MainWindow::parseElementes(const QString& elementes)
{
    if(!this->checkAddress())
    {
        return;
    }
    this->parser.setAddress(ui->listSiteComboBox
                              ->currentText());
    refElements = std::move(parser.parseRefElement(elementes));

    for(int i = 0; i < refElements.size(); ++i)
        manager->get(QNetworkRequest(QUrl(refElements[i])));
}

 void MainWindow::parsePageElement(const QString& page)
 {
     if(!this->checkAddress())
     {
         return;
     }
     this->parser.parseElement(page);

     this->model = new Model(parser.getDataEl().size(),
                             this->headTable.size(),
                             this->headTable, 
                             parser.getDataEl(), 
                             this);
     ui->tableView->setModel(model);
}

В методе parseElementes я получаю ссылки на другие страницы и в том же методе отправляю запрос на соединение. В методе parsePageElement происходит парсинг по этим ссылкам, это происходит через объект parser и в том же объекте parser сохраняются данные для модели. Эти данные передаются в модель при создании. И проблема в том что данные не все распарсились но модель создается. Если сделать запрос на соединение для одной ссылки, то создается таблицы с одним полем, но если больше то не выходит

Ответы

Ответов пока нет.