12/08/2010

Баг в Qt

Понадобилось мне в QtAda использовать класс QProcess для запуска сторонних приложений и управления ими из моей программки.

В результате чего в 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

Комментариев нет:

Отправить комментарий