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), ...)