QtCreator和信号和插槽

sno*_*kin 2 c++ qt qt4 qt-creator

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

为什么?

小智 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>");
Run Code Online (Sandbox Code Playgroud)