1

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

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

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

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...
        }
}

谢谢你的帮助...

4

0 回答 0