> 技术文档 > Qt:qRegisterMetaType函数使用介绍

Qt:qRegisterMetaType函数使用介绍


简介

在Qt中,qRegisterMetaType是一个用于向元对象系统注册自定义类型的函数。这对于需要在信号和槽中使用自定义类型(包括模板类如std::shared_ptr)或用于排队连接(Queued Connection)非常重要。

作用:

  • ​使类型可用于信号与槽机制​​:特别是当信号和槽连接类型为Qt::QueuedConnection(跨线程)或Qt::BlockingQueuedConnection时。

  • ​允许类型在QVariant中使用​​:注册后的类型可以通过QVariant进行存储和传递。

  • ​提供类型名到类型的映射​​:允许在运行时动态创建、拷贝和销毁对象实例。

为什么需要registerType

如果不注册,Qt无法处理非内置类型、非Qt类型的参数,会导致运行时错误(如:QMetaType::registerType: type name is unknown)。

在Qt的信号槽跨线程调用中,参数需要被拷贝存储到事件队列中。Qt必须知道如何:

  • 拷贝参数(使用拷贝构造函数)

  • 在事件处

电影影评