Вывод текста из терминала в виджет (Qt)

Модератор: Модераторы разделов

Ответить
Аватара пользователя
messer
Сообщения: 98
ОС: линугз

Вывод текста из терминала в виджет

Сообщение messer »

Привет всем.
Для практики и навыка,решил написать GUI к команде ping средствами с++.Ввод команды и ее аргуметов,осуществляю с помощью класса QProcess. Теперь, поставлена задача,показывать вывод команды, в виджете Qt , например, в QTextEdit в режиме ReadOnly.
Вопрос -- как сделать, чтобы информация выведенная в терминале перенаправлялась в виджет?
Если не трудно,приведите примеры такого кода.
Спасибо. : )
PS пока что я только учусь,так что не пинайте сильно. =)
Gentoo 2006.0
"Когда я вижу что-либо смешное , я весь просто трясусь от смеха. Поэтому всегда хожу небритый.")))
Спасибо сказали:
Аватара пользователя
powerfox
Сообщения: 458
Контактная информация:

Re: Вывод текста из терминала в виджет

Сообщение powerfox »

Qt знаю пока довольно посредственно, можно перенаправить вывод пинга во временный файл и с него считать информацию... А вообще, rtfm по I/O.
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: Вывод текста из терминала в виджет

Сообщение aLexx programmer »

Может, popen?
Спасибо сказали:
Аватара пользователя
ety
Сообщения: 358
ОС: Linux

Re: Вывод текста из терминала в виджет

Сообщение ety »

aLexx programmer писал(а):
30.09.2006 18:27
Может, popen?

хоть это и классика, но в Qt вроде свой способ есть :rolleyes:
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: Вывод текста из терминала в виджет

Сообщение aLexx programmer »

(ety @ Sep 30 2006, в 20:55) писал(а):хоть это и классика, но в Qt вроде свой способ есть :rolleyes:

А я люблю классику :)
Тем более, что в QT этот способ будет, скорее всего, обёрткой над этим самым popen.
Спасибо сказали:
Аватара пользователя
messer
Сообщения: 98
ОС: линугз

Re: Вывод текста из терминала в виджет

Сообщение messer »

Вот,пробовал применять метод: (класс QProcess)

Код: Выделить всё

void mPing::updateOutputTextEdit()
{
  QByteArray data = process->readStderr();
  QByteArray data2 = process->readStdout();
  QString text = QString(data);
  QString text2 = QString (data2);
  textEdit1->setText(text, text2);
}


Но он не дает полного вывода ,а выводит только ошибки и ворнинги...
Киньте пожалуйста если не трудно примеры кода....
Gentoo 2006.0
"Когда я вижу что-либо смешное , я весь просто трясусь от смеха. Поэтому всегда хожу небритый.")))
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Вывод текста из терминала в виджет

Сообщение TwisT »

Ипона мать
Обратите внимание на сигналы

void readyReadStdout ()
void readyReadStderr ()

пишем два слота и усе(теоритически) хотя сам не пробовал

ну или пример из assistant

UicManager::UicManager()
{
proc = new QProcess( this );
proc->addArgument( "uic" );
proc->addArgument( "-tr" );
proc->addArgument( "i18n" );
proc->addArgument( "small_dialog.ui" );

connect( proc, SIGNAL(readyReadStdout()),
this, SLOT(readFromStdout()) );
if ( !proc->start() ) {
// error handling
}
}
void UicManager::readFromStdout()
{
// Read and process the data.
// Bear in mind that the data might be output in chunks.
}
Linux user #432536.
Спасибо сказали:
Аватара пользователя
messer
Сообщения: 98
ОС: линугз

Re: Вывод текста из терминала в виджет

Сообщение messer »

Заработало : ))) И впрямь дело в этом было...
Gentoo 2006.0
"Когда я вижу что-либо смешное , я весь просто трясусь от смеха. Поэтому всегда хожу небритый.")))
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Вывод текста из терминала в виджет

Сообщение TwisT »

messer писал(а):
01.10.2006 00:27
Заработало : ))) И впрямь дело в этом было...

Фирма веников не вяжет java script:emoticon(':blink:', 'smid_7')
ЗЫ: Кинь исходник
ЗЫЗЫ: Как погода в питере?
Linux user #432536.
Спасибо сказали:
Аватара пользователя
messer
Сообщения: 98
ОС: линугз

Re: Вывод текста из терминала в виджет

Сообщение messer »

Вот исходник...

2TwisT
Погода пасмурная и дождливая :)
Gentoo 2006.0
"Когда я вижу что-либо смешное , я весь просто трясусь от смеха. Поэтому всегда хожу небритый.")))
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Вывод текста из терминала в виджет

Сообщение TwisT »

Программма безусловно полезная.
Вот тока в винде каракули на выходе вместо ВЕЛИКОГО РУССКОГО языка
Мож кто граммотный знает как исправить?
Linux user #432536.
Спасибо сказали:
Аватара пользователя
Skull
Модератор
Сообщения: 2089
ОС: ALT Linux
Контактная информация:

Re: Вывод текста из терминала в виджет

Сообщение Skull »

TwisT писал(а):
01.10.2006 22:30
Программма безусловно полезная.
Вот тока в винде каракули на выходе вместо ВЕЛИКОГО РУССКОГО языка
Мож кто граммотный знает как исправить?
QString::fromLocal8Bit() ?
Skull
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Вывод текста из терминала в виджет

Сообщение TwisT »

Не поверите, не работает.
Я тута думаю что дело в формате читаемом из stdout && stderror
Linux user #432536.
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.
Контактная информация:

Re: Вывод текста из терминала в виджет

Сообщение eduard_pustobaev »

Skull писал(а):
02.10.2006 12:11
TwisT писал(а):
01.10.2006 22:30

Программма безусловно полезная.
Вот тока в винде каракули на выходе вместо ВЕЛИКОГО РУССКОГО языка
Мож кто граммотный знает как исправить?
QString::fromLocal8Bit() ?



Может так:
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString outputstring = codec->toUnicode(inputstring);

?
В дисгармонии со вселенной.
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Вывод текста из терминала в виджет

Сообщение TwisT »

Не, тут или методом тыка или ну ее винду ;)
Linux user #432536.
Спасибо сказали:
Ответить