C++ 线程中的计时器';s工人Qt

C++ 线程中的计时器';s工人Qt,c++,multithreading,qt,timer,C++,Multithreading,Qt,Timer,我试图在工人阶级中使用计时器。这是我的工人阶级: Worker.h class Worker : public QObject { Q_OBJECT public: explicit Worker(QObject *parent = nullptr); signals: void finished(void); public slots: void process(void); void test(void); private: QMutex

我试图在工人阶级中使用计时器。这是我的工人阶级:

Worker.h

class Worker : public QObject
{
    Q_OBJECT
public:
    explicit Worker(QObject *parent = nullptr);

signals:
    void finished(void);

public slots:
    void process(void);
    void test(void);

private:
    QMutex m_mutex;

};
Worker.cpp

void Worker::process(void)
{
    qDebug() << "worker process";       //This works
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(test()));

    forever
    {

    }
}

void Worker::test(void)
{
    qDebug() << "test123";   //This does not work
}
问题是来自
Worker::process
timer
无法工作。是否需要以特殊方式在新线程中初始化此计时器?

创建计时器后需要调用。在process()槽中也不需要“永远”

请尝试以下方法:

void Worker::process(void)
{
    qDebug() << "worker process";       //This works
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(test()));
    timer->start(1000); // Fire timer timeout each 1000ms.
}
void Worker::进程(void)
{
qDebug()开始(1000);//每1000毫秒触发一次计时器超时。
}

计时器未启动,请调用计时器的start()方法。文档中说“要使用它,请创建一个QTimer,将其timeout()信号连接到适当的插槽,然后调用start()。”看看
forever{…}
实际上做了什么?我希望它时不时地处理事件。
void Worker::process(void)
{
    qDebug() << "worker process";       //This works
    QTimer *timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(test()));
    timer->start(1000); // Fire timer timeout each 1000ms.
}