Qt中,通过Silder更改Spinbox可以直接通过信号槽实现,如下

    QObject::connect(slider, &QSlider::valueChanged,spinbox, &QSpinBox::setValue);

但是当通过Spinbox更改Slider时会报错

error

这时的解决办法就是通过函数指针。

函数指针:函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。(百度百科)

上面问题的解决办法就是定义一个函数指针,然后指定形参,如下:

    void (QSpinBox:: *siganl)(int) = &QSpinBox::valueChanged;  //函数指针
    QObject::connect(spinbox, siganl, slider, &QSlider::setValue);

2

即可解决问题

2019-11-09补充:

今天翻到这篇文章,其实也没必用这种方法,直接用Qt4SIGNAL()SLOT()宏就完事了,填函数的时候记得加上形参就OK了~.

Last modification:November 9, 2019
If you think my article is useful to you, please feel free to appreciate