Михаиллл
27 мая 2020 г. 19:08

Вопросы по QFutureWatcher

Добрый день.
Есть такой код с QFutureWatcher.
Можно ли прервать выполнение кода в QFutureWatcher при каком-либо событии, например при достижении 10?
Можно ли вместо vector задать последовательность вручную, например "int i = 0; i < 100; i++" ?

  1. QVector<std::string> vector;
  2. for(int i = 0; i < 100; i++){
  3. vector.append(std::to_string(i));
  4. }
  5.  
  6. QFutureWatcher<void> futureWatcher;
  7. QEventLoop loop;
  8.  
  9. futureWatcher.setFuture(QtConcurrent::map(vector,[=](const std::string& d){
  10. qDebug()<<QString::fromStdString(d)<<QString::fromStdString(stdStringToMd5Hash(d));
  11. }));
  12.  
  13. loop.exec();
  14. futureWatcher.waitForFinished();
1

Вам это нравится? Поделитесь в социальных сетях!

2
Михаиллл
  • 27 мая 2020 г. 19:39

Остановить вышло так. Но вот можно ли засунуть последовательность не в контейнер, а вычислять походу?

  1. QFutureWatcher<void> futureWatcher;
  2. QEventLoop loop;
  3. connect ( this , &MainWindow::signalStopFuter, &futureWatcher, &QFutureWatcher<void>::cancel);
  4. futureWatcher.setFuture(QtConcurrent::map(vector,[=](const std::string& d){
  5. qDebug()<<QString::fromStdString(d)<<QString::fromStdString(stdStringToMd5Hash(d));
  6. if(d == "10"){
  7. signalStopFuter();
  8. }
  9. }));
    Михаиллл
    • 27 мая 2020 г. 22:15
    • Ответ был помечен как решение.

    Оказывается без QEventLoop loop; работает

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь
      • Последние комментарии
      • Evgenii Legotckoi
        16 апреля 2025 г. 17:08
        Благодарю за отзыв. И вам желаю всяческих успехов!
      • IscanderChe
        12 апреля 2025 г. 17:12
        Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
      • AK
        1 апреля 2025 г. 11:41
        Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
      • Evgenii Legotckoi
        9 марта 2025 г. 21:02
        К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
      • VP
        9 марта 2025 г. 16:14
        Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…