Я пытаюсь предварительно загрузить несколько веб-страниц в серии скрытых QWebFrames
прежде чем я покажу им. Тем не менее, я обнаружил, что setContent
метод для QWebFrame
приводит к тому, что графический интерфейс перестает отвечать на запросы.
Я попытался поместить фактическую сетевую активность в отдельный поток и передать ее QWebFrame
как QByteArray
, но это не помогает, заставляя меня поверить, что именно рисование страницы вызывает ~ 1,5 секунды, очень заметное замедление.
QByteArray data = pReply->readAll(); //get the content from a QNetworkReply
this->page->mainFrame()->setContent(data); //this is the line that causes the problem
Я полностью в замешательстве и не знаю, что попробовать, так как не могу поместить весь веб-фрейм в отдельную ветку.
Кто-нибудь сталкивался с этим раньше и есть предложения?
Обновить
Я профилировал приложение и подтвердил, что корень проблемы — setContent.
Обновление 2
Я профилировал приложение с помощью Intel VTune. Я обнаружил, что QWebKit действительно занимает более 100% процессорного времени. Использование QWebSettings :: handle показалось мне тем, что использует больше всего ресурсов, и я могу подтвердить, что он загружает основной поток.
К сожалению, я не нашел обходного пути для этого. Я выясняю способы маскировки замедления в самом приложении как способ справиться с ситуацией. Если кто-нибудь отправит какие-нибудь лучшие идеи, я приму их ответ.
Других решений пока нет …