使用信号槽
1、跨线程
DataThread *my=new DataThread;//DataThread继承自QObject 好像不能有父对象 QThread *Thread=new QThread; // 好像不能有父对象 my->moveToThread(thread); thread->start(); connect(thread, &QThread::started, [=] { my->dealData(QList);//子线程开始处理数据 }); connect(my, &DataThread::dealOver, this, &Widget::recvDataFromThread, //子线程处理完数据后,将结果发到主线程 Qt::QueuedConnection); 注: 1、销毁线程 thread->exit(0); 2、可能无法识别自定义的数据类型,需要在构造函数中注册数据类型。 #include<QMetaType> qRegisterMetaType<QVector<structXYZ>>("QVector<structXYZ>");