IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

des idées pour faire un bon algorithme


Sujet :

Qt

  1. #1
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut des idées pour faire un bon algorithme
    Salut,
    Svp je veux que vous m'aidez par des idées.
    Dans le constructeur je charge une page web et j'extrais toutes les urls qui existent dans cette page avec un script et le resultat sera stocké dans un vecteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      QUrl url(m_link); 
      connect(&v, SIGNAL(loadProgress(int)), this, SLOT(loadProgress(int)));  
      connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool)));      
      connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(applyscript2())); 
      v.load(url);
      v.show();
    dans le slot applyscript2() j'ai l'evalutaion de mon script et la création du vecteur des urls.
    Ce que je veux est de charger chaque url du vecteur, mais le problème est que lorsqu'il charge la premiere url du vecteur par connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(applyscript2())); le contenu du vecteur est perdu par ce qu' il réexecute applyscript2() (evaluer de nouveux le script et un nouveau vecteur est crée)
    Svp, quelqu'un a une idée sur comment je dois faire pour régler ce probleme?

    Merci d'avance pour tout aide .

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    L'ordre d'appel des slots n'est pas garanti. Si tu as besoin d'un ordre précis d'exécution, il faut que tu introduises un slot qui appellera ces 2 fonctions dans le bon ordre.

  3. #3
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    Salut ,
    merci pour la reponse ,
    le probleme ce n'est pas dans l'ordre d'appele mais c'est lorsque une page web est chargé je vais executer ces fonctions "javascript" si ses fonctions méne a une autre page web alors "applyscript2()" est réexecuté et un autre vecteur est créer pour cette nouvelle page alors je perdre les valeurs de l'ancien vecteur !

    comment je doit faire , vous pouvez m'aider?
    merci pour tout aide ,

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Si j'ai bien compris, tu ouvres une page web, et tu stockes toutes les URLs de cette page dans un vecteur. Ensuite tu parcours ce vecteur et tu refais de même (ouverture de la page stockée au debut du vecteur, stockage des urls de cette page, etc).

    Le problème est donc que tu utilises toujours le même tableau pour stocker les URLs. Il y a donc plusieurs solutions à ce problème.

    Tu pourrais par exemple crée un tableau par URL ouverte, sans oublier de le détruire une fois que tu es arrivé au bout.

    Tu pourrais aussi faire un seul tableau, et quand tu ouvres une nouvelle URL, au lieu de remplacer les précédentes, tu les mets au bout des URLs stockées plus tôt (append).

    Enfin il y a moultes solutions si tu as ce problème, mais j'avoue que je ne suis pas sûr d'avoir compris .

    G.

  5. #5
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    salut ,
    merci pour la reponse ,
    mais ce n'est pas exactement mon probleme je vous explique mieux :
    dans "void Webkit::run()" de mon application j'ai appler le slot applyscript2() comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(applyscript2()));
    ou v est webview qui contient ces deux fonctions javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <script type="text/javascript">
    function page2() {
     
    //var cible = window.prompt("Votre URI souhaitée:","http://www.google.com");
    var a ="http://";
    var b="www.google.com" ;
    window.location.href = a+b ;
     
     }
    </script>
    <script type="text/javascript">
    function page1() {
     
    //var cible = window.prompt("Votre URI souhaitée:","http://www.google.com");
    var a ="http";
    var b="://www.hotmail.com" ;
    window.location.href = a+b ;
     
     }
    </script>
    dans applyscript2() j'ai fait l'evaluation d'un script "onclick.js" qui fait l'extraction des noms de fonction javascript
    dans ce cas c'est page1() et page2()
    puis j'ai evaluer un autre script "ss" qui permet d'executer ces deux fonctions
    le probleme c'est qu'il a executer la premiere c'est la fonction page1() qui méne vere la page google () ;
    puis je veux executer la deuxieme fonction page2() alors j'ai fait v.back(), dans ce cas il va réexecuter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(applyscript2()));
    donc il va refaire l'execution de applyscript2() de 0 (toujour executer que la premiere fonction page1()) , j'ai fait un tableau pour sevegarder les noms de fonctions et j'ai utliser append
    mais toujour il va réexecuter applyscript2() à zéro remplire le tableau à zéro !!
    depuis la semaine passer que je cherche un moyen mais j'ai pas arriver a trouver une bonne solution ?
    vous pouver m'aider ?
    merci d'avance pour tout aide ,

    voila la fonction applyscript2()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    void Webkit::applyscript2()
    {
       QFile file ("exemple/onclick.js");
              if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
                           { qDebug()<< "le fichier n'existe pas " ; return;}
     
                QTextStream out(&file);
                QString output2 = out.readAll();
                file.close();
     
                QWebFrame*  f = v.page()->mainFrame();
     
    	     if (!dataScript) {
    		 dataScript = new ApplyScript();
    		 f->addToJavaScriptWindowObject("linkCssOutput", dataScript);
                            	}
     
                     QVariant vr = f->evaluateJavaScript(output2);
                     fct_script  =dataScript->getLink();
     
                     qDebug()<< "fonction size" <<fct_script.size();
                             QString contenu_fct =fct_script[j];
                             fct_script_global.append(fct_script[j]);  
                             QString ss=QString("var f='window.addEventListener(\"load\",'+%1+', false);';"
                             "var ff='window.attachEvent(\"onload\",%1);';"
                             " if (window.addEventListener) {"
                             "eval(f);"
                             "} else if (document.addEventListener) { "
                             "eval(f);"
                             "} else if (window.attachEvent) {"
                             "eval(ff);"
                             "}").arg(contenu_fct);
     
                              QVariant vrr = f->evaluateJavaScript(ss);
     
                       if (j< fct_script.size()) j++;
     
     
    }

Discussions similaires

  1. des idées pour faire 1 app sur windows phone 7
    Par dj-az dans le forum Windows Phone
    Réponses: 2
    Dernier message: 14/02/2012, 18h10
  2. parcourir des tableaux pour faire des copies/renommages de fichiers
    Par Paloma dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 31/10/2006, 09h09
  3. D'autres idées pour faire la même chose ?
    Par Gromitou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/05/2006, 12h15
  4. Des idées pour une confrontation de langages ?
    Par Madmac dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 30/04/2006, 01h14
  5. Linker un .o avec des archives pour faire un exe
    Par vdumont dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 22h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo