작업자 클래스에서 타이머를 사용하려고합니다.타이머가 스레드의 작업자 Qt
QThread *thread = new QThread;
Worker *worker = new Worker;
worker->moveToThread(thread);
QObject::connect(thread, SIGNAL(started()), worker, SLOT(process()), Qt::QueuedConnection);
QObject::connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
QObject::connect(worker, SIGNAL(finished()), thread, SLOT(quit()));
QObject::connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater()));
thread->start();
문제 :
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.cpp
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;
};
: 이것은 내 작업자 클래스 그게 timer
에서 Worker::process
까지입니다. 작동하지 않습니다. 특별한 방법으로 새 스레드에서이 타이머를 초기화해야합니까?
타이머가 시작되지 시작 호출() 타이머의 방법을. 설명서에 "QTimer를 만들고, QTimer를 만들고, 해당 슬롯에 timeout() 신호를 연결하고, start()를 호출합니다." http://doc.qt.io/qt-5/qtimer.html을보십시오 – sddk
'forever {...} '는 실제로 무엇을합니까? 나는 때때로 이벤트를 처리하기를 바랍니다. –