Linux.org.ru
Новости - Галерея - Форум - Трекер - Wiki - Поиск
[#]  
anterior (фотография)

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

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

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

anterior * (27.10.2009 12:23:18)

[#]  
stormy (фотография)

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

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

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

stormy (27.10.2009 12:34:58)
stormy (фотография)

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

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

stormy (27.10.2009 12:39:19)
stormy (фотография)

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

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

stormy (27.10.2009 12:40:42)
anterior (фотография)

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

Помоему чего-то не то... Разве QProcess будет работать без start() ?

anterior * (27.10.2009 13:04:27)
stormy (фотография)

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

Наверное я не до конца понял проблему. Вообще, конечно, proc->start("prog");

stormy (27.10.2009 13:19:35)

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

У него не программа, а библиотека

anonymous (27.10.2009 13:54:26)
[#]  

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

Попробуй сделать обёртки для fprintf и printf.

summatus * (27.10.2009 14:26:23)
stormy (фотография)

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

да, именно это я не до конца понял

stormy (27.10.2009 14:29:03)
anterior (фотография)

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

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

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

anterior * (28.10.2009 4:33:20)
[#]  
anterior (фотография)

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

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

anterior * (28.10.2009 7:32:33)
[#]  
anterior (фотография)

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

Кажись нашёл оч полезную ссылку: http://www.qtcentre.org/forum/f-general-programming-9/t-redirect-printf-to-qt...

Вопрос можно считать закрытым =)

anterior * (28.10.2009 8:41:40)
[#]  

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

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

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

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

trapezoid * (28.10.2009 22:33:19)
anterior (фотография)

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

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

anterior * (29.10.2009 6:20:46)

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

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

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

trapezoid * (29.10.2009 10:14:56)

http://www.linux.org.ru/

Rambler's Top100 TopList