gpt4 book ai didi

c++ - QT请求 "QObject::connect: No such slot BackEnd::RequestReceived"

转载 作者:行者123 更新时间:2023-11-28 01:42:29 25 4
gpt4 key购买 nike

我正在尝试使用 QT 发出获取一些数据的请求。

我的后端.h

#ifndef BACKEND_H
#define BACKEND_H

#include <QNetworkAccessManager>
#include <QObject>
#include <QString>
#include <QNetworkReply>
class BackEnd : public QObject
{
Q_OBJECT
Q_PROPERTY(QString userName READ userName WRITE setUserName NOTIFY userNameChanged)

public:
explicit BackEnd(QObject *parent = nullptr);

QString userName();
void setUserName(const QString &userName);

signals:
void userNameChanged();

private:
QString m_userName;
QNetworkAccessManager *manager;
//also tried: void RequestReceived(QNetworkReply* reply); << without space after QNetworkReply
void RequestReceived(QNetworkReply * reply);
};
#endif // BACKEND_H

我的.cpp

#include "backend.h"
#include <string>
#include <iostream>
#include <QtNetwork>

BackEnd::BackEnd(QObject *parent) :
QObject(parent)
{
manager = new QNetworkAccessManager(this);


}
void BackEnd::RequestReceived(QNetworkReply * reply){
QByteArray rawData = reply->readAll();
QString textData(rawData);
qDebug() << textData;
}

QString BackEnd::userName()
{
return m_userName;
}

void BackEnd::setUserName(const QString &userName)
{
if (userName == m_userName)
return;

m_userName = userName;
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(RequestReceived(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("https://google.com")));
emit userNameChanged();

}

我发现了类似的问题,但几乎所有答案都说应该添加 Q_OBJECT(我有)。我对 qt 很陌生,但如果我理解正确,错误表明我没有

BackEnd::RequestReceived(QNetworkReply*)

方法,我有。欢迎任何帮助。

最佳答案

您需要将 void RequestReceived(QNetworkReply * reply); 标记为插槽:

Q_SLOT void RequestReceived(QNetworkReply * reply);

关于c++ - QT请求 "QObject::connect: No such slot BackEnd::RequestReceived",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46606583/

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