个人技术分享

当使用Qt5的信号与槽语法时,如果一个槽或信号被重载了(即同一个函数名有不同的参数列表),编译器可能会因为不清楚应该连接哪个函数版本而报错。

为了解决这个问题,可以通过提供静态转型 (static_cast) 或者提供函数指针来给编译器必要的信息

如:

    void (Teacher:: *teacherSignal)(QString) = &Teacher::hungry;
    void (Student:: *studentSlot)(QString) = &Student::treat;
  //  connect(zt,&Teacher::hungry,jack,&Student::treat);
    connect(zt,teacherSignal,jack,studentSlot);
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

或者:

connect(teacher,static_cast<void(Teacher:: *)(QString)>(&Teacher:: hangry),student,
static_cast<void(Student:: *)(QString)>(& Student::treat));