5 / 5 / 3
Регистрация: 20.10.2013
Сообщений: 68

Таймер не останавливается

26.05.2014, 21:34. Показов 3845. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня игра Быки и Коровы

И при запуске новой игры запускается таймер, и каждую секунду увеличивается переменная секунд, но при запуске новой игры (слот, где объявляется таймер, запускается заново) Переменная начинает прибавляться быстрее, т.е. каждые полсекунды и так далее.

Вопрос: как остановить таймер?

Вот слот, где создается таймер
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void MainWindow::setLevel(int value)
{
    lvl = value;
 
    QString str;
 
    int guess,j,f;
    srand(time(NULL));
    text.clear();
    output.clear();
    while(text.length()!=lvl)
    {
        f=1;
        guess = rand()%7+1;
        str.setNum(guess);
        for(j=0;j<text.length()&&amp;f;j++)
            if(str[0]==text[j])
                f=0;
        if(f==1)
            text.append(str);
    }
    ui->textEdit->append("Input your variant:");
    ui->textEdit->append("I've thought of " + QString::number(lvl) + " colors");
    ui->textEdit->append(" ");
    ui->textEdit->append(text);
    input.clear();
    output.clear();
    /*******************ВОТ ТУТ СОЗДАЕТСЯ И ОБНУЛЯЕТСЯ ТАЙМЕР******************/
    sec = 0;
    QTimer *time = new QTimer;                        
    connect(time,SIGNAL(timeout()),this,SLOT(righttime()));
//Дописываю time->stop() - ничего не меняется
    time->start(1000);
}


Вот слот с прибавлением и выводом
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
void MainWindow::righttime()
{
    sec++;
    ui->statusBar->showMessage("Time: " + QString::number(sec) + "s");
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2014, 21:34
Ответы с готовыми решениями:

Не останавливается таймер
Не могу понять, почему таймер не останавливается после проверки условия: &lt;!DOCTYPE HTML&gt; &lt;html&gt; &lt;head&gt; ...

Не останавливается таймер
Решила сделать свою первую игру, но с таймером все никак не ладиться :wall: import android.app.AlertDialog; import...

Не останавливается таймер TP (ST, Codesys 2.3)
Здравствуйте. Помогите разобраться с таймером, знающие люди. Никак не осилю принцип работы. Добавил таймер в пустой проект -...

7
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
26.05.2014, 22:07
Цитата Сообщение от galayko Посмотреть сообщение
connect(time,SIGNAL(timeout()),this,SLOT (righttime()));
//Дописываю time->stop() - ничего не меняется
* * time->start(1000);
если вы останавливаете таймер там, где показали - логично ведь, что он не завершится.

Цитата Сообщение от galayko Посмотреть сообщение
при запуске новой игры (слот, где объявляется таймер, запускается заново) Переменная начинает прибавляться быстрее, т.е. каждые полсекунды и так далее.
Это тоже очень логично, т.к. старый таймер нигде не удаляется и у вас работает N таймеров
0
5 / 5 / 3
Регистрация: 20.10.2013
Сообщений: 68
26.05.2014, 22:23  [ТС]
А где его мне остановить и как? - в этом вопрос был)
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
26.05.2014, 22:25
Цитата Сообщение от galayko Посмотреть сообщение
А где его мне остановить и как? - в этом вопрос был)
C++ (Qt)
1
QTimer timer;
Стоит создавать доступным для всего класса и завершать его с помощью
C++ (Qt)
1
timer.stop();
там, где происходит завершение игры
0
5 / 5 / 3
Регистрация: 20.10.2013
Сообщений: 68
26.05.2014, 22:43  [ТС]
Прописал в заголовочном QTimer *timer; и добавил timer->stop() при условии завершения игры. Больше ничего не менял.

Теперь не создаю тут:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
sec = 0;
    connect(timer,SIGNAL(timeout()),this,SLOT(righttime()));
    timer->start(1000);


Но теперь программа вылетает при выполнении этого слота

Добавлено через 7 минут
А точнее при запуске таймера
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
26.05.2014, 22:44
Цитата Сообщение от galayko Посмотреть сообщение
Прописал в заголовочном QTimer *timer; и добавил timer->stop() при условии завершения игры. Больше ничего не менял.
В конструкторе сделайте
C++ (Qt)
1
timer = new QTimer(this);
0
5 / 5 / 3
Регистрация: 20.10.2013
Сообщений: 68
26.05.2014, 22:54  [ТС]
Цитата Сообщение от Flassie Посмотреть сообщение
В конструкторе сделайте
Так и было сначала, таймер не останавливается предыдущий.
Раз я делаю timer в слоте, то, как я понимаю, он и живет только в слоте этом. Тогда почему он остается в памяти потом?
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
26.05.2014, 23:00
Лучший ответ Сообщение было отмечено galayko как решение

Решение

Цитата Сообщение от galayko Посмотреть сообщение
Так и было сначала, таймер не останавливается предыдущий.
Раз я делаю timer в слоте, то, как я понимаю, он и живет только в слоте этом. Тогда почему он остается в памяти потом?
Прошу прощения. Выделите память, соедините сигнал таймера с вашим слотом в конструкторе и уберите соединение в MainWindow::setLevel
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.05.2014, 23:00
Помогаю со студенческими работами здесь

При смене вкладки останавливается таймер
Здравствуйте, сделал таймер, он работает, но есть одна проблема: когда переключаю вкладку в браузере, то таймер останавливается, а когда...

После первого тика таймер останавливается
У мя у тяймера стоит интервал 100 и в Enable = true а в самом действии таймера private void time_lamber_Tick(object sender, EventArgs...

Таймер останавливается при блокировке экрана
Он как бы не останавливается вроде до конца, но, например, запускаю, блокирую экран, в реале жду примерно минуту, потом смотрю, он отсчитал...

Таймер останавливается после одного тика
Хотел сделать таймер обратного отчета, но в хоте программирования понял что элемент Timer1 останавливается после первого тика. Надо что бы...

Таймер с очень маленьким интервалом останавливается не сразу
если у таймера поставить очень маленькое время, то timer.Elapsed не всегда может завершится на timer.Stop(); public static...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7 Чтобы решить задачу, использовал интернет: поисковики Google и Yandex, а также подсказки Deep Seek. Как оказалось, чтобы создать. . .
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
Последние результаты исследования от команды MCM (октябрь 2025 г.)
Programma_Boinc 29.10.2025
Последние результаты исследования от команды MCM (октябрь 2025 г. ) Поскольку мы продолжаем изучать гены, которые играют ведущую роль в развитии рака, в рамках проекта "Картирование раковых. . .
Мысли в слух
kumehtar 29.10.2025
Обнаружил, что мысли лучше писать короткими фразами. Таким образом внимание читателя успевает охватить всю фразу сразу, за один раз, не соскакивая и не прерываясь. А если писать это длинным текстом,. . .
Побитовые операторы в Python
AI_Generated 28.10.2025
Побитовые операторы - это не реликт эпохи, когда каждый байт был на вес золота. Да, сейчас оперативка стоит копейки, но задачи изменились. Вместо экономии памяти приходится решать другие проблемы:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru