如何解决QProcess 不发出完成信号
QProcess* p = new QProcess;
p->setProgram("ping");
p->setArguments(QStringList()<<"127.0.0.1");
connect(p,QOverload<int,QProcess::ExitStatus>::of(&QProcess::finished),[=](int exitCode,QProcess::ExitStatus exitStatus){
qDebug()<<"finished";
});
connect(p,&QProcess::stateChanged,[=](QProcess::ProcessState state){
qDebug()<<"stateChanged"<<state;
});
qDebug()<<p->startDetached();
qDebug()<<"startDetached";
作为上面的演示,我希望在 ping 完成后输出 finished
。
但它没有,甚至 stateChanged
也没有发出。
(顺便说一句,我想我有计划 B 通过使用 qtconcurrent 来实现这个)
解决方法
https://doc.qt.io/qt-5/qprocess.html
QString hostName = "127.0.0.1";
proc = new QProcess();
connect(p,QOverload<int,QProcess::ExitStatus>::of(&QProcess::finished),[=](int exitCode,QProcess::ExitStatus exitStatus){
qDebug()<<"finished";
});
connect(p,&QProcess::stateChanged,[=](QProcess::ProcessState state){
qDebug()<<"stateChanged"<<state;
});
proc->start("ping",QStringList() << QString(hostName));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。