在信号和槽中使用自定义类型

如果要在Qt信号槽中使用自定义类型,需要注意使用qRegisterMetaType对自定义类型进行注册,当然在不跨线程时使用自定义类型signal/slot来传递,可能不会出现什么问题;一旦涉及跨线程就很容易出错,回想下信号槽的作用就是用来对象与对象之间通信的,难免会跨线程,建议在使用自定义类型利用信号槽通信时,最好先通过qRegisterMetaType()将自定义类型进行注册,以免出错。

qRegisterMetaType使用方法

  • 注册位置: 在第一次使用此类链接跨线程的signal/slot之前,一般在当前类的构造函数中进行注册;
  • 注册方法: 构造函数中加入代码:qRegisterMetaType("Myclass");
  • Myclass的引用类型需单独注册: qRegisterMetaType("Myclass&");

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×