在QThread中查询网络Ping值

博客讲述了在将带有UI界面的QT程序转化为后台服务的过程中遇到的问题,主要聚焦于QProcess在多线程环境中的使用导致的警告。作者通过创建新的类并封装查询Ping值的SLOT,利用QT的信号和槽机制解决了QObject不能在不同线程中创建子对象的问题,成功实现了后台服务的定时查询功能。
摘要由CSDN通过智能技术生成

之前写的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。就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值