Снова вопросы...)
Есть GUI и есть функция, которая очень долго считает. Хочу эту функцию запустить в отдельном потоке, чтобы можно было в GUI на кнопочки жмякать. Сделал наследника от QThread
ExtrThread::ExtrThread(curve *c, string p, QPushButton *b): QThread()
{
cur = c;
path = p;
button = b;
//run();
moveToThread( this );
}
void ExtrThread::run(){
isRuning = true;
button->setText("Stop");
qDebug()<<"Thread Start\n";
core(cur, path);// моя функция, которую хочу запустить параллельно с GUI
//system("cat /dev/random");
button->setText("Run");
qDebug()<<"Thread Stop\n";
isRuning = false;
exec();
emit stopped();
}
ExtrThread *extr;
.........
extr = new ExtrThread(&cur, "opt.conf", ui->pushButton);
extr->start();
При запуске ф-я считает, но окошко не реагирует на нажатия кнопок и пр. Если вместо моей ф-и записать system(«cat /dev/random»), то все ОК: окно ресайзится, кнопочки нажимаются, а в консоли бегут кракозябы.
Вопросы:
1. Почему с функцией так не получается?
2. моя ф-я из себя потом вызывает через system(...) внешнюю программу. Как мне можно перехватить вывод в консоль, чтобы его направить, к примеру, в QTextEdit?