函数的二义性

本文由 简悦 SimpRead 转码, 原文地址 www.cnblogs.com

connect(ui->spinBox_luminosity,&QSpinBox::valueChanged, 
ui->horizontalSlider_luminosity, &QSlider::setValue);

执行上面语句,提示如下错误。connect 采用的是 Qt 5 的语法,问题原因是函数 valueChanged 有两个形态:QSpinBox::valueChanged(int) 和 QSpinBox::valueChanged(QString),编译器不知道要使用哪个函数

no matching function for call to QObject::connect(QSpinBox&, , QSlider&, void (QAbstractSlider:😗)(int))

解决方法

1、强制类型转换

connect(ui->spinBox_luminosity,static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), 
ui->horizontalSlider_luminosity, &QSlider::setValue);

2、使用 Qt 5 之前的语法

connect(ui->spinBox_luminosity, SIGNAL(valueChanged(int)),
ui->horizontalSlider_luminosity, SLOT(setValue(int)));
posted @ 2022-05-29 18:38  笑等茶凉  阅读(63)  评论(0编辑  收藏  举报