Смотрю примеры асинхроности https://www.qt.io/blog/asynchronous-apis-in-qt-6 Не раскрыт один момент, как после всей

цепочки отдать результат в гуи поток? Вот пример из статьи
auto future = QtConcurrent::run(download, url)
.then(createImage)
.then(processImage)
.then(show);
Допустим в методе show мы вставляем изображение в лейбл. Но вот show же выполняется в другом не гуи потоке.
Чтобы show выполнялся в гуи потоке, мне надо делать так?
auto future = QtConcurrent::run(download, url)
.then(createImage)
.then(processImage)
.then(QtFuture::Launch::Sync, show);
Если я не правильно мыслю, можете предложить свои варианты, как вы делаете у себя?

8 ответов

8 просмотров

QFutureSynchronizer<QVector<int>> sync; // Enabling sync machine. auto arrayOneFuture = QtConcurrent::run(createArray, 65536).then(leaveMoreKMax).then(sortOverload); // First array async run. auto arrayTwoFuture = QtConcurrent::run(createArray, 65536).then(leaveAliquotK).then(sortOverload); // Second array async run. sync.addFuture(arrayOneFuture); // Adding first QFuture to syncer. sync.addFuture(arrayTwoFuture); // Adding second QFuture to syncer. sync.waitForFinished(); // Awaiting for async jobs finished. QVector<int> resultVector = arrayOneFuture.result() + arrayTwoFuture.result(); // Merging arrays. Вот мой пример кода для лабки в универ который был. Из future метод result() достает результат.

Mr.Mait- Автор вопроса
TheDoctor
QFutureSynchronizer<QVector<int>> sync; // Enablin...

По доке читал что при вызове result и если результат не готов, то будет ожидание

Mr.Mait
По доке читал что при вызове result и если результ...

А еще у него есть сигнал на который можно законнектиться. А, стоп, это FutureWatcher. Но сути не меняет, можно законнектиться на сигнал и выцепить результат.

Mr.Mait- Автор вопроса
TheDoctor
screenshot А еще у него есть сигнал на который можно законнек...

На wather не обратил внимание, пойду его почитаю

Mr.Mait- Автор вопроса
TheDoctor
screenshot А еще у него есть сигнал на который можно законнек...

Попробовал QFutureWatcher, с ним нормально работает, но как-то не удобно. Было бы классно, если было бы подобное ниже. Типа done выполняется в том потоке, в котором изначально был вызван run auto future = QtConcurrent::run(download, url) .then(createImage) .then(processImage) .done(show)

Mr.Mait
Попробовал QFutureWatcher, с ним нормально работае...

ну с вотчером лишь пару строк добавить. )

Mr.Mait
Попробовал QFutureWatcher, с ним нормально работае...

В QFuture::then() можно с функцией передать контекст объект. И функция выполниться в потоке этого объекта

Mr.Mait- Автор вопроса
Олег
В QFuture::then() можно с функцией передать контек...

О, с контекстом работает как надо, благодарю за подсказку

Похожие вопросы

Обсуждают сегодня

Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Чет мне ссыкотно опять Rainlab.User в проект ставить. Кто знает, опять наотъебись все сделали или после обнов пользоваться можно?
Black Cat
10
ребят, привет есть ли возможность мигрировать Policies + Auth Methods из нескольких Vault в один? пытаюсь сократить Vault кластера, немного не удобно что для каждой тестовой ...
azadevlab
2
это группа токсиков или тех кто помогает?
Ибрагим
9
коллеги привет. уже второй день бьемся об заклад с одной ошибкой, может вы сталкивались с таки странным поведением? есть тестовый сервер, на который паблишим релизную версию W...
Magzhan
11
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
Загрузил на свой сервер, теперь обычные прямые ссылки без query параметров и возможных ограничений, всё равно та же ошибка. Неужели скачивать из VK и перезаливать в TG кажд...
Alexey S
2
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
Можете помочь с этим, я тут использую Джанго как ОРМ для бота, но бот запускать не хочет, уже всезде перерыл не могу решить, может кто то сталкивался?
Ибрагим
4
Карта сайта