У меня есть приложение, которое требует использования QWebView::setContent()
для загрузки HTML содержимое в QWebView. Все это происходит на встроенном устройстве с процессором ARMv5 (думаю, 400 МГц). В большинстве случаев я могу загрузить страницу за разумное время (до 5 секунд), однако иногда у меня есть контент, который загружается долго (~ 30 секунд для 300 КБ контента).
Проблема в том, что вызов setContent
блокирует основной поток. Мне нужно иметь возможность обрабатывать события во время загрузки и, возможно, даже отменить загрузку, если пользователь решит больше не ждать.
Я думал о том, чтобы запустить вызов setContent
в другом потоке, чтобы он не блокировал обработку события, и я мог отменить его, если это необходимо. Однако я получаю ужасные "виджеты должны быть созданы в потоке GUI ", и я не вижу способа легко решить эту проблему.
Можно ли запустить QWebView::setContent
в отдельном потоке? Если да, то как? Если нет, можно ли обрабатывать события графического интерфейса во время работы setContent
? Можно ли «отменить» вызов setContent
?
ИЗМЕНИТЬ
Чтобы уточнить, что меня действительно интересует, так это то, как остановить вызов setContent
и/или обработать сообщения графического интерфейса, чтобы интерфейс оставался отзывчивым при больших объемах данных, передаваемых с использованием setContent
.
ИЗМЕНИТЬ 2
Чтобы еще больше уточнить, я имею дело с длинным статическим контентом, то есть без JavaScript, просто с большим количеством статического HTML, который пользователь хочет прокручивать, даже когда он загружает больше контента. Основная идея состоит в том, чтобы позволить ей/ему переходить на страницу вниз, даже если страница загружена не полностью.
setContent
, из-за чего графический интерфейс mu перестает отвечать на запросы. Хотя QWebView выполняет загрузку в фоновом режиме, это касается только второстепенных ресурсов, таких как изображения, таблицы стилей, а не основного содержимого. Больше всего меня беспокоит основное текстовое наполнение. - person Michal Kottman   schedule 06.05.2012