- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有两个 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?
最佳答案
也许你可以这样做:拥有不同方法的枚举
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/
这是我的文件。我对此有一些疑问。 // networking.h #ifndef NETWORKING_H #define NETWORKING_H #include class Networ
我是 Qt 新手,我试图了解以下信号槽连接: m_networkManager = new QNetworkAccessManager(this); QNetworkReply *reply = m_
我尝试对 REST 服务执行简单的 GET 操作,并想知道如何识别/关联请求与我在 SLOT 函数中获得的响应。例如,我可能会向同一经理发送多个请求,并希望传递一个 messageID,以便在我的 S
我有一个非常困惑的问题。 我有一个简单的项目,它从一些 ftp 服务器下载文件。效果非常好。 然后,我尝试将相同的代码实现到一个更大的项目中(第一个是控制台应用程序,第二个是 GUI,但我认为这不会改
我正在尝试在 CentOS 6.4 上的 Qt 5.0 中使用 QNetworkAccessManager 将文件上传到服务器。 我曾尝试在网上遵循一些示例,但它们都不起作用。 QFTP 工作得很好,
目前我正在开发一个从远程服务器发送和接收文件的应用程序。为了进行网络操作,我正在使用 QNetworkAccessManager。 要上传文件,我使用 QNetworkAccessManager::p
函数 CheckSite() 使用类似 http://example.com 的 URL 调用,它初始化一个 QNetworkAccessManager 对象和 connect() 插槽和信号。 ma
在 qt4.8 中,仍然有 qhttp 类,我可以使用 http->hasPendingRequests()检查是否还有待处理的请求。 但是在qt5中,我们被迫使用QNetworkAccessMana
QNetworkAccessManager 工作得很好,然后每次在 get() 方法上都开始崩溃,这非常简单: QNetworkReply *reply = myManager->get(QNetwo
我有一个从 QObject 派生的类“下载器”,它在工作线程中运行。当线程启动时,下载器在堆上创建一个 QNetworkAccessManager 对象,并开始请求文件。我会跟踪请求和接收了多少文件。
所以我有这段代码: QUrl url("http://..."); QNetworkRequest request(url); QNetworkReply *reply = m_networkMana
我的第一个 Qt 应用程序正在开发中。它是用于站点消息传递的桌面客户端。 Qt 文档说我只需要一个 QNetworkAccessManager 跨应用程序实例。但我也读到在 Qt 中使用单例不是一个好
我想直接请求和响应,而不是使用 connect(..,SLOT(finished()),..,SLOT()) 最佳答案 您可以使用QEventLoop,以便应用程序等待并可以同时处理其他事件。 #in
我在另一个线程中创建了一个 QNetworkAccessManager。该网络只能在 MyMegaThread 中使用。 QNetworkAccessManager 是从线程的 run 方法创建的:
我正在尝试使用以下代码下载网页的源代码头文件: #include #include #include #include #include class CDownloader : public
我有以下代码: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我正在使用 Qt 4.7.4 中的 QtNetwork 为 VLC 2.0 编写一个 HTTP 访问模块。我的代码片段如下: static int Open(vlc_object_t *p_this)
在我的应用程序中,我有一个将文件上传到服务器的方法,这个方法工作正常。 但是,当我一次多次调用此方法时(例如遍历 chooseFilesDialog 的结果),前 7 个(或多或少)文件已正确上传,其
QString My_class::My_Method() { QNetworkAccessManager *manager= new QNetworkAccessManager(this);
我是一名优秀的程序员,十分优秀!