QtCreator和信号和插槽

时间:2011-04-09 18:35:33

标签: c++ qt qt4 qt-creator

在QtCreator 更改信号/插槽上下文菜单中,我既不能插入信号也不能插入具有参数化参数的插槽,例如:QList< QString>等,甚至不能仅引用常规类型( int,QSring等。)

为什么?

1 个答案:

答案 0 :(得分:5)

当您将信号连接到套接字时,您使用QObject的MetaType系统:

connect(发送者,SIGNAL(更新(QList< MyClass>)),接收者,SLOT(list_updated(QList< MyClass>))

信号和槽的参数是“QList< MyClass>”元类型。由于它是自定义元类型,因此Qt库不了解底层实现类型。

  

用。声明新类型   Q_DECLARE_METATYPE()来制作它们   适用于QVariant和其他   基于模板的功能。呼叫   qRegisterMetaType()来创建类型   可用于非模板   功能,例如排队信号   和插槽连接。

所以你需要在建立连接之前添加元类型声明:

qRegisterMetaType<MyClass>("MyClass");
qRegisterMetaType<QList<MyClass> >("QList<MyClass>");