В результате чего в Qt 4.7.1 был обнаружен баг:
Сигнал QProcess:started вырабатывается 2 раза при старте процесса.
Оказывается баг (QTBUG-7039) известен аж с 2009 года, и даже есть патч,
но отчего то Nokia не хочет исправлять эту ошибку. А жаль.
Вот пример приложения:
/* my_object.h */
#include
#include
#include
#include
class My_Object : public QObject {
Q_OBJECT
public:
My_Object () {
this->p = new QProcess;
connect (this->p,
SIGNAL (started()),
this,
SLOT(appStarted()));
};
void execute () {
if (p)
p->start ("ls");
if (!p->waitForStarted (10000))
qDebug () << "cannot start process" << p->exitCode ();
}
public slots:
void appStarted () {
qDebug () << "Slot : Process Started" << p->pid ();
}
private:
QProcess *p;
};
/* main.cpp */
#include "my_object.h"
int main(int argc, char *argv[])
{
My_Object *m = new My_Object;
m->execute ();
delete m;
}
После компиляции:
qmake -project && qmake && make
имеем:
./process
Slot : Process Started 16669
Slot : Process Started 16669
Комментариев нет:
Отправить комментарий