QSpinBox的两个同名信号使用时报错的处理

QSpinBox有两个同名的信号
void valueChanged(int i)
void valueChanged(const QString &text)

当这样使用时
QObject::connect(&spinBox, SIGNAL(valueChanged(int)), ...)
QObject::connect(&spinBox, SIGNAL(valueChanged(QString)), ...)
没有问题。

当使用C++11以上的语法时:
QObject::connect(&spinBox, &QSpinBox::valueChanged, ...)
编译器会报错:
error: no matching function for call to QObject::connect(QSpinBox*&, <unresolved overloaded function type>, ...)
使用函数名无法区分两个信号。

这时可以使用
auto qOverload(T functionPointer)
改写为
connect(spinbox, qOverload<int>(&QSpinBox::valueChanged), ...)

原文地址:https://www.cnblogs.com/nuoforever/p/15619321.html