QT中实现Thread于GUI主线程通信的方法
来源:互联网 发布:js给img赋值src 编辑:程序博客网 时间:2024/05/02 17:06
目前只会一种,采用信号槽机制。
通常情况下,信号和槽机制可以同步操作,这就意味着在发射信号的时候,使用直接函数即可以立刻调用连接到一个信号上的多个槽。
然而,当连接位于不同线程中的对象时,这一机制就会变得不同步起来,可以通过修改QObject::connect()的第5个可选参数而改变。
connect的第五个参数Qt::QueuedConnection表示槽函数由接受信号的线程所执行,如果不加表示槽函数由发出信号的次线程执行。
当传递信号的参数类型不是QT的元类型时要先注册,关于QT的元类型可以参看QT文档
通常情况下,信号和槽机制可以同步操作,这就意味着在发射信号的时候,使用直接函数即可以立刻调用连接到一个信号上的多个槽。
然而,当连接位于不同线程中的对象时,这一机制就会变得不同步起来,可以通过修改QObject::connect()的第5个可选参数而改变。
connect的第五个参数Qt::QueuedConnection表示槽函数由接受信号的线程所执行,如果不加表示槽函数由发出信号的次线程执行。
当传递信号的参数类型不是QT的元类型时要先注册,关于QT的元类型可以参看QT文档
QMetaType
这个类里面列举了所有的元类型。
以QString为例,注册时首先Q_DECLARE_METATYPE(QString);
然后,int id=qRegisterMetaType<QString>("QString");
加上这两句就注册成功了。
贴个示例的代码,次线程不断更改一个QString传给GUI主线程,主线程在GUI界面上显示。
mythread.h
以QString为例,注册时首先Q_DECLARE_METATYPE(QString);
然后,int id=qRegisterMetaType<QString>("QString");
加上这两句就注册成功了。
贴个示例的代码,次线程不断更改一个QString传给GUI主线程,主线程在GUI界面上显示。
mythread.h
widgett.h
mythread.cpp
widgett.cpp
- QT中实现Thread于GUI主线程通信的方法
- QT中实现Thread与GUI主线程连通方法
- QT中实现Thread与GUI主线程连通方法
- QT中实现Thread与GUI主线程连通方法
- Qt GUI程序中主线程与非主线程之间的通信
- Qt GUI程序中主线程与非主线程之间的通信
- Qt的主线程与GUI
- QT中线程调用GUI主线程控件的问题
- QT中线程调用GUI主线程控件的问题
- QT中线程调用GUI主线程控件的问题
- QT中线程调用GUI主线程控件的问题
- QT中线程调用GUI主线程控件的问题
- QT子线程与主线程的信号槽通信
- QT子线程与主线程的信号槽通信
- QT子线程与主线程的信号槽通信
- QT子线程与主线程的信号槽通信
- QT子线程与主线程的信号槽通信
- QT子线程与主线程的信号槽通信
- 在用户空间编程使用linux内核链表list,hlist宏定义和操作
- HTML5特性
- asp.net简单重写怎样重写URl
- struct sk_buff分析
- 修改Android开机画面
- QT中实现Thread于GUI主线程通信的方法
- 电力基本知识
- SOCKET传输数据、文件
- 赋值方法的一点小区别
- Android 核心分析 之六 -----IPC框架分析 Binder,Service,Service manager
- ROW_NUMBER() OVER()
- TIniFile Members (ini文件成员)-
- JPA注解详解
- 存储过程使用