本文假定读者对connect函数使用是没有问题的
qt5的connect函数,可以通过函数名进行绑定,
QMetaObject::Connection connect(const QObject *, PointerToMemberFunction,const QObject *, PointerToMemberFunction,Qt::ConnectionType);
但是需要注意的是,绑定的函数名只能在类中使用,甚至是子类都无法使用,用protected(只有父类和子类可以使用)也无法使用。这就有问题了。
但是在实际使用过程中,父类耦合太严重,在重构过程中,绑定的信号槽函数,开始都是在父类中,整合代码的时候,绑定方式不一样,所以需要提出不同的代码到子类中进行多态整合使用。就出现了需要在子类分别绑定不同信号跟槽的需求,但是这个时候在父类中绑定的函数,在子类中是编译通不过的,只能修改成public或者通过宏绑定才能成功。但是问题是,设计的好好的封装槽不能修改成public,强制修改成宏绑定,编译通过了,但是槽函数无法触发了。
没办法,只能放弃,把函数名绑定的信号槽全部放到父类中绑定。