zoukankan      html  css  js  c++  java
  • Qt程序运行时出现Error

    ####### Qt程序在运行时出现了上述错误,并且我的程序出现了数据错乱的情况,百度后说是因为内存原因,段错误,仔细查看了自己的代码并没有发现 指针变量未初始化的情况。
    ####### 通过调试得出原因:QNetworkManager类,在使用时,可能在同一时间段内QNetworkRequestattribute被两个对象同时设定和使用,导致出现数据错乱,数据无法正常取出的情况!
    ####### 解决办法: 重新建立QNetworkManager分别针对不同的对象,这样它们attribute的使用区域不会重叠
    我编写这个函数的部分代码如下:

       // 请求开始
    void Request::get(void *attribute, QUrl url)
    {
        QNetworkRequest request(url);
        request.setAttribute(QNetworkRequest::Attribute(QNetworkRequest::User + 1), QVariant::fromValue(attribute));
        this->get(request);
    }
    
        // 请求完成
        QVariant attribute = request.attribute(QNetworkRequest::Attribute(QNetworkRequest::User + 1));
        if(attribute.isNull())
        {
            emit dataRequested(receivedData);
        }
        else
        {
            void * attributePointer = attribute.value<void *>();
            emit dataRequested(attributePointer, receivedData);
        }
    
     // 出错位置 
        // attribute首先在这里被占用
        void *widgetAttribute = (void *)homeMovieItem;
        this->homeImgRequest->get(widgetAttribute, QUrl(homeItem->imgPath));
        connect(this->imgRequest, SIGNAL(dataRequested(void*,QByteArray)), this, SLOT(onReceivedItemImg(void*,QByteArray)));
        // 这里attribute再次被占用
        void *widgetAttribute = (void *)actressWidgetItem;
        this->actressImgRequest->get(widgetAttribute, QUrl(actressItem->imgPath));
        connect(this->imgRequest, SIGNAL(dataRequested(void*,QByteArray)), this, SLOT(onReceivedActressImg(void*,QByteArray)));
    
  • 相关阅读:
    js点击按钮为元素随机字体颜色和背景色
    js随即数字random实现div点击更换背景色
    while循环计算1-100和,1-100内偶数/奇数/被整除的数的和
    慕课手机展示页案例
    第3题:求子数组的最大和
    第4题:在二叉树中找出和为某一值的所有路径
    第5题:查找最小的K个元素
    Linux系统开启IPv6任播(anycast)地址
    第7题:判断两个链表是否相交
    第8题上:思维题
  • 原文地址:https://www.cnblogs.com/During/p/12380200.html
Copyright © 2011-2022 走看看