在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循环中可以接收到主线程发送的信号,并在槽函数中处理。

Qt 使用moveThread的子线程在forever中如何接收主线程的信号

原文地址: https://www.cveoy.top/t/topic/jcek 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录