Russian Qt Forum

Qt => Работа с сетью => Тема начата: PavelVX от Июнь 16, 2014, 10:20



Название: QWebView - как определить, что страница загружена?
Отправлено: PavelVX от Июнь 16, 2014, 10:20
Добрый день!
С ходу была простяцкая задача(win, Qt 4.7.4): в прогу встроить подобие браузера.
В примерах нашел фансибраузер. Эксперементирую с вконтакте. :)
Сделал все похожим. Но возникла пару вопросов:
1. Как определить, что страница загружена? Есть сигнал loadFinished(bool). Но даже окно логина вконтакте генерит этот сигнал 3 раза. Т.е. нет четкого критерия загрузки.
2. Начал замечать такую вещь: периодически, походив по ссылкам, при попытке закрытия приложения, оно не закрывается. Т.е. окно исчезает, но если открыть диспетчер задач, то оно в списке процессов! Как-то можно определить что именно его тормозит? В деструктор виджета уже запихал:
Код:
    webView->stop();
    delete webView;
    qDebug() << "stop!";
Сообщение возникает. но приложение не завершается.
Подскажите, куда копать?


Название: Re: QWebView - как определить, что страница загружена?
Отправлено: PavelIgorevich от Сентябрь 12, 2014, 16:08
Все верно - нужно именно подконнектиться к сигналу loadFinished браузера. Про то, что страница генерится 3 раза - это идет от самого контакта - там хитрый JavaScript генерит эту страницу.


Название: Re: QWebView - как определить, что страница загружена?
Отправлено: Bepec от Сентябрь 12, 2014, 16:15
Зафигачить в конструкторе вашей программы
Код:
qApp->setQuitOnLastWindowClosed(true)
. Тогда будут завершаться и потоки.

Определить конец загрузки нереально. loadFinished генерируется при загрузке каждого iframe.