【问题标题】:kill qprocess with parent用父级杀死 qprocess
【发布时间】:2012-10-04 16:59:13
【问题描述】:

这是执行命令并返回输出的代码。 问题是,如果我终止 testProcess,“ping”会继续进行。 我也试过

QObject *parent;
parent=new QObject;
myprocess *p;
p=new myprocess(parent);

对不起我的英语

testProcess.h:

class myprocess : public QProcess{
    Q_OBJECT
public:
    myprocess( QObject *parent = 0 );
protected slots:
void readyOut();
void readyErr();
};

testProcess.cpp 主要:

myprocess *p;
p=new myprocess;

QObject::connect(p,SIGNAL(readyReadStandardOutput()),p,SLOT(readyOut()));
QObject::connect(p,SIGNAL(readyReadStandardError()),p,SLOT(readyErr()));

p->start("ping -t www.google.com");

p->waitForFinished(60000);

delete p;

【问题讨论】:

    标签: c++ parent kill qprocess


    【解决方案1】:

    如果您希望您的进程在应用程序关闭时关闭,那么您可以连接到核心应用程序aboutToQuit() 信号。它看起来像这样

    connect( QCoreApplication::instance(), SIGNAL(aboutToQuit()), p, SLOT(kill()));
    

    进程中还有一个terminate()槽可以使用,但我认为kill()可能更适合你的情况。

    【讨论】: