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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QThread - помогите новичку  (Прочитано 5795 раз)
Demonn
Гость
« : Ноябрь 22, 2005, 10:45 »

Добрый день! Только начинаю работать с QT, объясните, в чем ошибка:создается класс myThread : public QThread
описываем run()
Код:

{
  int i = 0;
  while (i++ < 10000)
  {  
    if (stoped)
      break;

   ..... вычисления
  }
}

В приложении создаю объект myThread * thread и вызываю run(). Все виснет, пока не закончится цикл while (i++ < 10000)
Что делаю не так?
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Ноябрь 22, 2005, 11:10 »

Надо позволять приложению обрабатывать события

вызывать типа

qApp->processMessage();
почаще
Записан
Demonn
Гость
« Ответ #2 : Ноябрь 22, 2005, 11:35 »

> Admin
а как это сделать в qt?
Записан
zlatko
Гость
« Ответ #3 : Ноябрь 22, 2005, 12:16 »

ты должен запускать поток посредством вызова метода start()
Записан
Sergeich
Гость
« Ответ #4 : Ноябрь 22, 2005, 12:48 »

Цитата: "Admin"
Надо позволять приложению обрабатывать события

вызывать типа

qApp->processMessage();
почаще

 :shock:  Есть вариант еще круче: Определяем свое событие, скажем MyEvent, наследуемся от QApplication и переопределяем метод customEvent(), если приходит событие типа MyEvent, вызываем processEvents(). На каждой итерации потока делаем QApplication::postEvent( new MyEvent ).  :wink:
Записан
Sergeich
Гость
« Ответ #5 : Ноябрь 22, 2005, 12:51 »

Цитата: "Demonn"
В приложении создаю объект myThread * thread и вызываю run(). Все виснет, пока не закончится цикл while (i++ < 10000)
Что делаю не так?

  Поток создается методом QThread::start(), если просто вызвать run(), он отработает в той же нитке.
Записан
Demonn
Гость
« Ответ #6 : Ноябрь 22, 2005, 14:59 »

> Sergeich
СПАСИБО!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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