我的HTML格式爲QByteArray
,我想解析它。爲什麼QWebFrame忽略了我的HTML的很大一部分?
QWebPage webpage;
webpage.mainFrame()->setContent(html);
QWebElementCollection elements = webpage.mainFrame()->findAllElements("div");
然而,它變成了空,即使HTML有很多<div>
秒。
如果我打印qDebug() << webpage.mainFrame()->toHtml();
所有我看到的是"<html><head></head><body></body></html>"
炭黑在html
有一個不錯的大頁面,與標題,正文,表格和內容。
如果我使用setHtml
而不是setContent
通過將html
轉換爲QString
,我得到了更多,但不多。如果我打印qDebug() << webpage.mainFrame()->toHtml();
,我會看到標題及其內容,但沒有樣式表,但是主體完全被省略。它與"...</head></html>"
我認爲這只是如果我使用'負載發生()'從外部(網絡)資源獲取頁面。如果我等待'loadFinished'信號,它現在可以工作。這一切現在都是有道理的,原來,'setHtml'可能比'setContent'加載了一點點,因爲'QString'的轉換。 – vsz
@vsz我修改了代碼:發出信號,但在exec()有時間運行之前,quit()插槽被同步調用。通過在調用setContent之前連接槽並使用'Qt :: QueuedConnection',槽的調用被延遲,直到循環開始(因此,我不確定是否有一個小的解決方案爲大和'processEvents'中的小內容)。 – alexisdm
對於更大的文件大小,單獨的線程可能是最好的解決方案,但是這個簡單而優雅的解決方案現在可以工作,並且足以完成手頭的任務。感謝您的時間! – vsz