gpt4 book ai didi

c++ - qt 和 libbluedevil : No Such slot

转载 作者:行者123 更新时间:2023-11-28 08:12:22 25 4
gpt4 key购买 nike

我正在尝试连接到 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com