Qt5中的信号槽连接一般这样使用:1234567//mainwindow.hpublic slots: void ValueChange(int value);//mainwindow.cppauto spinbox = new QSpinBox;connect(spinbox, &QSpinBox::valueChange, this, &mainwindow::ValueChange);
但是,对于信号函数有重载的话,程序将无法编译通过,原因就是编译器无法确定是使用哪个信号函数,所以,我们需要显式的声明我们使用的信号函数类型
使用static_cast
1connect(spinbox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChange), this, &mainwindow::ValueChange);c++14中使用qOverload
qOverload
需要在Qt5.7后的版本才可以使用,并且需要c++141connect(spinbox, qOverload<int>(&QSpinBox::valueChange), this, &mainwindow::ValueChange);c++11中使用QOverload
在c++11则可以这么写1connect(spinbox, QOverload<int>::of(&QSpinBox::valueChange), this, &mainwindow::ValueChange);