在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()WorkerThreadcustomSignal信号连接起来。然后,我们启动了WorkerThread线程。

WorkerThreadrun()方法开始执行时,它将发出customSignal信号,并将消息作为参数传递给槽函数handleCustomSignal()。槽函数handleCustomSignal()将在主线程中执行,并输出收到的消息。

请注意,在Qt中,线程之间的通信通常是通过信号和槽机制来实现的。使用信号和槽可以确保线程间的安全通信。

Qt 线程调用方法:使用信号和槽实现线程间通信

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

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