[Resolvido] Requisições no QWebView
-
No Google Chrome (Firefox e IE funcionam igual ao Chrome) quando ocorre um erro em uma requisição, ele tenta uma nova requisição, veja o LOG do wireshark:
!http://i.stack.imgur.com/qy0jL.png(wireshark log)!
No WebInspector aparece apenas uma requisição, em outras palavras: parece um sistema de prevenção contra perda de conexão na requisição (provavelmente deve ter um numero de tentativas ou por tempo).
Estou desenvolvendo um navegador completo em QT e ao realizar testes de falhas, como o exemplo do Chrome acima, eu percebi que o "QWebView" não trabalha igual ao Google Chrome.
Eu gostaria de fazer o meu navegador funcionar igual aos navegadores convencionais, como faço para reimplementar QNetWorkRequest/QNetWorkAccessManager para que funcione tal como Chrome, Firefox, InternetExplorer?
Por favor me ajude.
@myWebPage *myWP = new myWebPage();
myWP->setForwardUnsupportedContent(true);
myWP->setNetworkAccessManager(m_network);
ui->myWebView->setPage(myWP);if(q!=true) {
settings = QWebSettings::globalSettings();settings->setAttribute( QWebSettings::OfflineWebApplicationCacheEnabled,true ); settings->setAttribute( QWebSettings::LocalContentCanAccessRemoteUrls,true ); settings->setAttribute( QWebSettings::OfflineStorageDatabaseEnabled,true ); settings->setAttribute( QWebSettings::LocalContentCanAccessFileUrls,true ); settings->setAttribute( QWebSettings::LocalStorageEnabled,true ); settings->setAttribute( QWebSettings::JavascriptCanOpenWindows,true ); settings->setAttribute( QWebSettings::JavascriptCanCloseWindows,true ); settings->setAttribute( QWebSettings::JavascriptEnabled,true ); settings->setAttribute( QWebSettings::PluginsEnabled,true ); settings->setAttribute( QWebSettings::JavaEnabled,false );//Desabilita java settings->setAttribute( QWebSettings::DeveloperExtrasEnabled,true ); settings->setAttribute( QWebSettings::AutoLoadImages, true ); settings->setAttribute( QWebSettings::DnsPrefetchEnabled, true ); settings->setAttribute( QWebSettings::LocalStorageDatabaseEnabled, true ); settings->setAttribute( QWebSettings::AcceleratedCompositingEnabled, true ); settings->setAttribute( QWebSettings::JavascriptCanAccessClipboard, false ); settings->setAttribute( QWebSettings::ScrollAnimatorEnabled, true ); settings->setAttribute( QWebSettings::PrintElementBackgrounds, false ); settings->setOfflineWebApplicationCachePath( QString(localStorage+"/appcache") ); settings->enablePersistentStorage( QString(localStorage+"/persistent") ); settings->setOfflineStoragePath( QString(localStorage+"/offlinestorage") ); settings->setLocalStoragePath( QString(localStorage+"/storage") ); settings->setIconDatabasePath( QString(localStorage+"/icons") ); settings->setMaximumPagesInCache( 99999 ); settings->setObjectCacheCapacities( 0,99999,99999 ); settings->setOfflineWebApplicationCacheQuota( 5*1024*1024 ); settings->setOfflineStorageDefaultQuota( 5*1024*1024 );
}
connect(ui->myWebView->page(), SIGNAL(downloadRequested(QNetworkRequest)), this, SLOT(Download(QNetworkRequest)));
connect(ui->myWebView->page(), SIGNAL(unsupportedContent(QNetworkReply*)), this, SLOT(unsupportedToDownload(QNetworkReply*)));
connect(ui->myWebView->page(), SIGNAL(printRequested(QWebFrame*)), this, SLOT(printFrame(QWebFrame*)));@ -
Nao sei se vai ajudar... eu tava olhando a documentaçao e vi que o QWebView tem um metodo chamado page() que retorna qwebpage(), e na classe QWebpage tem outro metodo que retorna um NetworkAccessManager que gerencia a conexao da pagina....
voce pode criar uma classe, que herda de um qwebview, nela vc vai reimplementar o que quizer...
acredito que vc ja deva ter feito muito codigo, entao voce pode promover a classe QWebView do seu codigo pela classe nova...
La no modo design clicando com o botao direito no qwebview tem um opçao chamada "promote to...", tente usar ela para promover...
Na classe que foi herda de de um QWebView voce verifica se o qwebview emitiu um signal de loadStarted() e pega a page que esta sendo carregada e cria uma thread para ficar fazendo o que vc quer...
-
Sevc souber, voce sabe como que faz para o qwebview carregar uma pagina que usa o flash player?
-
Solução http://stackoverflow.com/a/17915208/1518921
bq. Off-topic: Rodrigocg no Windows acredito que basta
@QWebSettings::globalSettings()->setAttribute( QWebSettings::PluginsEnabled, true);@
e ter o plugin do flash instalado (plugin do Mozilla e Safari).