c++ - qt 和 libbluedevil : No Such slot

标签 c++ qt

我正在尝试连接到 BlueDevil::Manager::devicesChanged ,但是当我运行我的程序时,出现错误 Object::connect: No such slot Handler::changed(QList<Device*>) in src/handler.cpp:26我该如何解决这个错误?据我所知,changed 具有正确的类型。

主要.cpp:

#include <QApplication>

#include "handler.h"

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    Handler handler;

    return app.exec();
}

处理程序.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;
};

处理程序.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*>)));

}

最佳答案

尝试:

connect(defaultAdapter, SIGNAL(devicesChanged(QList<BlueDevil::Device*>)),
        this, SLOT(changed(QList<BlueDevil::Device*>)));

SIGNALSLOT 是宏,它们不能真正感知命名空间。

如果还是不行,试试:

connect(defaultAdapter, SIGNAL(devicesChanged(QList<Device*>)),
        this, SLOT(changed(QList<BlueDevil::Device*>)));

...如果这不起作用,您必须将 using namespace BlueDevil; 放在标题中,并声明您的插槽:

void changed(const QList<Device*> &devices);

并使用您的原始连接。这有点悲伤。

关于c++ - qt 和 libbluedevil : No Such slot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695097/

相关文章:

python - PySide:将数据从 QML 传递到 Python

c++ - QT Creator 中没有警告

c++ - QT中鼠标事件是如何传递给widget的

c++ - "boost::mpl::identity<T>::type"在这里有什么意义?

c++ - 如何在 Java native 代理出错时获取 *native* 堆栈跟踪?

c++ - 将位数组转换为短

c++ - 读取文件中的最后一行(C++ 中的文件处理)

c++ - OpenCV 减慢网络摄像头捕获

c++ - 使用 QueuedConnection 还是 QMutex 来使对象线程安全?

python - 使用 pyqt4 在 qtextbrowser/qtextedit 中设置和获取 html 文本