验证一下:
public slots:
template <class Type>
void slots_test(Type type)
{
qDebug() << "void slots_test:" << type;
}
signals:
void signals_test(int type);
//connect函数
connect(this,&Widget::signals_test,this,&Widget::slots_test);
emit signals_test(2);
报错:
widget.cpp: error: C2664: “QMetaObject::Connection
QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const”:
无法将参数 2 从“void (__thiscall Widget::* )(int)”转换为“const char *”
结论是不可以。
Qt也有提示不能将模板函数作为信号或者槽。信号和槽的形参也需要一一对应,槽函数的形参可以少几个,但是少的要是信号形参列表顺序后几个的才行。