crossplatform.ru

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

> QThread && QProcess
DEADHUNT
  опции профиля:
сообщение 28.12.2009, 21:03
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


class StreamReader : public QThread {
        SomeClass *someClass;
    protected:
        void run()
        {
            for (;; )
            {
                while (!someClass->process.canReadLine())
                    QThread::yieldCurrentThread();
                QString str = QString(someClass->process.readLine());
                qDebug() << "read stdout" << str;
             }
        }
    public:
        StreamReader(SomeClass *someClass);
};

class SomeClass {

StreamReader streamReader; // создаётся в конструкторе передаётся this

QProcess process;

void some_method()
{
    process.start(...);
    process.waitForStarted(INT_MAX);
    streamReader.start(); // Thread

    for (;; ) /* QApplication::processEvents() */;
};

если расскоментировать processEvents то сообщения от программы выводятся, а если нет то StreamReader ничего не считыват. в чём может быть проблема?

Сообщение отредактировал DEADHUNT - 28.12.2009, 21:17
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 1.1.2010, 17:39
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


где-то на форуме уже было про это. На пямять не помню.

по моему, это связано с тем, что ты не запустил цикл обработки событий потока.
Т.е. вместо бесконечного цикла FOR, нужно написать exec()

Нашёл
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 18.2.2025, 11:49