- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
QString My_class::My_Method()
{
QNetworkAccessManager *manager= new QNetworkAccessManager(this);
connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(ReplayFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl(My_URL)));
return str;
}
void My_class::ReplayFinished(QNetworkReply *replay)
{
QString buffer;
if(replay->isOpen())
{
buffer=replay->readAll();
//treatment on the buffer and the public Qstring 'str'(declared in My_class.h) is updated
}
}
你好,问题是当在 main 中调用 My_method() 时,QString str
是空的,因为它是在没有等待 ReplayFinished 更新它的情况下以这种方式返回的。等待工作完成的解决方案是什么,这样我就可以获得正确的信息,而不是跳过它并返回其他东西。谢谢。
最佳答案
您可以使用事件循环等待回复完成,然后读取可用字节并返回字符串:
QString My_class::My_Method()
{
QNetworkAccessManager manager;
QNetworkReply *reply = manager.get(QNetworkRequest(QUrl(My_URL)));
QEventLoop loop;
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), &loop, SLOT(quit()));
loop.exec();
QByteArray bts = reply->readAll();
QString str(bts);
delete reply;
return str;
}
关于c++ - QNetworkAccessManager 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24285021/
这是我的文件。我对此有一些疑问。 // 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);
我是一名优秀的程序员,十分优秀!