首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

QT中怎么使一个程序隐式运行另一个程序

2013-07-16 
QT中如何使一个程序隐式运行另一个程序由于需要,我自己开发了一个Linux下的程序,但是为了方便,我要用QT包

QT中如何使一个程序隐式运行另一个程序
由于需要,我自己开发了一个Linux下的程序,但是为了方便,我要用QT包装一下。
我那程序叫做key,平时我要打开终端后,通过cd到具体地址后,再输入./key < data,data为输入文件,这样我才能正常运行程序并且返回输出的结果。

我在网上看了一些方法,可以直接用 system("./key < data");,我试过确实有结果,结果却显示在QT下的Consloe中,问题是,我还要运行key后的输出结果。
system这函数好像只是运行了就算,什么都不管了,但是这样我却无法得到其输出结果。

我也找到了一些说用QProcess的,我也试过,可能不怎么会用,我通过process.start("gnome-terminal");,打开的只是终端,我不知道要怎么运行./key < data 命令,但是就算可以运行,却有一个不是我想要的结果,因为start后,终端会被显式地打开(我想它能隐式运行),这并不是我想要的结果,我要的是程序在隐式运行后,把结果传到QT程序上去。

后来我也看了一下QThread,因为自己很少用写线程代码,所以也不知道哪种方法能达到我想要的效果。
望高手会指点!
[解决办法]
我没试过输入定向,如果输入定向不好使的话,可以试着把Data里面的内容读出来,再通过Process启动key程序,使用Process.write进行输入。

QProcess process;
    process.setWorkingDirectory("/xx/xx/");
    QFile file("/xx/xx/xx");
    file.open(QFile::ReadOnly);
    process.start("/xx/xx/key");
    process.waitForStarted();
    process.write(file.readAll());
    process.closeWriteChannel();
    process.waitForFinished();
    QMessageBox::information(this, "", QString::fromLocal8Bit(process.readAll().data()));
    

热点排行