Qt 线程调用方法:使用信号和槽实现线程间通信
在Qt中,可以使用QThread类来创建和管理线程。以下是一个简单的示例,展示了如何在Qt线程中调用方法,并通过信号和槽机制实现线程间安全通信:
#include <QThread>
#include <QDebug>
class WorkerThread : public QThread {
public:
void run() override {
qDebug() << 'Worker thread started';
// 在这里添加要在线程中执行的代码
// 调用方法
emit customSignal('Hello from worker thread');
}
signals:
void customSignal(const QString &message);
};
class MyObject : public QObject {
Q_OBJECT
public slots:
void handleCustomSignal(const QString &message) {
qDebug() << 'Received message:' << message;
}
};
int main(int argc, char *argv[]) {
QCoreApplication app(argc, argv);
MyObject myObject;
WorkerThread workerThread;
// 连接信号和槽
QObject::connect(&workerThread, &WorkerThread::customSignal, &myObject, &MyObject::handleCustomSignal);
// 启动线程
workerThread.start();
return app.exec();
}
#include "main.moc"
在上面的示例中,我们创建了一个WorkerThread类作为工作线程,并重写了它的run()方法来执行在线程中执行的代码。在run()方法中,我们通过调用emit关键字来发射一个自定义信号customSignal。
在主线程中,我们创建了一个MyObject对象,并将其槽函数handleCustomSignal()与WorkerThread的customSignal信号连接起来。然后,我们启动了WorkerThread线程。
当WorkerThread的run()方法开始执行时,它将发出customSignal信号,并将消息作为参数传递给槽函数handleCustomSignal()。槽函数handleCustomSignal()将在主线程中执行,并输出收到的消息。
请注意,在Qt中,线程之间的通信通常是通过信号和槽机制来实现的。使用信号和槽可以确保线程间的安全通信。
原文地址: https://www.cveoy.top/t/topic/qADs 著作权归作者所有。请勿转载和采集!