用默认信号 参数不匹配connect(ui->one, SIGNAL(clicked()), this, SLOT(setVal(1, ui))),No such slot
时间: 2023-11-13 09:04:47 浏览: 136
选择连接clicked信号和show槽-ui界面设计基础
当使用`connect`连接一个信号和槽函数时,槽函数的参数必须与该信号的参数匹配。在你的代码中,`setVal`函数有两个参数,而`clicked()`信号没有任何参数,导致参数不匹配。
为了解决这个问题,你可以使用一个中间函数来连接信号和槽函数。这个中间函数只需要调用`setVal`函数并传递正确的参数即可。
例如,你可以定义一个名为`setValOne`的中间函数,它只接受一个参数并调用`setVal`函数并传递`1`和`ui`参数。然后,你可以使用`connect`来连接`clicked()`信号和`setValOne`槽函数。
下面是一个示例代码片段:
```c++
class MyClass : public QObject
{
Q_OBJECT
public:
MyClass(QWidget *parent = nullptr) : QObject(parent)
{
// ...
connect(ui->one, SIGNAL(clicked()), this, SLOT(setValOne()));
// ...
}
private slots:
void setVal(int val, QWidget *widget) { /* ... */ }
void setValOne() { setVal(1, ui); }
private:
Ui::MyClass *ui;
};
```
这样,当你点击`ui->one`按钮时,`setValOne`槽函数会被调用,然后它会调用`setVal`函数并传递正确的参数。
阅读全文