вывод dhclient в QlistWidget, в реальном времени - PullRequest
0 голосов
/ 22 февраля 2011

Я использую Ubuntu 10.10 с QT4.

Мне интересно, возможно ли для QlistWidget показать вывод Eg:

system("dhclient eth0");

затем создание qlistWidget показывает DHCPREQUEST / SHCPACK и т. Д. В режиме реального времени?

До сих пор я мог только направить вывод команды в файл, а затем заставить мою программу прочитать файл, который, очевидно, не показывает DHCP-пакеты, которыми обмениваются в данный момент.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2011

Хорошо, я решил, вот краткие примеры того, как я это делаю, я бы только показал свою реализацию

test::test()
{
    widget.setupUi(this);
    call();
    QObject::connect(&proc,SIGNAL(readyReadStandardOutput()),this,SLOT(stdOut()) );
    QObject::connect(&proc,SIGNAL(readyReadStandardError()),this,SLOT(stdErr()) ) ;
    QObject::connect(&proc,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(bye(int,QProcess::ExitStatus)) );

}
void test::call()
{
    proc.start("dhclient eth0");
}
void test::stdErr()
{
    QByteArray data = proc.readAllStandardError();
    widget.listWidget->addItem(QString(data));
}
void test::stdOut()
{
    QByteArray data = proc.readAllStandardOutput();
    widget.listWidget->addItem(QString(data));
}
void test::bye(int code,QProcess::ExitStatus exit)
{
    if(code ==0)
    {
        widget.listWidget->addItem("Done");
    }
}
0 голосов
/ 22 февраля 2011

Может быть, этот пример кода поможет вам:

QProcess gzip;
gzip.start("gzip", QStringList() << "-c");
if (!gzip.waitForStarted())
    return false;

gzip.write("Qt rocks!");
gzip.closeWriteChannel();

if (!gzip.waitForFinished())
    return false;

QByteArray result = gzip.readAll();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...