简体   繁体   English

QProcess 不发出完成信号

[英]QProcess doesn't emit finish signal

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";

as the above demo, I expect output finished after ping is done.作为上面的演示,我希望在 ping finished后输出finished but it didn't, even stateChanged didn't emit.但它没有,甚至stateChanged也没有发出。

(BTW, I think I have plan B to implement this by using qtconcurrent) (顺便说一句,我想我有计划 B 通过使用 qtconcurrent 来实现这一点)

https://doc.qt.io/qt-5/qprocess.html 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));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM