gpt4 book ai didi

Qt QNetworkAccessManager & 多个QNetworkReplay

转载 作者:可可西里 更新时间:2023-11-01 16:52:24 38 4
gpt4 key购买 nike

我有两个 http get 方法。

首先是获取UserID,其次是获取当前用户的完整信息;

我想处理具有不同插槽的成品信号

使用 GetUserIDCompleted 处理 GetUserID 并使用 GetUserDetailsCompleted 处理 GetUserDetails

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);

nam = new QNetworkAccessManager(this);

GetUserID();
connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(GetUserIDCompleted(QNetworkReply*)));

GetUserDetails();
connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(GetUserDetailsCompleted(QNetworkReply*)));
}

是否可以在不同的 SLOTS 中获取 QNetworkReplay?

enter image description here

最佳答案

也许你可以这样做:拥有不同方法的枚举

enum GetMethod
{
getUserId,
getUserDetails
};

然后您保留回复和相应方法的哈希值:

QHash<QNetworkReply*, GetMethod> hash;

QNetworkReply *reply1 = nam->post(requestUserId, data);
hash[reply1] = GetMethod::getUserId;

QNetworkReply *reply2 = nam->post(requestUserDetails, data);
hash[reply2] = GetMethod::getUserDetails;

connect(nam, SIGNAL(finished(QNetworkReply*)), this, SLOT(finished(QNetworkReply*)));

并且有一个槽可以调用正确的函数

void MainWindow::finished(QNetworkReply *reply)
{
switch(hash[reply])
{
case GetMethod::getUserId:
GetUserIDCompleted(reply);
break;
case GetMethod::getUserDetails:
GetUserDetailsCompleted(reply);
break;
}

hash.remove(reply);
}

我还没有尝试过并采取了一些捷径,但你明白了它的精神 =) 。似乎您可以使用答案检索请求,但我认为使用枚举更容易。

希望对你有帮助

关于Qt QNetworkAccessManager & 多个QNetworkReplay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12090786/

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