Я довольно новый для Qt
и программирования и сталкиваются с проблемой. Я не могу найти решение.Асинхронные вызовы функций в Qt
Я хочу прочитать некоторую информацию из онлайн-файла XML и отправить его в мою основную программу.
Для этого я создал класс XmlParser и добавил следующее конструктору:
и fileIsReady
заполняет QMap и сохраняет его в качестве члена частного класса.
В моем втором классе, я называю
XMLParser *xmlpars = new XMLParser(input_gamename->text());
QMap<QString, int> searchResults = xmlpars->getSearchList();
и getSearchList является простой функцией добытчика.
Проблема заключается в том, что getSearchList выполняется до того, как fileIsReady закончил чтение XML-файла и возвращает пустую карту. Из того, что я понимаю, конструктор не должен заканчиваться до тех пор, пока fileIsReady()
не закончит свою работу. И таким образом, getSearchList() не следует вызывать раньше.
Мои два вопроса:
- Почему моя программа прогрессирует, пока функция не дочитать.
- Как я могу сделать второй вызов «getSearchList» ждать?
Большое спасибо!
Большое спасибо за помощь! Помог понять, что происходит. Можно ли сказать: давайте подождем, пока не будут отправлены все сигналы (или список сигналов)? Я реализовал еще одно соединение, но это может задержать ту же проблему, вызвав проблемы в другом месте. Можно ли подключить возврат функции с таким сигналом «finishedReading»? – ARTcrime