C++ 尝试将水平滑块连接到Qt中的LCD编号和进度条时出现问题

C++ 尝试将水平滑块连接到Qt中的LCD编号和进度条时出现问题,c++,qt,C++,Qt,我想移动滑动条和要在LCD数字中显示的更改值,以及Qt中的进度条。 我在主窗口构造函数中使用connect函数,如下所示 connect(ui->horizontalSlider, &QSlider::valueChanged, ui->progressBar,&QProgressBar::setValue); connect(ui->horizontalSlider, &QSlider::valueChanged, ui->lcdNumber,

我想移动滑动条和要在LCD数字中显示的更改值,以及Qt中的进度条。 我在主窗口构造函数中使用connect函数,如下所示

connect(ui->horizontalSlider, &QSlider::valueChanged, ui->progressBar,&QProgressBar::setValue);
connect(ui->horizontalSlider, &QSlider::valueChanged, ui->lcdNumber, &QLCDNumber::display);
但是第二个函数返回

error: no matching function for call to 'MainWindow::connect(QSlider*&, void (QAbstractSlider::*)(int), QLCDNumber*&, <unresolved overloaded function type>)'
错误:调用'MainWindow::connect(QSlider*&,void(QAbstractSlider::*)(int),QLCDNumber*&,)时没有匹配的函数
为什么会发生这种情况


谢谢

由于参数类型不匹配而发生错误。有int参数,也有
int
参数。所以他们之间没有问题。另一方面,有三种不同类型的重载:
double
int
QString
。要连接过载信号/插槽,可以使用以下方法:

connect(ui->horizontalSlider, &QSlider::valueChanged, ui->lcdNumber, QOverload<int>::of(&QLCDNumber::display));
旧的
SIGNAL()/SLOT()
语法也可以解决这个问题。但我建议不要使用它们,因为它们很容易出错,而且“过时”

另外,请检查C++14的
QOverload
包装器。

您好,我尝试了SIGNAL()/SLOT()语法作为开始,因为它看起来更容易,但是由于某种原因,valueChanged(int)和display(int)不会显示在自动完成中。Lol,我刚刚实现了gives
QLCDNumber::display
示例。
connect(ui->horizontalSlider, &QSlider::valueChanged, [&](int value) {
    ui->progressBar->setValue(value);
    ui->lcdNumber->display(value);
});