Russian Qt Forum

Qt => Общие вопросы => Тема начата: Demonn от Ноябрь 22, 2005, 10:45



Название: QThread - помогите новичку
Отправлено: 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)
Что делаю не так?


Название: QThread - помогите новичку
Отправлено: Admin от Ноябрь 22, 2005, 11:10
Надо позволять приложению обрабатывать события

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

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


Название: QThread - помогите новичку
Отправлено: Demonn от Ноябрь 22, 2005, 11:35
> Admin
а как это сделать в qt?


Название: QThread - помогите новичку
Отправлено: zlatko от Ноябрь 22, 2005, 12:16
ты должен запускать поток посредством вызова метода start()


Название: QThread - помогите новичку
Отправлено: Sergeich от Ноябрь 22, 2005, 12:48
Цитата: "Admin"
Надо позволять приложению обрабатывать события

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

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

 :shock:  Есть вариант еще круче: Определяем свое событие, скажем MyEvent, наследуемся от QApplication и переопределяем метод customEvent(), если приходит событие типа MyEvent, вызываем processEvents(). На каждой итерации потока делаем QApplication::postEvent( new MyEvent ).  :wink:


Название: Re: QThread - помогите новичку
Отправлено: Sergeich от Ноябрь 22, 2005, 12:51
Цитата: "Demonn"
В приложении создаю объект myThread * thread и вызываю run(). Все виснет, пока не закончится цикл while (i++ < 10000)
Что делаю не так?

  Поток создается методом QThread::start(), если просто вызвать run(), он отработает в той же нитке.


Название: QThread - помогите новичку
Отправлено: Demonn от Ноябрь 22, 2005, 14:59
> Sergeich
СПАСИБО!