
本文介绍,在Linux环境下,使用Qt中的 QProcess 类执行shell命令并获取输出。
头文件: #include <QProcess>
一、函数接口
QProcess 类提供了三个函数
二、执行命令
这里主要介绍 execute() 和 start() :
execute() 会将命令输出直接打印到控制台,调用程序无法捕获。
调用程序可通过 readAllStandardOutput() 捕获shell命令的输出
三、管 道
对于shell命令中的 | ,直接传入参数是不行的。
以上的方式是无法执行的。
可以将整个命令作为 sh 的参数传入 或 使用 QProcess::setStandardOutputProcess(QProcess destination) 即将一个进程的标准输出流传入目标进程的标准输入流
对于需要sudo权限的命令,需要使用sudo权限打开qtcreator,或者直接在命令前加上sudo(不建议)。
当然, QProcess 不仅仅可以执行shell命令,也可以用于执行调用外部程序。
正确的做法就是在 mainwindowcpp 里面去包含 funch
编译会报错: 无法找到函数calculate(); 说明编译器没有找到 calculate函数的实现
这里就要分成两种情况
一种就是编译器没有找到 funccpp 这个文件,你可以尝试把 funccpp 加入到工程里面或把funccpp文件所在路径(完整路径)加入到Qt pro 文件中
DEPENDPATH = 你的路径
另一种就是你的 calculate() 函数格式写错了所以找到了funccpp文件也找不到 calculate 函数
因为 C和C++的编译规则不一样 试试在extern "C"{
funch
}
!!
在qt里面有一个类QProcess,这个类的作用是调用外部的可执行程序,在qt里面使用这个类
来调用外面的mplayer来播放视频,在这里就需要在提到买player的一种播放模式——slave模式,这种模式下面,是通过管道发送给mplayer相应的信息(在qt里面调用了mplayer后,就相当于产生了一个进程),就是,简单的说,在这种模式下面,你可以在程序里面来写入相应的命令来控制mplayer的播放,下面给出一点相应的实现代码:
首先,要创建一个累QProcess
mplayerProcess = new QProcess(this);
mplayerProcess->setProcessChannelMode(QProcess::MergedChannels); //这个一定要设置
mplayerProgram = tr("/usr/bin/mplayer"); //你的mplayer的路径
timeClock = new QTimer(this);
接下来就是通过命令来控制mplayer播放了:
QStringList args;
args
你以前的那个已经生产exe了,相当于在Qt工程下调用外部的exe应用程序;
QProcess myProcess = new QProcess();
myProcess->start("c:/xxxxx/xxxexe");
以上就是关于Qt QProcess全部的内容,包括:Qt QProcess、qt的类函数如何调调用外部独立函数的问题、qt里面如何调用mplayer等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)