crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> вывод stdout в QTextEdit
beginner
  опции профиля:
сообщение 11.7.2013, 9:39
Сообщение #1


Студент
*

Группа: Неактивирован
Сообщений: 17
Регистрация: 4.7.2013
Пользователь №: 3874

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




Репутация:   0  


Не получается вывести stdout в QTextEdit. Помогите, пожалуйста.

Создала класс:
QmStdReader .h
//---------------------------------------------------------------------------
#ifndef QmStdReader_fileH
#define QmStdReader_fileH
//---------------------------------------------------------------------------
#include <QtCore/QThread>
#include <QtCore/QFile>
//---------------------------------------------------------------------------

class QmStdReader : public QThread
{
Q_OBJECT

public:
     QmStdReader(QObject * parent = 0);
     void run();
signals:
     void signalStdOutStr(const QString &msg);
private:
    QFile stdOut;
    QByteArray data;
  };

#endif //QmStdReader_fileH



QmStdReader.cpp
  
#include "QmStdReader.h"

QmStdReader::QmStdReader(QObject * parent)
     : QThread (parent)
{
    stdOut.open(stdout, QIODevice::ReadOnly);
}


//-----------------------------------------------------
void QmStdReader::run()
{
    
    while (true)
      {
         stdOut.readLine();
         while (!stdOut.atEnd())
         {

[b]/* в этот цикл не заходит никогда*/[/b]

             QString s = stdOut.readLine();
             if (!s.isEmpty())
             {
                 emit signalStdOutStr(s);
             }
         }

      };
    return;
}



Создала экземпляр класса и связала его сигнал со слотом, в котором строка Qstring выводится в QtextEdit

main.cpp
QmStdReader* stdReader;
.........
int main(int argc, char *argv[])
{
    QApplication a( argc, argv );

    Test w;
    w.show();

    stdReader = new QmStdReader();
    QObject::connect(stdReader, SIGNAL(signalStdOutStr(const QString)), &w, SLOT( slotSetOutput(const QString) ));    
     stdReader->start();


    printf("\nPrintf something from main\n");
    fflush(stdout);

    return a.exec();
}


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.7.2013, 20:23
Сообщение #2


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

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

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




Репутация:   94  


вообще-то из stdout не читаю, а в него пишут. А читают из stdin
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
beginner
  опции профиля:
сообщение 11.7.2013, 22:48
Сообщение #3


Студент
*

Группа: Неактивирован
Сообщений: 17
Регистрация: 4.7.2013
Пользователь №: 3874

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 11.7.2013, 21:23) *
вообще-то из stdout не читаю, а в него пишут. А читают из stdin

то, что напишут (дочерний поток) в stdout, я хочу увидеть в QeditText
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.7.2013, 7:33
Сообщение #4


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

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

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




Репутация:   94  


попробуй вот это
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
beginner
  опции профиля:
сообщение 12.7.2013, 9:56
Сообщение #5


Студент
*

Группа: Неактивирован
Сообщений: 17
Регистрация: 4.7.2013
Пользователь №: 3874

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 12.7.2013, 8:33) *
попробуй вот это

мне бы на Qt и чтобы платформонезависимо работало
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.7.2013, 10:10
Сообщение #6


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

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

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




Репутация:   94  


Цитата(beginner @ 12.7.2013, 11:56) *
мне бы на Qt и чтобы платформонезависимо работало
ну, поисковики в помощь. :)


на nix платформах перехват как-то просто делается, но забыл как это выглядит :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.3.2024, 8:32