Qt中的类库有接近一半是从基类QObject上继承下来,信号与反应槽(signals/slot)机制就是用来在QObject类或其子类间通讯的方法(connect),当自定义参数如果出现如下错误提示的时候,表示你的参数可能没有进行注册:
QObject::connect: Cannot queue arguments of type 'PositionInfo'
(Make sure 'PositionInfo' is registered using qRegisterMetaType().)
解决方法:
在窗口程序中直接把写上如下代码即可(参数替换成自己的)
qRegisterMetaType<PositionInfo>("PositionInfo");
函数说明:
信号与槽的关联
通过调用 QObject 对象的 connect 函数来将某个对象的信号与另外一个对象的槽函数相关联,这样当发射者发射信号时,接收者的槽函数将被调用。该函数的定义如下:
bool QObject::connect ( const QObject * sender, const char * signal,
const QObject * receiver, const char * member ) [static]
这个函数的作用就是将发射者 sender 对象中的信号 signal 与接收者 receiver 中的 member 槽函数联系起来。当指定信号 signal 时必须使用 QT 的宏 SIGNAL(),当指定槽函数时必须使用宏 SLOT()。如果发射者与接收者属于同一个对象的话,那么在 connect 调用中接收者参数可以省略。