Qt线程:信号/插槽2对象(1单例)在主线程中创建并在另一个线程中调用

时间:2013-01-07 19:36:23

标签: c++ qt

我有一个问题: 我有2个对象,它们都是在主线程中创建和连接的。其中一个对象是Singleton。 现在我想从另一个线程中的单例调用一个方法并在其中发出一个信号。 问题是,在发出信号后不会调用连接的插槽。我做错了什么或连接()不能用它?

第二个线程应该处理一些文件夹并从单个对象调用一个方法,该方法发出信号,并带有该过程的结果。

代码看起来像这样(不工作):

void main() {
    Singleton* singleton = Singleton::getInstance();
    ShowResult* show = new Showesult();
    connect(singleton, SIGNAL(itemsset(Items)), show, SLOT(showresult(Items)));
    Process* p = new Process();
    QThread thread;
    p->moveToThread(thread);
    connect(&thread, SIGNAL(started()), p, SLOT(process()));
    thread.start();
}

class Process : public QObject {
    public:
        Process(){}

    public slots:
        void process() {
            // Do some work
            Singleton::getInstance()->setItems(someitems);
        }
};

class Singleton : public QObject {
    public:
        Singleton(){}

        Singleton* getInstance() {
            return instance;
        }

        void setitems(Items) {
            //Set items
            emit itemsset();
        }

    signals:
        void itemsset(Items);
};

class ShowResult : public QObject {
    public:
        ShowResult(){}

    public slots:
        void showresult(Items) {
            //THIS Slot is not called...
        }
}

感谢您的帮助......

0 个答案:

没有答案