• 6763阅读
  • 6回复

[提问]qprocess isn't running, [复制链接]

上一主题 下一主题
离线米妮
 
只看楼主 倒序阅读 楼主  发表于: 2011-09-29
qprocess部分的源代码如下:
QProcess *process=new QProcess;
    process->setArguments("./mnt/ok/709 idmp_to_serverrid");
    process->start();
    while(process->isRunning())
    {    QString stringOut;
    stringOut=process->readLineStderr();
    QString output=outputTextEdit->text()+QString(stringOut);
    }
本意是想执行“/mnt/ok”文件下的“./709  ”可执行文件,后面的“idmp_to_serverrid”是命令行参数,但是结果是qprocess isn't running,在while里加打印语句未显示,恳请哪位高手指点一下。
离线jdwx

只看该作者 1楼 发表于: 2011-09-29
回 楼主(米妮) 的帖子
看看帮助
start(程序名,参数)
参数是一个QStringList

试试这样写:
QProcess process;
QStringList paramlist;
paramlist<<"idmp_to_serverrid";
process.start("./mnt/ok/709",paramlist);

至于输出:
要自己写一个槽     和void    readyReadStandardOutput ()这个信号   connect
在槽里用QByteArray    readAllStandardOutput ()读被调用的程序输出



发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线米妮
只看该作者 2楼 发表于: 2011-09-29
回 1楼(jdwx) 的帖子
您好!我用的是Q3Process,尝试process.start("./mnt/ok/709",paramlist)时,不能编译成功,process->start()还是没有执行。
离线jdwx

只看该作者 3楼 发表于: 2011-09-29
回 2楼(米妮) 的帖子
我说的QT4的QProcess,QT3没有特殊原因没有用的必要了。

发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线jdwx

只看该作者 4楼 发表于: 2011-09-29
回 2楼(米妮) 的帖子
virtual void    setArguments ( const QStringList & args )
上面这个是你用的函数,参数是QStringList,你用的是const char*。
可以用下面的函数分两次添加参数:第一次是程序名,第二次是参数。
virtual void    addArgument ( const QString & arg )
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线米妮
只看该作者 5楼 发表于: 2011-10-10
回 4楼(jdwx) 的帖子
您好!如果我不用qprocess开启进程,使用qthread,system()函数开得的进程,请问,这样外部程序返回的打印语句可以显示在textedit中吗?如果可以,应该怎样做呢?
离线a13235553177

只看该作者 6楼 发表于: 2012-10-23
同样求解,我用的也是qt3。。 正头疼这个问题
快速回复
限100 字节
 
上一个 下一个