Chinaunix首页 | 论坛 | 博客
  • 博客访问: 310854
  • 博文数量: 92
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 960
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-21 19:38
文章分类

全部博文(92)

文章存档

2010年(71)

2009年(21)

我的朋友

分类: 嵌入式

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)          //如果PID0,即为子进程,这里为子进程所要做的具体事,

{

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)    //如果PID0,则为父进程,这里为父进程所要做的事,由于没什么可做,就让它打印一个语句吧。

{

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();

}

 

 

阅读(4820) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~