2012-11-02 10 views
5

Dalla mia applicazione Qt, vorrei aprire gli URL ripetutamente nella stessa scheda/finestra del browser. (Tipo di "rinfrescante" di questa scheda di programmazione)Aprire un URL in una determinata scheda/finestra del browser

Utilizzando

QDesktopServices::openUrl(QUrl("http://www.domain.tld")); 

si apre una nuova scheda/finestra per ogni chiamata. C'è la possibilità di aggiungere un parametro "target =" da qualche parte?

+0

Hi Elwood, hai mai trovato una soluzione a questo? Ho esattamente lo stesso problema: http://stackoverflow.com/questions/15116760/open-a-web-page-from-a-desktop-app-repeatedly-in-same-window – sipi

+0

Sipickles: Siamo spiacenti, no. Sembra che non sia possibile. Stavo pensando di creare un file HTML locale con '' al suo interno e quindi sovrascrivendo questo file su richiesta. Ma non l'ho ancora provato e questo approccio ha probabilmente alcuni aspetti negativi. – Elwood

+0

Sto cercando la stessa cosa (aperto nella stessa scheda) ma preferibilmente in Qt5. Ma vorrei anche prendere una soluzione Qt4. – amenthes

risposta

2

Quello che stai chiedendo è impossibile da fare nel modo in cui lo immagini. openUrl() utilizza il sistema operativo per specificare il programma per aprire l'argomento come indicato nella relativa documentazione.

Potrebbe esserci qualche soluzione alternativa, ma nessuna funzionerà bene o funzionerà su tutti i browser. È solo che questo tipo di controllo a grana fine è probabilmente impossibile per te.

Se si desidera il controllo di una scheda in un browser, è possibile trovare la finestra rappresentata da tale scheda e chiuderla prima di aprire quella nuova. Questa soluzione è un po 'hacky.

Un'altra soluzione hacky consiste nel trovare l'HWND della casella di modifica che contiene l'URL e provare a cambiare il testo utilizzando SendMessage(). Ciò non funzionerà su Chrome, tuttavia, poiché non utilizza un controllo separato per la finestra URL. Potrebbe funzionare su Firefox o IE.

La soluzione migliore è quella di creare il proprio browser Web che controlli utilizzando Qt WebKit. È piuttosto semplice eseguire il rendering di una pagina e modificare l'URL visualizzato. QWebView è un'implementazione facile da usare di QtWebKit.

+0

Grazie phyatt. Preferirei non voler duplicare la funzionalità del browser esistente inserendo QtWebKit. – Elwood

0

forse vi ha trovato questo utile:

è possibile aprire la pagina web e la ricaricare la scheda attiva.

Se si fornisce il nome del browser come argomento, sarà trovare e ricaricare la pagina corrente

https://unix.stackexchange.com/questions/37258/refresh-reload-active-browser-tab-from-command-line

+0

è un take interessante, ma non proprio quello che avevo in mente. Per prima cosa, dipende da 'xdotool', quindi non è disponibile su tutte le piattaforme. – amenthes