Qt 中多线程信号传递 实例

移动开发
本文介绍的是Qt 中多线程信号传递 实例,关于Qt 中的多线程,相信友们接触了不少,先来看本文介绍。

Qt 多线程信号传递

  1. QObject::connect(const QObject * sender, const char * signal, 
  2. const QObject * receiver, const char * method, 
  3. Qt::ConnectionType type = AutoConnection); 

这个函数默认(即***一个参数type为AutoConnection)情况下只能在相同线程下的不同类之间传递信号,若想要把信号传递给另外一个线程下运行的类实例,必须要修改type的枚举值。

可以改为Qt::QueuedConnection,这样就能传递给其他线程下的类实例了。

另外,对于带参数的消息,参数的数据类型必须为Qt支持的元数据类型,如int、QString等,若要传递自定义的数据类型,必须把自定义的数据类型注册为元数据类型。

举个例子,比如我再两个线程下分别运行了两个类实例MainWindow *mainWnd和Manager *mngr,MainWindow把方法addUsers(LPHOSTSTRUCT )设为槽,Manager把方法NewUserCome(LPHOSTSTRUCT )设为消息,其中LPHOSTSTRUCT为自定义的数据类型。要是想在Manager中顺利的使用emit NewUserCome(lpHost)(lpHost为LPHOSTSTRUCT的一个实例),就要经过两步

一、注册LPHOSTSTRUCT为Qt的元数据类型

  1. qRegisterMetaType<LPHOSTSTRUCT> ("LPHOSTSTRUCT"); 

二、调用QObject::connect方法,连接信号和槽,这里要注意修改connect方法的第五个参数

  1. QObject::connect(mngr, SIGNAL(NewUserCome(LPHOSTSTRUCT)), mainWnd, SLOT(addUser(LPHOSTSTRUCT))); 

小结:Qt 多线程信号传递 实例的内容介绍完了,希望本文能帮你解决问题。

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-13 10:03:19

Qt 多线程 编程

2011-06-30 17:40:07

Linux 多线程 Android

2011-06-22 16:18:23

QT 多线程 QSocket

2011-07-01 11:18:50

Qt 多线程

2011-06-20 13:43:08

Qt Socket 线程

2011-06-29 16:34:11

Qt 子线程 线程

2011-06-24 11:12:39

Qt 多线程 线程

2023-11-15 13:55:32

2011-06-24 11:03:31

Qt 多线程 线程

2020-11-10 15:25:26

SemaphoreLinux翻译

2011-07-01 10:35:20

QT 多线程 TCP

2011-06-30 18:03:58

QT 多线程 服务器

2011-06-30 18:15:36

Qt 线程 同步

2011-06-22 16:08:40

Qt 多线程 事件循环

2011-06-16 10:38:13

Qt多线程编程

2011-06-22 16:02:37

Qt 多线程 重入

2010-03-15 19:37:00

Java多线程同步

2011-12-15 11:03:21

JavaNIO

2011-06-22 14:30:44

QT 多线程 线程

2012-11-12 09:26:06

.NET多线程
点赞
收藏

51CTO技术栈公众号