Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用QWebkit检索具有特定类的div_Html_Qt_Qt4.7_Qwebkit - Fatal编程技术网

Html 使用QWebkit检索具有特定类的div

Html 使用QWebkit检索具有特定类的div,html,qt,qt4.7,qwebkit,Html,Qt,Qt4.7,Qwebkit,我在下面发布了一个问题,试图使用QDomDocument类。有人建议我改用QWebkit,但我很困惑如何使用QWebkit完成我需要做的事情。我以前从未使用过它,所以我对它不太确定。谁能给点建议吗?谢谢 对于记录,该函数使用一个QByteArray,当转换为文本时,它是一个标准HTML文件 原始问题: 我在一个HTML文件中有几个div,它们具有不同的类,如下所示: <div class='A'>...</div> <div class='B'>...<

我在下面发布了一个问题,试图使用QDomDocument类。有人建议我改用QWebkit,但我很困惑如何使用QWebkit完成我需要做的事情。我以前从未使用过它,所以我对它不太确定。谁能给点建议吗?谢谢 对于记录,该函数使用一个QByteArray,当转换为文本时,它是一个标准HTML文件


原始问题:

我在一个HTML文件中有几个div,它们具有不同的类,如下所示:

<div class='A'>...</div>
<div class='B'>...</div>
<div class='C'>...</div>
。。。
...
...
我有一个Qt(4.7)程序,在这个程序中,我需要能够根据类从中获得特定的div。我需要在这个程序中使用QDomDocument。我从文档中知道,该类有一个函数
elementById()
,但我不能让它与类一起工作,只有id。这不是一个HTML文件或任何东西,所以我无法控制它是类还是id。有没有一种方法可以做到这一点,我没有?谢谢

.pro

QT += webkitwidgets
main.cpp

#include <QApplication>
#include <QDebug>
#include <QWebView>
#include <QWebFrame>
#include <QWebElement>

int main( int argc, char *argv[] ) {
    QApplication a(argc, argv);

    QString l_html( "<html><body>"
                    "<div class='A'>div with class A</div>"
                    "<div class='B'>div with class B</div>"
                    "<div class='C'>div with class C</div>"
                    "<span class='A'>span with class A</span>"
                    "</body></html>" );

    QWebView l_webView; // you can skip the QWebView if you dont want to show any widget
    l_webView.page()->mainFrame()->setHtml( l_html );
    QWebElement l_root( l_webView.page()->mainFrame()->documentElement() );
    QWebElementCollection l_elements( l_root.findAll( ".a" ) );

    foreach ( QWebElement l_e, l_elements ) {
        // do what you want here
    }

    return a.exec();
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[]){
质量保证申请a(argc、argv);
QString l_html(“”)
“A类分区”
“B类分区”
“C类分区”
“与A类的跨度”
"" );
QWebView l_webView;//如果不想显示任何小部件,可以跳过QWebView
l_webView.page()->mainFrame()->setHtml(l_html);
QWebElement l_root(l_webView.page()->mainFrame()->documentElement());
QWebElement集合l_元素(l_root.findAll(“.a”);
foreach(QWebElement l_e,l_elements){
//你想在这里干什么就干什么
}
返回a.exec();
}

谢谢,我试过了,但QWebElementCollection l_元素始终没有返回任何结果:(是否还有另一个关于findAll()的论点可能会更好?@thnkwthprtls我给出的代码有效,只需放置一个
qDebug()哦,好的,这是我做得不正确的部分,我误解了findAll参数的含义,看起来它现在可以工作了。谢谢!