LINUX.ORG.RU

[Qt] Как перенаправить вывод stdout куда-нибудь в QTextEdit?

 


0

0

Всем привет! Интересует собственно вопрос: Есть приложение qt4 и некая сишная либа которая используется этим приложением. Эта либа чего-то в stdout периодически пихает. (да и не только туда=) Как мне то что она пихает перенаправить куда-нить в QTextEdit?

ЗЫ: pipes тут не пойдут к сожалению, нужен кросс-платформенный вариант.

[code]QProcess* proc = new QProcess;
QByteArray *sout;
*sout = proc->readAllStandardOutput();
textEdit->insertPlainText(QString(*sout));[/code]

как-то так...

stormy
()
Ответ на: комментарий от stormy

void readStdOut() { QProcess* proc = new QProcess; QByteArray *sout; *sout = proc->readAllStandardOutput(); textEdit->insertPlainText(QString(*sout)); } ... connect(proc,SIGNAL(readyReadStandardOutput()), SLOT(readStdout()));

stormy
()
Ответ на: комментарий от stormy

void readStdOut()
{
QProcess* proc = new QProcess;
QByteArray *sout;
*sout = proc->readAllStandardOutput();
textEdit->insertPlainText(QString(*sout));
}
...
connect(proc,SIGNAL(readyReadStandardOutput()), SLOT(readStdout()));

stormy
()
Ответ на: комментарий от summatus

> Попробуй сделать обёртки для fprintf и printf.
Не пойму, как они мне могли бы помочь? Единственный выход который мне приходит в голову, это создать обёртки fprintf и printf, чтобы они помимо stdout ещё и перенаправляли куда-нибудь во временный файл, а потом программа qt4 их периодически считывала. Но помоему это такие жуткие костыли, что даже не охота такую идею брать на счёт.

Наверное придётся вообще пересмотреть всю идею сабжа..

anterior
() автор топика

Но я ведь могу создать программу-обёртку для основного qt-приложения, эта обёртка могла бы запускать это qt4 приложение и считывать stdout/err. Затем по некому механизму IPC передавать данные основной программе. Остаётся только разобраться с IPC...

anterior
() автор топика

> ЗЫ: pipes тут не пойдут к сожалению, нужен кросс-платформенный вариант.

а на какой платформе пайпы не поддерживаются?

З.Ы. Я бы вообще Tcl/Tk использовал бы...

trapezoid
()
Ответ на: комментарий от trapezoid

>а на какой платформе пайпы не поддерживаются?
Да и действительно, я раньше думал что pipe не поддерживается в win32. Но недавно открыл для себя функцию "_pipe" =)

anterior
() автор топика
Ответ на: комментарий от anterior

> что pipe не поддерживается в win32.

А мужики-то и не знали :-)

trapezoid
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.