Qt实现指定线程执行回调
2015-12-10 14:45
1001 查看
说明
同线程时,直接调用回调(block参数没意义)
创建invoker所在的线程,需要有Qt的消息循环(比如UI线程)
直接上代码
同线程时,直接调用回调(block参数没意义)
创建invoker所在的线程,需要有Qt的消息循环(比如UI线程)
直接上代码
typedef std::function<void()> InvokerFunc; class Invoker: public QObject { Q_OBJECT public: Invoker(QObject *parent=0): QObject(parent) { qRegisterMetaType<InvokerFunc>("InvokerFunc"); } void execute(const InvokerFunc &func, bool block) { if (QThread::currentThread()==thread()) {//is same thread func(); return; } if (block) { metaObject()->invokeMethod(this, "onExecute", Qt::BlockingQueuedConnection, Q_ARG(InvokerFunc, func)); } else{ metaObject()->invokeMethod(this, "onExecute", Qt::QueuedConnection, Q_ARG(InvokerFunc, func)); } } private slots: void onExecute(const InvokerFunc &func) { func(); } };
相关文章推荐
- 老李分享:QTP的录制原理以及实现
- Qt安装和QML HelloWord程序
- QT Creator安装版跟进 QT源码笔记
- 可供VC调用的QT编写的界面DLL方法
- Qt入门-layout布局
- QT 系统托盘图标
- [Qt]自定义控件之开关控件
- Qt使用教程之添加编译器(二)
- QT打包发布
- pyqt右键菜单
- Qt信息隐藏(Q_D/Q_Q)介绍——从二进制兼容讲起
- Qt中如果通过QStyle自定义能够跨平台的界面控件
- QT中静态库的生成与使用——创建共享库代码,附例子
- 调色板类QPalette——包含了Qt窗口不见的颜色组(collor group),和Windows右键属性外观非常类似
- Qt 不规则窗体的实现(构造函数里setPaletteBackgroundPixmap后设置setMask)
- QT学习交流群
- 自学QT之qFind的用法
- 自学QT之static_cast<int>
- 自学QT之QT开发文件MD5计算器源码
- 自学QT之QT写的程序是否必须开源?