connect(m_ValueBox[i], &QSpinBox::valueChanged, this, &LedControlModule::valueBoxValueChanged); 显示无法确定显示哪个重载函数QSpinBox::valueChanged实例
时间: 2024-09-13 21:09:44 浏览: 40
QT QSpinBox 控件使用全解
在C++中,当你使用`connect()`函数尝试连接一个信号(如`QSpinBox::valueChanged`)到一个槽函数(如`LedControlModule::valueBoxValueChanged`)时,如果没有显式指定信号的具体重载版本,编译器可能会因为存在多个同名但参数不同的信号而感到困惑。例如,`QSpinBox`的`valueChanged`信号可以传递整数、浮点数或其他类型的数据作为参数。
在这个例子中:
```cpp
connect(m_ValueBox[i], &QSpinBox::valueChanged, this, &LedControlModule::valueBoxValueChanged);
```
编译器不知道应该使用哪一个`valueChanged`重载,因为你没有提供足够的信息来决定具体哪一种。
解决这个问题的方法有两种:
1. 明确指定信号的版本,通过传递相应的参数类型或使用信号的模板版本,例如:
```cpp
connect(m_ValueBox[i], &QSpinBox::valueChanged<int>, this, &LedControlModule::valueBoxValueChanged);
```
2. 如果所有的重载都是无参的,你可以在`LedControlModule::valueBoxValueChanged`函数原型中声明它接收所有类型的值,并在实际调用时处理不同类型的参数。但这通常是设计模式上的一个权宜之计,不是最佳实践。
阅读全文