在QtCreator 更改信号/插槽上下文菜单中,我既不能插入信号也不能插入具有参数化参数的插槽,例如:QList< QString>等,甚至不能仅引用常规类型( int,QSring等。)
为什么?
答案 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>");