在qt中,信号槽本质都是函数,在C++中是函数就可以重载,所以有些情况下我们会对qt的信号或槽函数进行重载。
在qt5及其以后,qt的信号槽绑定是可以使用函数指针绑定,这时候我们需要进行绑定的时候,那具体是绑定的哪个函数?
比如下面例子:
//classA 信号
void sigTest();
void sigTest(int a);
void sigTest(QString a);
//classB 槽函数
void slotTest();
void slotTest(int a);
void slotTest(QString a);
//信号槽绑定
connect(class_a, &classA::sigTest, class_b, &ClassB::slotTest);
真的出现这样的情况了,可以使用下面操作选择对应的重载函数:
QOverload<const QString &>::of()
因此信号槽改为如下样式:
connect(class_a, QOverload<QString>::of(&classA::sigTest), class_b, &ClassB::slotTest);
选择重载的槽函数同理。