QT由于函数重载创建函数指针的方法

// 创建两个部件
QSpinBox *spinBox = new QSpinBox(&window);
QSlider *slider = new QSlider(Qt::Horizontal, &window);
spinBox->setRange(0, 130);
slider->setRange(0, 130);

// 将两个部件数据捆绑
QObject::connect(slider, &QSlider::valueChanged, spinBox, 
&QSpinBox::setValue);
// QT文档可知QSpinBox::valueChanged被重载,所以需要创建函数指针指定类型
void (QSpinBox:: *spinBoxSignal)(int) = &QSpinBox::valueChanged;
QObject::connect(spinBox, spinBoxSignal, slider, &QSlider::setValue);

或者改为
QObject::connect(spinBox,static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
                     slider, &QSlider::setValue);

 

posted @ 2020-09-16 11:01  补码  阅读(427)  评论(0编辑  收藏  举报