Название: НЕ получается запустить однократно QTimer Отправлено: ussed от Сентябрь 16, 2014, 21:54 OS Archlinux(64) QT5.3
Сообщениий об ошибках на стадии компиляции и выполнения не было, но задача выполняет бесконечный цикл while,т.е. не прекращает однократный запуск таймера. Просьба помоч найти ошибку. Код: #ifndef MAINWINDOW_H Название: Re: НЕ получается запустить однократно QTimer Отправлено: Bepec от Сентябрь 16, 2014, 21:57 ...
У тебя бесконечный цикл в конструкторе. Система сигнал слот не может запуститься из-за него. Потому нахрен убирай цикл из конструктора и будет тебе счастье. Название: Re: НЕ получается запустить однократно QTimer Отправлено: kambala от Сентябрь 16, 2014, 22:01 и однократный таймер проще запускать через QTimer::singleshot()
Название: Re: НЕ получается запустить однократно QTimer Отправлено: ussed от Сентябрь 16, 2014, 22:19 1.как так? Ведь в в слоте flt должен по окончании работы таймера принять значение false
2При трассеровке задачи "isActive" показывает что таймер активен. Название: Re: НЕ получается запустить однократно QTimer Отправлено: Bepec от Сентябрь 16, 2014, 22:23 Мде... Сказали убрать цикл - уберите цикл и посмотрите. Мб поймете.
Название: Re: НЕ получается запустить однократно QTimer Отправлено: Alex Custov от Сентябрь 16, 2014, 22:30 1.как так? события таймера работают в том же потоке, что и код MainWindow. Бесконечный while блокирует поток и таймер никогда не пошлёт сигнал. Название: Re: НЕ получается запустить однократно QTimer Отправлено: Igors от Сентябрь 17, 2014, 09:33 Мде... Сказали убрать цикл - уберите цикл и посмотрите. Мб поймете. Для иронии нет оснований. Человек рассчитывал что таймер работает "извне" (в др потоке) и изменит значение переменной асинхронно. Но, как уже сказали, это не так. Название: Re: НЕ получается запустить однократно QTimer Отправлено: Bepec от Сентябрь 17, 2014, 09:36 Тут не ирония, а желание обучаться замешаны.
Можно ж почитать сначала про сигнал-слоты, попробовать с циклом и без. Плюнуть на самодеятельность и скопировать код из ассистента. Название: Re: НЕ получается запустить однократно QTimer Отправлено: ussed от Сентябрь 17, 2014, 11:23 Представленый код, проверка возможности управляемой задержки между участком аа и вв
.Закоменировал while ,при трассировки в отладчике flt and t1 остаются true .Можно конечно вставить несколько циклов, но хотелось сделать средствами qt. Спасибо за внимание. Название: Re: НЕ получается запустить однократно QTimer Отправлено: Bepec от Сентябрь 17, 2014, 11:30 У вас неверное понимание работы сигнал слотов в общем. Так же нет понимания как работают потоки. Если хотите - сформулируйте вопрос и я вам на него отвечу.
А чтобы замерить время между аа и бб таймер не подойдёт. Вам подойдёт QTime::elapsed() Название: Re: НЕ получается запустить однократно QTimer Отправлено: Igors от Сентябрь 17, 2014, 11:42 Представленый код, проверка возможности управляемой задержки между участком аа и вв Когда приложение выйдет в цикл ожидания событий - вот тогда оно получит событие таймера и сработает слот. А до этого Ваш код будет выполняться, никакие события еще не будут получены. Можно самому напроситься на получение событий вставив в цикл qApp->processEvents(), но осторожно - надо считаться что могут прийти и др события (не только таймер) .Закоменировал while ,при трассировки в отладчике flt and t1 остаются true Название: Re: НЕ получается запустить однократно QTimer Отправлено: ussed от Сентябрь 17, 2014, 11:47 Спасибо нашел, есть функции delay and qwait.
|