2010-05-02 5 views
2

Je suis nouveau à QT et j'ai essayé de créer un navigateur de test. Ce que j'essaie de faire maintenant, c'est de gérer les requêtes popup basées sur js. Après avoir lu la documentation QT, j'ai appris que je devais ré-implémenter la méthode QWebView :: createWindow pour faire exactement cela.Dans QT 4.6 w/Webkit: Comment gérer les requêtes de fenêtres popup (WebView :: createWindow)?

Maintenant, j'ai ré-implémenté cette méthode, mais il semble ne pas être appelée lorsque j'essaie de cliquer sur un lien qui déclenche une fenêtre contextuelle.

Quelqu'un peut-il m'aider? Ai-je besoin de sous-classer les classes WebView et WebPage? Si oui, comment je fais ça? Je suis assez nouveau à QT et j'ai fait des tonnes de recherches et n'ai rien trouvé.

Merci d'avance pour tout conseil et astuces!

Répondre

4

Avez-vous pensé à définir les options suivantes?

view->settings()->setAttribute(QWebSettings::JavascriptEnabled, true); 
view->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); 

Et ne pas oublier d'appeler la méthode createWindow() de la classe parent. La documentation a une note sur ce point:

Note: Si la méthode createWindow() de la page associée est réimplémentée, cette méthode est appelée, à moins que fait explicitement dans le reimplementation.

+0

@duncan, Un grand merci pour votre aide! Je suis sûr que le JavaScript est activé, puisque tous les autres appels js fonctionnent parfaitement bien. J'ai essayé d'utiliser l'appel setAttribute pour permettre à JavascriptCanOpenWindows, mais je rencontre ce message d'erreur: pas de fonction concordante pour appel à QWidget :: setAttribute ... J'utilisais ce code: myWebView-> Page() -> view() -> setAttribute (QWebSettings :: JavascriptCanOpenWindows, true); Est-ce incorrect? Je crois que c'est une question extrêmement noob, et merci encore pour toute idée! –

0

de Nevermind ma deuxième question (dans la zone de commentaire), voici ce que je l'ai fait pour saisir la nouvelle demande de fenêtre (un grand merci à la pointe de Duncan!):

page()->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); 

Cela a été utilisé à l'intérieur du processus d'initiation de la classe WebView personnalisée.

Espérons que cela peut être utile à quelqu'un. Merci!

+1

vous auriez dû accepter la réponse de Duncan! – andrean

Questions connexes