grig_p
grig_p8 декабря 2017 г. 7:07

Прерывание таймера в режиме singleShot

Здравствуйте!
Можно ли остановить таймер, запущенный с помощью singleShot?
QTimer::stop(); не срабатывает

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

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

5
Evgenii Legotckoi
  • 8 декабря 2017 г. 7:14

День добрый!
А вы предварительно устанавливали его в режим singleShot методом setSingleShot?

К тому же, если вы воспользовались статическим методом singleShot, то его не получится остановить. Поскольку QTimer::stop() вообще вроде бы не статический, а значит и остановить с помощью него выполнение статического метода singleShot не получится. Следовательно нужно создать объект таймера, вызвать singleshot, а потом только применять метод stop на конкретный объект таймера.
    grig_p
    • 8 декабря 2017 г. 7:24

    так и делал.
    действие срабатывает ровно через пять секунд после первого вызова.

            m_tmResetCursor.stop();
            m_tmResetCursor.singleShot(5000, this, [=]()
            {
                действие
            });
    
      Evgenii Legotckoi
      • 8 декабря 2017 г. 7:38

      В данном конкретном куске кода всё правильно, что срабатывает через 5 секунд. Дело в том, что метод singleshot сразу начинает работать, как только переданы в него все аргументы. А то, что вы там вызываете stop перед singleshot вообще не даёт никакого результата. Поскольку метод вызывается перед singleshot , который начинают работать, после того, как вы застопорили таймер.


      Нужно использовать более классический подход.
      m_tmResetCursor.setSingleShot(true);
      connect(&m_tmResetCursor, &QTimer::activated,this, [=](){ /*действие*/ });
      m_tmResetCursor.start(5000);
      
      // дальше какая-то логика за эти 5 секунд, которая может остановить таймер
      m_tmResetCursor.stop();
        grig_p
        • 8 декабря 2017 г. 7:49

        спасибо. У меня логика такая, что таймер я должен перезапустить по определенному событию. То есть, событие, запускающее таймер, при срабатывании в период его ожидания, должно запустить таймер заново.
        Я сделал так, и это работает:

            connect(&m_tmResetCursor, &QTimer::timeout, this, [=]()
            {
                /*действие*/
            });

        m_tmResetCursor.stop(); m_tmResetCursor.start(5000);
          i
          • 16 июня 2020 г. 10:14

          Вызови QTimer::start и отсчёт начнётся сначала. Тебе даже stop писать не нужно

            Комментарии

            Только авторизованные пользователи могут публиковать комментарии.
            Пожалуйста, авторизуйтесь или зарегистрируйтесь
            AD

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:50баллов,
            • Очки рейтинга-4
            m
            • molni99
            • 26 октября 2024 г. 7:37

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:80баллов,
            • Очки рейтинга4
            m
            • molni99
            • 26 октября 2024 г. 7:29

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:20баллов,
            • Очки рейтинга-10
            Последние комментарии
            i
            innorwall14 ноября 2024 г. 17:42
            Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
            i
            innorwall14 ноября 2024 г. 15:09
            Qt/C++ - Урок 068. Hello World с использованием системы сборки CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
            i
            innorwall14 ноября 2024 г. 10:05
            EVILEG-CORE. Использование Google reCAPTCHA 2001; 98 29 34 priligy buy
            i
            innorwall14 ноября 2024 г. 10:00
            PyQt5 - Урок 007. Работаем с QML QtQuick (Сигналы и слоты) priligy 30mg Am J Obstet Gynecol 171 1488 505
            Сейчас обсуждают на форуме
            i
            innorwall14 ноября 2024 г. 9:39
            добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
            i
            innorwall11 ноября 2024 г. 16:55
            Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
            9
            9Anonim25 октября 2024 г. 15:10
            Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
            ИМ
            Игорь Максимов3 октября 2024 г. 10:05
            Реализация навигации по разделам Спасибо Евгений!

            Следите за нами в социальных сетях