在Qt中,可以使用信号与槽机制来实现从循环中独立运行的子线程中调用父线程函数。下面是具体的步骤:
class Worker : public QObject
{
Q_OBJECT
public:
explicit Worker(QObject *parent = nullptr);
signals:
void resultReady(int result);
public slots:
void doWork();
};
void Worker::doWork()
{
// 执行子线程任务
int result = 0;
// ...
// 发送结果给父线程
emit resultReady(result);
}
QThread* thread = new QThread;
Worker* worker = new Worker;
worker->moveToThread(thread);
QObject::connect(worker, &Worker::resultReady, [thread, worker](int result){
// 在父线程中处理结果
// ...
// 任务完成后退出子线程
worker->deleteLater();
thread->quit();
});
QObject::connect(thread, &QThread::started, worker, &Worker::doWork);
thread->start();
通过以上步骤,就可以在Qt中实现从循环中独立运行的子线程中调用父线程函数。在父线程中,可以通过连接信号与槽的方式,处理子线程任务完成后的结果。这种方式可以避免在子线程中直接调用父线程函数,确保线程安全性。
关于Qt的更多信息和使用方法,可以参考腾讯云的Qt开发文档:Qt开发文档
领取专属 10元无门槛券
手把手带您无忧上云