1

問題があります:メインスレッドで作成および接続されている2つのオブジェクトがあります。オブジェクトの 1 つはシングルトンです。ここで、別のスレッドのシングルトンからメソッドを呼び出し、その中でシグナルを発したいと考えています。問題は、信号が発信された後に接続されたスロットが呼び出されないことです。私は何か間違ったことをしていますか、それとも connect() はそれができませんか?

2 番目のスレッドは、いくつかのフォルダーを処理し、プロセスの結果を使用して、シグナルを発しているシングルトン オブジェクトからメソッドを呼び出す必要があります。

コードは次のようになります (動作していません)。

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