查看完整版本: [-- QNetworkAccessManager 放到线程中---finished信号不触发问题 --]

QTCN开发网 -> Qt基础编程 -> QNetworkAccessManager 放到线程中---finished信号不触发问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

ycybx~ 2021-07-02 15:26

QNetworkAccessManager 放到线程中---finished信号不触发问题

大佬们 QNetworkAccessManager 放到线程中finished信号不触发,但是单独放一个QEventloop 线程会卡在exec 上 我该咋解决这个问题啊 救救孩子吧求求了

liulin188 2021-07-02 23:09
百度一堆例子

fsu0413 2021-07-03 06:15
这玩意本身就是异步的,不用专门为它开线程

ycybx~ 2021-07-05 09:50
fsu0413:这玩意本身就是异步的,不用专门为它开线程 (2021-07-03 06:15) 

开线程主要是为了对于它要送出的数据进行处理

ycybx~ 2021-07-05 09:51
liulin188:百度一堆例子
 (2021-07-02 23:09) 

百度找了没找到

fsu0413 2021-07-05 16:19
ycybx~:开线程主要是为了对于它要送出的数据进行处理 (2021-07-05 09:50) 

放代码

ycybx~ 2021-07-05 19:10
fsu0413:放代码 (2021-07-05 16:19) 

void MsgSender::sendChange(const QString& strGbcode, int nValue)
{
    QNetworkRequest request;


    if (m_strIP.isEmpty() || m_strPort.isEmpty())
    {
        return;
    }

    QByteArray postData;
    request.setUrl(QUrl("http://" + m_strIP + ":" + m_strPort + "/VideoAnalysis/Subscribe/change?"));
    QString strGbCoede1, strValue, strIp, strPort;

    strGbCoede1 = "gb_code=" + strGbcode + "&";
    strValue = "value=" + QString::number(nValue) + "&";
    strIp = "ip=" + QString("192.168.1.86") + "&";
    strPort = "port=" + QString("20001");

    postData.append(strGbCoede1);
    postData.append(strValue);
    postData.append(strIp);
    postData.append(strPort);
    QNetworkReply* pReplay = m_pManager->post(request, postData);

    QEventLoop eventloop;
    QMetaObject::Connection conRet = QObject::connect(pReplay, &QNetworkReply::finished, &eventloop, &QEventLoop::quit);
     eventloop.exec();

    emit pReplay->finished();
    
    pReplay->abort();
    pReplay->close();
    pReplay->deleteLater();

ycybx~ 2021-07-05 19:10
ycybx~:void MsgSender::sendChange(const QString& strGbcode, int nValue)
{
    QNetworkRequest request;
....... (2021-07-05 19:10) 

就是轮训5000次这样的处理

fsu0413 2021-07-22 08:06
ycybx~:void MsgSender::sendChange(const QString& strGbcode, int nValue)
{
    QNetworkRequest request;
....... (2021-07-05 19:10) 

这也没线程啊

gpf200858 2022-07-15 09:31
同问啊,我也被这个东西卡住了,不出调用它的函数,槽就不会被激活!!!

feng851 2022-07-15 11:49
非常不建议qt中其它线程中开eventloop,只要主线程一个eventloop就好,小心陷入slot函数内出不来


查看完整版本: [-- QNetworkAccessManager 放到线程中---finished信号不触发问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled