dhclient输出到QlistWidget,实时

时间:2011-02-22 11:57:17

标签: c++ qt ubuntu qt4

我正在使用带有QT4的Ubuntu 10.10。

我想知道QlistWidget是否可以显示Eg的输出:

system("dhclient eth0");

然后让qlistWidget实时显示DHCPREQUEST / SHCPACK等?

到目前为止,我只能将命令的输出传递给文件,然后让我的程序读取文件,这显然不会显示此时交换的DHCP数据包。

2 个答案:

答案 0 :(得分:0)

也许这段代码示例可以帮助您:

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();

答案 1 :(得分:0)

好的,我解决了,这是我如何做的简短例子,我只会展示我的实现

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");
    }
}