crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> проблема с потоками Thread в Qt
Гость_Сергей_*
сообщение 24.11.2010, 10:50
Сообщение #1





Гости








    


задача такая, нужно создать несколько потоков, в частности 3, причем чтобы из первого потока запускался второй, из второго третий, а в третьем производились вычисления.
информацию о состоянии вычислений третьего потока нужно вывести на progressBar формы.
я использую сигнально слотовые соединения т.е
запускаю первый поток:

void MainWindow::on_pushButton_clicked()
{
    ThMain_1 *MAIN_1 = new ThMain_1;
    MAIN_1->start();
    connect(MAIN_1,SIGNAL(progress_th_2(int)),this,SLOT(on_progressBar_2_valueChanged(int)));

}

void MainWindow::on_progressBar_2_valueChanged(int value)
{
    ui->progressBar_2->setValue(value);
}

запускаю второй поток:
void ThMain_1::run()
{
    ThSub_1 *THSUB_1 = new ThSub_1;
    THSUB_1->start();
    connect(THSUB_1,SIGNAL(progress_th_2(int)),this,SLOT(SetProgress_th_2(int)));
}

void ThMain_1::SetProgress_th_2(int progress)
{
   emit progress_th_2(progress);
  }

запускаю третий поток
void ThSub_1::run()
{
th_2 *TH_2 = new th_2;
TH_2->start();
connect(TH_2,SIGNAL(progress_2(int)),this,SLOT(SetProgress_th_2(int)))
}

void ThSub_1::SetProgress_th_2(int progress)
{
  emit progress_th_2(progress);
}

произвожу в третьем потоке вычисления
void th_2::run()
{
    int __progress=0;
    double _result=0;
     for (int i=0; i<=199800; i++)
        {
          _result+=cos(atan(i));
          if (i%1998==0)
          {
              emit progress_2(++__progress);
          }
        }
}

и посылаю состояние вычислений через все потоки в форму.
но почему то не работает. Подскажите, в чем может быть поблема-ошибка.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 13.2.2025, 12:27