之前写的QT程序是有UI界面的,现在要转成后台程序,所以要改成后台服务。方法采用QTService在此不做描述。
但是新的程序用定时器有问题,改为用Qthread。
查询ping值的代码如下:
QString cmdstr = "ping -n 1 -w 1000 ";
cmdstr = cmdstr + myJsonData.robotMode.chassisMode.ip;
exc.start(cmdstr);
exc.waitForFinished(1000);
QString outstr = codec->toUnicode(exc.readAll());
qDebug()<<outstr<<endl;
由于QProcess本身是一个进程,在线程中调用这个命令,虽然能直行,但是一直告警:
QObject: Cannot create children for a parent that is in a different thread
解决办法当然是QT的信号和槽。新建一个类,把查询Ping值的功能封装成一个SLOT.在线程里emit Slot。就可以了。