全部博文(92)
分类: 嵌入式
2010-05-21 17:03:05
Qt执行蓝牙程序_用子进程的方法
创建Qtscan.h
#ifndef SCAN_H
#define SCAN_H
#include
class Qtscan : public QWidget //我们定义一个Qtscan类,继承于QWidget。
{
Q_OBJECT
public:
Qtscan();
public slots: //我们自定义的槽
void runScan();
private:
void startScan();
};
#endif // SCAN_H
创建Qtscan.cpp
#include "Qtscan.h"
#include
#include
#include
#include
Qtscan ::Qtscan():QWidget()
{
startScan();
}
void Qtscan::startScan()
{
QPushButton* scan = new QPushButton("scan",this); //创建一个按钮,
connect(scan,SIGNAL(clicked()),this,SLOT(runScan())); //如果按钮被点击,即发送clicked()信号给槽;
}
void Qtscan::runScan()
{
pid_t pid=fork(); //建立一个新的进程
if(pid==0) //如果PID为0,即为子进程,这里为子进程所要做的具体事,
{
qDebug("new start.PID is : %d\n",getpid());
int result=system("./simplescan");//执行已经编译成功的simplescan程序
if(result<0) //一般不会执行到这里
{
qCritical("failed to execl led!\n");
}
_exit(-1); //退出,但不做清理工作
}
else if(pid>0) //如果PID>0,则为父进程,这里为父进程所要做的事,由于没什么可做,就让它打印一个语句吧。
{
qDebug("I am parent \n");
}
}
创建main.cpp
#include
#include "Qtscan.h"
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
Qtscan scaned;
scaned.show();
return app.exec();
}