zivyW 发表于 2017-4-21 15:41:04

QT中的qml项目调用shell命令,并获取返回值方法

在qml项目,当需要调用开发板中的shell脚本或者命令并获取返回值时,我们需要以下几步:
1.通过qml调用c++代码
2.c++调用shell命令并获取返回值传给qml

具体步骤内容:
1.通过qml调用c++代码
   1.1 我们首先得创建一个c++的.h文件跟.cpp文件,这里为thinclint.h跟thinclint.cpp

   1.2 在main.cpp文件里加入连接代码,将创建的c++类传给qml,这里将类ConnectThread的实例cTread传给qml

   
2.c++调用shell命令并获取返回值传给qml
   2.1 在c++的.h文件中的类里面加入槽函数,这个槽函数就是能被qml调用的函数,public slots:下的都是可以被qml调用的槽函数

   2.2 在c++的.cpp文件里面实现类的槽函数,在这里开始调用shell命令
         2.2.1 调用shell命令有几种方式
                  QProcess::execute("/shellDir",arguments);直接通过QProcess::execute调用,第一个参数为shell脚本路径,第二个参 数为需要传给脚本的参数
                   QProcess *p = new QProcess;//新建一个进程类
                   p->start("shellDir",argument);//调用shell脚本
                   p->waitForFinished(30000); // 等待执行完成时间
                   QByteArray outPut = p->readAllStandardOutput(); //获取shell脚本的标准输出
                   QString result = outPut;//将结果转为字符串
                   return result;//返回结果
                   p->close();//关闭进程

   
   2.2.2 qml调用check函数,并获取返回值

ddll184 发表于 2017-4-22 17:38:17

返回值这块可以用property binding做,返回的结果可以动态显示出来。
页: [1]
查看完整版本: QT中的qml项目调用shell命令,并获取返回值方法