QObject::connect: signal not found in QPushButton
时间: 2024-09-29 13:04:46 浏览: 54
QObject::moveToThread用例
5星 · 资源好评率100%
当在QObject(如QPushButton)上使用`QObject::connect()`函数时,如果报出`signal not found in QPushButton`这样的错误,意味着你在尝试连接一个信号(Signal)到一个槽(Slot),但是找不到所指定的信号。在QPushbutton中,常见的信号通常是`clicked()`或`pressed()`,用于响应按钮点击事件。
例如:
```cpp
QPushButton *button = new QPushButton("Click me");
QObject::connect(button, &QPushButton::clicked, this, [this]() { /* Slot function */ });
```
在这个例子中,`&QPushButton::clicked`是信号,`this->slotFunction()`是槽函数。如果误写成了`&QPushButton::nonExistentSignal`,就会导致找不到信号的错误。
检查以下几个方面:
1. 确保信号名拼写无误,包括大小写和是否有特殊的命名约定(如Qt中的`clicked()`而不是`click()`)。
2. 检查信号是否正确地与槽函数关联,特别是当使用lambda表达式作为槽函数时,需要确保指针传递正确。
3. 如果信号是在派生自QPushButton的自定义类中新增的,确保在`#include`中包含了相应的头文件。
如果以上都确认无误,可能是信号未正确注册或实现了,或者是在构造函数中没有使用`QObject::connect()`连接信号。如果信号不是由QObject派生类提供的,可能需要在适当的位置创建并发射这个信号。
阅读全文