Qt 使用moveThread的子线程在forever中如何接收主线程的信号
在Qt中,可以使用信号和槽机制来实现主线程向子线程发送信号的功能。
首先,在子线程的类中定义一个信号,用于接收主线程发送的信号:
class WorkerThread : public QThread
{
Q_OBJECT
public:
WorkerThread(QObject *parent = nullptr);
signals:
void mySignal();
protected:
void run() override;
};
在主线程中创建子线程的实例,并连接主线程的信号和子线程的槽函数:
void MainWindow::onButtonClicked()
{
WorkerThread *workerThread = new WorkerThread(this);
connect(this, &MainWindow::mySignal, workerThread, &WorkerThread::mySignal);
workerThread->start();
}
在子线程的槽函数中处理接收到的信号:
void WorkerThread::run()
{
forever {
// do something in the worker thread
// receive signal from the main thread
emit mySignal();
// continue doing something in the worker thread
}
}
这样,子线程在forever循环中可以接收到主线程发送的信号,并在槽函数中处理。
原文地址: https://www.cveoy.top/t/topic/jcek 著作权归作者所有。请勿转载和采集!