Qt中,通过Silder更改Spinbox可以直接通过信号槽实现,如下
QObject::connect(slider, &QSlider::valueChanged,spinbox, &QSpinBox::setValue);
但是当通过Spinbox更改Slider时会报错
这时的解决办法就是通过函数指针。
函数指针:函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。(百度百科)
上面问题的解决办法就是定义一个函数指针,然后指定形参,如下:
void (QSpinBox:: *siganl)(int) = &QSpinBox::valueChanged; //函数指针
QObject::connect(spinbox, siganl, slider, &QSlider::setValue);
即可解决问题
2019-11-09补充:
今天翻到这篇文章,其实也没必用这种方法,直接用Qt4的SIGNAL()和SLOT()宏就完事了,填函数的时候记得加上形参就OK了~.