Russian Qt Forum
Ноябрь 23, 2024, 07:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QTimer и потоки  (Прочитано 14374 раз)
BRE
Гость
« Ответ #15 : Ноябрь 11, 2011, 10:17 »

возникли следующие ошибки:
Нужно перегенерировать проект, запусти qmake.
Записан
Edynchik
Гость
« Ответ #16 : Ноябрь 11, 2011, 10:54 »

попробовал,но не вышло: сделал пересобрать все
Записан
Edynchik
Гость
« Ответ #17 : Ноябрь 21, 2011, 17:17 »

скажите,при использовании двух таймеров в одном отдельном потоке, по второму таймеру не функция не отрабатывается. Почему так может быть?
Код
C
Thread::run
{
t1.start(10);
connect(&t1,SIGNAL(timeout()),this,SLOT(func1()));
t2.start(1000);
connect(&t2,SIGNAL(timeout()),this,SLOT(func2()));
}
 
в func2 точка останова не срабатывает, а в func1 срабатывает...
« Последнее редактирование: Ноябрь 22, 2011, 09:45 от Edynchik » Записан
Edynchik
Гость
« Ответ #18 : Февраль 03, 2012, 09:25 »

Опять возникла проблема в данной тематике:
QObject::startTimer: timers cannot be started from another thread
в приложение проект:
Записан
Bepec
Гость
« Ответ #19 : Февраль 03, 2012, 09:56 »

Таймер не может быть запущен в другом потоке. *дословный перевод*

Поясняю:
Ты создаешь класс потока.
Все поля класса, создаются в основном потоке и принадлежат ему.
Далее, запускаешь функцию start() и отделяешь поток.
Ну а далее, ты пытаешься запустить таймер, который остался в основном потоке.

Обход проблемы - поля класса делать указателями, и создавать таймеры в run()
« Последнее редактирование: Февраль 03, 2012, 09:58 от Bepec » Записан
Edynchik
Гость
« Ответ #20 : Февраль 03, 2012, 10:06 »

это да...только такое чувство что у меня это работало...я же файлы thread.cpp и thread.h взял из другого проекта...
решил спросить,вдруг чего...
« Последнее редактирование: Февраль 03, 2012, 10:16 от Edynchik » Записан
Bepec
Гость
« Ответ #21 : Февраль 03, 2012, 10:22 »

А ты приведи работающий проект, прост интересно и самому стало, в каких условиях он не ругается.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #22 : Февраль 03, 2012, 10:28 »

А ты приведи работающий проект, прост интересно и самому стало, в каких условиях он не ругается.
Может быть разница отладка/релиз.
Записан
Edynchik
Гость
« Ответ #23 : Февраль 03, 2012, 11:05 »

А ты приведи работающий проект, прост интересно и самому стало, в каких условиях он не ругается.
в том то и дело, что проект под МСВС(которой сейчас нет)..
Записан
TaIRou
Гость
« Ответ #24 : Февраль 04, 2012, 11:15 »

Таймер не может быть запущен в другом потоке. *дословный перевод*

Поясняю:
Ты создаешь класс потока.
Все поля класса, создаются в основном потоке и принадлежат ему.
Далее, запускаешь функцию start() и отделяешь поток.
Ну а далее, ты пытаешься запустить таймер, который остался в основном потоке.

Обход проблемы - поля класса делать указателями, и создавать таймеры в run()

А если этим локальным объектам класса, сделать moveToThread(this)?
Записан
Bepec
Гость
« Ответ #25 : Февраль 04, 2012, 12:33 »

То они оплюют тебя ^^

Это самая первая мысль, которая мне пришла в голову, но... матерятся они жестоким образом Подмигивающий
Записан
TaIRou
Гость
« Ответ #26 : Февраль 04, 2012, 12:44 »

То они оплюют тебя ^^

Это самая первая мысль, которая мне пришла в голову, но... матерятся они жестоким образом Подмигивающий

Может быть поэтому?
Цитировать
Use the QObject::moveToThread() function to change the thread affinity for an object and its children (the object cannot be moved if it has a parent).
Записан
Bepec
Гость
« Ответ #27 : Февраль 04, 2012, 17:42 »

Именно из-за этого.
Записан
Edynchik
Гость
« Ответ #28 : Февраль 06, 2012, 16:06 »

вот проект из МСВС...и там все работает...
кстати,тогда как в таком случае (проект somo2) остановить таймер в функции read?
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.