qt和libbluedevil:没有这样的插槽
qt and libbluedevil: No Such slot
我正在尝试连接到BlueDevil::Manager::devicesChanged
,但是当我运行我的程序时,我得到错误Object::connect: No such slot Handler::changed(QList<Device*>) in src/handler.cpp:26
,我该如何修复此错误?据我所知,change的类型是正确的。
main.cpp:
#include <QApplication>
#include "handler.h"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
Handler handler;
return app.exec();
}
handler.h:
#include <bluedevil/bluedevil.h>
#include <iostream>
#include <QObject>
class Handler : public QObject
{
Q_OBJECT
public:
Handler();
public Q_SLOTS:
void changed(const QList<BlueDevil::Device*> &devices);
private:
BlueDevil::Manager *manager;
BlueDevil::Adapter *defaultAdapter;
};
handler.cpp
#include <bluedevil/bluedevil.h>
#include <iostream>
#include <QObject>
#include "handler.h"
using namespace BlueDevil;
void Handler::changed(const QList<Device*> &devices)
{
Q_FOREACH (const Device *device, devices)
{
std::cout << qPrintable(device->friendlyName()) << std::endl;
}
}
Handler::Handler() : QObject()
{
manager = Manager::self();
defaultAdapter = manager->defaultAdapter();
connect(defaultAdapter, SIGNAL(devicesChanged(QList<Device*>)),
this, SLOT(changed(QList<Device*>)));
}
Try with:
connect(defaultAdapter, SIGNAL(devicesChanged(QList<BlueDevil::Device*>)),
this, SLOT(changed(QList<BlueDevil::Device*>)));
SIGNAL
和SLOT
是宏,它们不能真正感知命名空间。
如果不行,试试:
connect(defaultAdapter, SIGNAL(devicesChanged(QList<Device*>)),
this, SLOT(changed(QList<BlueDevil::Device*>)));
…如果这不起作用,你必须把using namespace BlueDevil;
放在你的头,并声明你的插槽:
void changed(const QList<Device*> &devices);
,并使用原来的连接。
相关文章:
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何在没有信号的情况下从C++执行QML插槽
- 从Q_INVOKABLE功能或插槽中更改QQuick图像源
- 升压信号2将插槽传递到成员功能以断开连接
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- C++ 信号和插槽不工作:插槽不响应事件
- NS3 插槽混淆(需要帮助理解)
- QObject::连接无法将信号连接到*this*对象的插槽
- QT 插槽未在主线程上调用
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 控制带有信号/插槽的Qt QML滑动视图
- Qt 信号/插槽问题
- QT5 信号不会激活插槽内的功能
- Qt5:连接:如果插槽的参数少于信号,如何使用"连接"
- 需要实例化不同类/对象并在启动时确定的硬件插槽的设计模式
- Qt信号和插槽如果从QRunnable或其他线程调用,则不起作用
- Qt插槽调用了两次
- C++Qt信号和插槽
- 从插槽调用 QApplication::p rocessEvents 会导致再次调用同一插槽
- qt和libbluedevil:没有这样的插槽