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 ★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.