• 2126阅读
  • 10回复

[提问]QNetworkAccessManager 放到线程中---finished信号不触发问题 [复制链接]

上一主题 下一主题
离线ycybx~
 

只看楼主 倒序阅读 楼主  发表于: 2021-07-02
大佬们 QNetworkAccessManager 放到线程中finished信号不触发,但是单独放一个QEventloop 线程会卡在exec 上 我该咋解决这个问题啊 救救孩子吧求求了
离线liulin188

只看该作者 1楼 发表于: 2021-07-02
百度一堆例子
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
离线fsu0413

只看该作者 2楼 发表于: 2021-07-03
这玩意本身就是异步的,不用专门为它开线程
离线ycybx~

只看该作者 3楼 发表于: 2021-07-05
回 fsu0413 的帖子
fsu0413:这玩意本身就是异步的,不用专门为它开线程 (2021-07-03 06:15) 

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

只看该作者 4楼 发表于: 2021-07-05
回 liulin188 的帖子
liulin188:百度一堆例子
 (2021-07-02 23:09) 

百度找了没找到
离线fsu0413

只看该作者 5楼 发表于: 2021-07-05
回 ycybx~ 的帖子
ycybx~:开线程主要是为了对于它要送出的数据进行处理 (2021-07-05 09:50) 

放代码
离线ycybx~

只看该作者 6楼 发表于: 2021-07-05
回 fsu0413 的帖子
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~

只看该作者 7楼 发表于: 2021-07-05
回 ycybx~ 的帖子
ycybx~:void MsgSender::sendChange(const QString& strGbcode, int nValue)
{
    QNetworkRequest request;
....... (2021-07-05 19:10) 

就是轮训5000次这样的处理
离线fsu0413

只看该作者 8楼 发表于: 2021-07-22
回 ycybx~ 的帖子
ycybx~:void MsgSender::sendChange(const QString& strGbcode, int nValue)
{
    QNetworkRequest request;
....... (2021-07-05 19:10) 

这也没线程啊
离线gpf200858

只看该作者 9楼 发表于: 2022-07-15
同问啊,我也被这个东西卡住了,不出调用它的函数,槽就不会被激活!!!
离线feng851

只看该作者 10楼 发表于: 2022-07-15
非常不建议qt中其它线程中开eventloop,只要主线程一个eventloop就好,小心陷入slot函数内出不来
快速回复
限100 字节
 
上一个 下一个