Qt线程间共享数据
来源:互联网 发布:linux 参数是引用类型 编辑:程序博客网 时间:2024/05/16 05:36
Qt线程间共享数据
1. 数据共享注意点
像 QString 等这些 Qt 本身定义的类型,直接传送即可。但如果自定义的类型想使用 signal/slot 来传递的话,则不能直接使用。
typedef unsigned short u16;
以 u16 为例:
步骤:
- 在类型定义完之后,加入声明
Q_DECLARE_METATYPE(U16)
- 在使用函数中注册这种类型:
qRegisterMetaType(u16)("u16")
- 如果还需使用这种类型的引用或指针,还需注册:
qRegisterMetaType(u16*)("u16*");qRegisterMetaType(u16&)("u16&");
2. Qt 线程
示例:
class WorkerThread : public QThread{ Q_OBJECTpublic: WorkerThread(u16 *info_orignal, u16 *info_sorting, QObject *parent = Q_NULLPTR); ~WorkerThread();protected: void run();signals: void FinishedSignal(u16 *info_orignal, u16 *info_sorting);private: u16 *infoOrignal; u16 *infoSorting};
WorkerThread::WorkerThread(u16 *info_orignal, u16 *info_sorting, QObject *parent): QThread(parent), infoOrignal(info_orignal), infoSorting(info_sorting){}void WorkerThread::run(){ ReadBadBlockInfo(infoOrignal, infoSorting); emit FinishedSignal(infoOrignal, infoSorting);}
#include <QMetatype>
Q_DECLARE_METATYPE(U16)
void MyObject::StartWorkThread(){ qRegisterMetaType(u16)("u16"); qRegisterMetaType(u16*)("u16*"); u16 *info_orignal = (u16*)malloc(18); u16 *info_sorting = (u16*)malloc(18); WorkerThread *workerThread = new WorkerThread(info_orignal, info_sorting, this); connect(workerThread, &WorkerThread::FinishedSignal, this, &MyObject::HandleREaults); connect(workerThread, &WorkerThread::finished, this, &QObject::deleteLater);}
阅读全文
0 0
- Qt线程间共享数据
- QT线程共享数据
- Qt学习:线程间共享数据
- 详解 Qt 线程间共享数据
- Qt学习:线程间共享数据
- 详解 Qt 线程间共享数据
- QT线程共享数据(转载)
- Qt 线程间共享数据(qRegisterMetaType的使用)
- 线程间共享数据
- 线程间数据共享
- 线程间数据共享
- 设置线程间共享数据
- 线程间的数据共享
- 线程管理以及线程间数据共享
- 线程间共享数据例子--售票/退票
- 线程间共享数据的一个例子
- 线程间共享数据无需竞争
- 第三章(在线程间共享数据)
- 兼容IE透明度,IE7以及以下版本不加载
- 类模板——深入浅出
- JMS基本概念
- 函数传参(函数作为参数)
- Swift-Core Graphics绘图框架详解3(绘制渐变、填充渐变色)
- Qt线程间共享数据
- 第十三周作业
- iOS代理机制实现原理和应用
- win7用WMI修改IP的方法
- 如何解决“access violation at address”错误
- ElasticSearch的状态查看
- git clone 使用方法
- Okhttp get异步请求数据
- js + jQuery + html 常用操作【持续积累】