C++ 线程中的计时器';s工人Qt
我试图在工人阶级中使用计时器。这是我的工人阶级: Worker.hC++ 线程中的计时器';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
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.
}