[Qt-interest] can't send signal in multithread

beka nosky bekanosky at gmail.com
Thu Apr 15 10:08:38 CEST 2010


Hi All,
I make some simple code to send signal in multithread environment. But it
failed.
The code was successfull in non-threading environment.

This is my code. Where is my fault ?

/*------------------------------------------------------------*/
main.cpp
/*------------------------------------------------------------*/
#include <QtCore/QCoreApplication>
#include "JobMgr.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    JobMgr jm;

    jm.start();
    jm.wait();

    return a.exec();
}

/*------------------------------------------------------------*/
JobMgr.h
/*------------------------------------------------------------*/

#ifndef JOBMGR_H
#define JOBMGR_H

#include <QThread>
#include <QFileSystemWatcher>

class JobMgr : public QThread
{
Q_OBJECT
public:
    explicit JobMgr(QObject *parent = 0);
    void run();

private:
    QFileSystemWatcher fsw;
signals:

public slots:
    void dirChangedHandler(QString dir_path);
};

#endif // JOBMGR_H



/*------------------------------------------------------------*/
JobMgr.cpp
/*------------------------------------------------------------*/

#include "JobMgr.h"
#include <stdio.h>

JobMgr::JobMgr(QObject *parent) :
    QThread(parent)
{
}

void JobMgr::run()
{
    fsw.addPath("/tmp/job/");

    if(
connect(&fsw,SIGNAL(directoryChanged(QString)),SLOT(dirChangedHandler(QString)))
== false) {
        fprintf(stderr,"%s connect error\n",__func__);
    }
    else
        fprintf(stderr,"%s connect succeed\n",__func__);

    fflush(stderr);

    exec();
}

void JobMgr::dirChangedHandler(QString dirPath)
{
    fprintf(stderr,"%s() ada perubahan di dir :%s\n",__func__,
dirPath.toStdString().c_str());
    fflush(stderr);
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100415/8a1543e7/attachment.html 


More information about the Qt-interest-old mailing list