QWebView load报多次loadFinished信号问题!

构造函数中:
    webView = new QWebView();
    connect(webView,SIGNAL(loadFinished(bool)),this,SLOT(loadOver(bool)));
    webView->load(QUrl(url));


槽函数:
PageScan::loadOver(bool tmp)
{
        info = "";
        qDebug() << "\n======================================="<<tmp<<sender()<<"\n"<< url ;//信号来源 参数
        QWebElementCollection list = webView->page()->mainFrame()->findAllElements("table");// 筛选 标签 1
        if(list.count() != 0){
            _RightLoad = true;
        }
        for(int i = 0; i < list.count(); i++){
              QWebElementCollection sublist = list.at(i).findAll("a");// 筛选 标签 2
              for(int j=0; j<sublist.count(); j++){
                  QWebElement e;
                  e = sublist.at(j);
                  info = e.attribute("href", "");//制定 超链接 标签"href"
              }
            emit pUrlChange(info);//发送获取超链接
        }
        if(list.count() != 0)
            emit pScanEnd();
}


发现有些页面出现load触发最多2次loadFinished信号, 
经过更改第筛选标签为"*"并打印个数演调试
qDebug() << "elements count : " << list.count() << endl;


发现网页确实缺触发了2次槽,而第一次触发的槽:
======================================= true QWebView(0x275dbb48)
"http://www.XXXX.XXX"
elements count : 6 //仅有6个元素
"" -- ""
"生活信息搜索结果-XX网" -- ""
"" -- "../template/default/skin/theme/theme1.css" //包含2个href
"" -- "../template/default/skin/search062201.css"
"" -- "" 
======>pageOver: PageScan(0x275d8f88)  //外部析构显示


而正常触发的槽:
======================================= true QWebView(0x275ec2a0)
"http://www.xxx.xxx"
elements count : 335 //应有335 个元素
"" -- ""
"生活信息搜索结果-xxx网" -- ""
"" -- "../template/default/skin/theme/theme1.css"
"" -- "../template/default/skin/search062201.css"
"" -- ""
"" -- ""
"" -- ""
"" -- ""
"" -- ""
"" -- "http://xxxxxcss/bdsstyle.css?cdnversion=20130704"
"html #hm_t_7528.hm-t-container, html #hm_t_7528.hm-t-c..................


不知道QWebView把什么当成一个页面LOAD完成了 (该页面仅有6个元素,包含2个css,其他为控制) 求网页高手指教
然后QWebView又正常的load完 应该load的页面 再次触发loadFinished, 
实在没办法就用了一个bool再槽函数做判断,目的就是: 第一次正常 第2次槽就不处理
筛选标签 还原成原来的 不再用通配符*
在槽函数中 第一个筛选标签加个数判断 改变新增bool成员:


       
if(!_RightLoad){
info = "";
QWebElementCollection list = webView->page()->mainFrame()->findAllElements("table");
if(list.count() != 0){
            _RightLoad = true;
        }
//处理部分
.......

if(list.count() != 0)
emit pScanEnd();//发结束信号  (一发就在上层删对象调this析构)
}

你可能感兴趣的:(QWebView load报多次loadFinished信号问题!)