Qt主线程把数据发给子线程,主线程会阻塞吗

#include <QCoreApplication> #include <QThread> #include <QObject> #include <QDebug> // 子线程类 class Worker : public QObject { Q_OBJECT public slots: void processData(int data) { qDebug() << "Processing data in thread:" << QThread::currentThread(); // 模拟耗时操作 QThread::sleep(2); qDebug() << "Finished processing data:" << data; } }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建子线程对象 QThread workerThread; Worker worker; // 将worker对象移动到子线程 worker.moveToThread(&workerThread); // 连接信号和槽 QObject::connect(&workerThread, &QThread::started, [&worker]() { for (int i = 0; i < 5; ++i) { emit worker.processData(i); QThread::sleep(1); // 模拟主线程的其他工作 } }); // 启动子线程 workerThread.start(); // 主线程继续执行其他任务 for (int i = 0; i < 5; ++i) { qDebug() << "Main thread working..."; QThread::sleep(1); // 模拟主线程的其他工作 } // 等待子线程完成 workerThread.quit(); workerThread.wait(); return a.exec(); } #include "main.moc"
上一篇:「QT」文件类 之 QTemporaryFile 临时文件类


下一篇:Python中的HTML