Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt] Utiliser QtWebKit au lieu de QtWebEngine

    25 août 2021 à 2:25:58

    ([25/08/2021] MISE À JOUR : il y a un problème avec la version Windows, voir en fin de message.)


    (En partie en réaction à ce sujet ancien, car c’est un point qui me concerne et encore une découverte que je n’ai pas trouvée dans le forum et qui me paraît valoir le coup !)

    Bonjour,

    Comme vous le savez peut-être, la partie du cours de C++ concernant Qt comporte un chapitre TP navigateur Web malheureusement obsolète, car se référant à WebKit, qui a été abandonné au profit de WebEngine ; or, contrairement au premier, le second ne fonctionne pas avec le compilateur MinGW, mais qu’avec le compilateur MSVC, ce qui oblige en principe à installer Visual Studio.

    Ne souhaitant moi-même pas installer ce dernier*, j’ai cherché et trouvé une solution viable pour rester avec le compilateur MinGW (ce qui pourrait peut-être par exemple régler le problème de l’auteur du sujet précité, comme sa capture ne montre que le compilateur MinGW de détecté) : les pages suivantes proposent de faire (re)fonctionner Qt WebKit ! (Grâce au travail de Konstantin Tokarev, apparemment.)

    1) « Building QtWebKit on Linux » :
    https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Linux

    2) « Building QtWebKit on macOS » :
    https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-macOS

    3) « Building QtWebKit on Windows » :
    https://github.com/qtwebkit/qtwebkit/wiki/Building-QtWebKit-on-Windows

    Deuxième point, en réaction à ce commentaire (toujours dans le sujet précité) :


    gbdivers a écrit:

    Et laisse tomber ce TP, le code avec QWebEngine sera trop different du webkit, tu va galerer pour rien.

    Je viens de découvrir une page de la documentation consacrée à expliquer comment adapter le code utilisant Qt WebKit pour Qt WebEngine ; à première vue, ce n’est ni si différent, ni compliqué.

    « Porting from Qt WebKit to Qt WebEngine » :
    https://doc.qt.io/qt-5/qtwebenginewidgets-qtwebkitportingguide.html

    La mise en pratique étant fondamentale dans l’apprentissage, je trouverais dommage de remiser ce TP au placard, et je pense que les deux pages fournies ci-dessus peuvent aider à le réhabiliter ! :magicien:
    (Je pense que ces informations méritent de figurer dans un sujet propre sur le forum, comme pas mal de gens semblent régulièrement se retrouver le bec dans l’eau en suivant le cours.)

    En espérant avoir rendu service ! (Moi, cela m’aurait fait gagner un peu de temps !)


    * De manière un peu analogue (mais hors sujet, car langage C#), pour ceux que cela intéresse, me penchant ces temps-ci sur MonoGame, j’ai d’ailleurs eu la bonne surprise de découvrir qu’il n’est en fait possible que depuis récemment (2020, je crois) de se passer de Visual Studio pour ledit MonoGame et d’utiliser un peu la ligne de commande pour le contourner. Ce que j’ai fait. :)


    [25/08/2021] MISE À JOUR : j’ai testé aujourd’hui même la marche à suivre pour compiler Qt WebKit sous Windows, et malheureusement, il s’avère qu’une erreur survient au moment de compiler Qt WebKit, car le site Bintray qui hébergeait un paquet nécessaire (ICU-65.1) a tout récemment fermé, le 1er mai 2021…
    https://github.com/qtwebkit/qtwebkit/issues/1059#issuecomment-818760699
    Cela dit, le développeur était actif assez récemment (dernières modifications il y a quatre mois ; possible pause actuellement), donc il réglera peut-être ce problème.

    En attendant : je testerai peut-être la version Linux pour compiler Qt WebKit, mais je ne promets rien ; si quelqu’un est motivé pour le faire ou/et pour tester la version macOS, n’hésitez pas à le faire savoir ici !

    -
    Edité par Arthur Rorschach 25 août 2021 à 23:00:32

    • Partager sur Facebook
    • Partager sur Twitter
      25 août 2021 à 3:48:01

      Arthur Rorschach a écrit:

      La mise en pratique étant fondamentale dans l’apprentissage, je trouverais dommage de remiser ce TP au placard

      Je ne peux être que d'accord sur l'importance de mettre en pratique ce que l'on apprend. Mais la question est quelle est l'intérêt d'apprendre un outil obsolète ?

      Et compiler QtWebKit, en installant toutes les dépendances, puis adapter le code, n'est pas du tout trivial. Surtout pour des débutants en C++. Est-ce que tu as compilé toi même QtWebKit ? Ca t'a pris combien de temps ?

      A mon sens, c'est juste une perte de temps, si on prend en compte le bénéfice pour l'apprentissage et le temps perdu a compiler QtWebkit.

      Mais libre a chacun de s'amuser comme il le veut.

      • Partager sur Facebook
      • Partager sur Twitter
        25 août 2021 à 22:40:05

        (En plus de ma réponse, je vais mettre incessamment à jour mon message plus haut, car j’ai justement testé aujourd’hui, et il y a une mauvaise nouvelle technique, mais qui sera peut-être réglée dans l’avenir proche.)

        gbdivers a écrit:

        Mais la question est quelle est l'intérêt d'apprendre un outil obsolète ?

        Alors, trois choses :

        1) Pour ceux sans Visual Studio, c’est une solution de rechange (dans l’attente d’une éventuelle prise en charge de MinGW par Qt WebEngine) ; à titre d’exemple, lors de mes recherches, je suis tombé sur une telle demande.

        I vote also for a complete support of MinGW for the whole Qt framework.

        We cross compile a huge Qt Application under Linux for the Windows platform and it work very well. About the non compatibility of QtWebEngine with Mingw, we need to support QtWebKit in parallel. This is not very clean.

        2) Selon la page documentation que j’ai mentionnée au sujet de passer de Qt WebKit à Qt WebEngine, il s’avère que Qt WebEngine ne présente pas que des avantages par rapport à Qt WebKit :
        « This, among other things, allows Qt WebEngine to provide better and more reliable support for the latest HTML5 specification than Qt WebKit. However, Qt WebEngine is thus also heavier than Qt WebKit and does not provide direct access to the network stack and the HTML document through C++ APIs. »
        https://doc.qt.io/qt-5/qtwebenginewidgets-qtwebkitportingguide.html
        Par conséquent, la comparaison entre les deux n’est pas univoque. Personnellement, je suis d’avis que quand une nouvelle version présente des désavantages non négligeables, on laisse le choix d’utiliser l’ancienne ou la nouvelle (c’est d’ailleurs une pratique courante).
        Ce désavantage est peut-être négligeable ? Je ne sais pas, je ne suis pas spécialiste, mais tu as peut-être une réponse à cette question.

        3) Le fait que la différence de code entre les deux outils soit faible ne rend pas inutile l’apprentissage effectué avec Qt WebKit, puisque la transposition est tout à fait faisable : qui sait utiliser Qt WebKit saura utiliser Qt WebEngine. (Une comparaison de la part de ceux qui ont pratiqué les deux serait bienvenue pour confirmer, mon point de vue n’étant certes fondé que sur ce que Qt dit officiellement, cf. toujours la même page.) Ceux qui ne veulent ou ne peuvent pas utiliser Qt WebEngine à un temps t pourront donc toujours réinvestir leurs connaissances si besoin.

        gbdivers a écrit:

        Et compiler QtWebKit, en installant toutes les dépendances, puis adapter le code, n'est pas du tout trivial. Surtout pour des débutants en C++. Est-ce que tu as compilé toi même QtWebKit ? Ca t'a pris combien de temps ?

        Alors, justement, j’ai suivi la procédure aujourd’hui : au niveau de la simplicité, je trouve les indications claires, les commandes étant données explicitement. (Je me rends compte que tu parles peut-être de la version Linux, qui demande plus d’actions que les versions macOS et Windows ; cependant, là aussi, je trouve la page explicite.)
        MAIS un fâcheux événement (à savoir, la fermeture du site Bintray récemment, en mai 2021… Cf. mise à jour à venir de mon message initial) m’a empêché d’aller jusqu’au bout, donc je ne peux témoigner de la durée de compilation. Si quelqu’un sait, il est le bienvenu.

        Cela dit, je tenterai peut-être de voir si la version Linux fonctionne. J’aimerais vraiment avoir une version de dépannage fonctionnelle. (Et puis bidouiller est formateur. :))

        gbdivers a écrit:

        A mon sens, c'est juste une perte de temps, si on prend en compte le bénéfice pour l'apprentissage et le temps perdu a compiler QtWebkit.

        Je trouve cela discutable.

        Pour l’apprentissage : encore une fois, le code semble sensiblement proche. Cela dit, tu affirmais dans ton commentaire que je citais que la différence était telle que le TP en deviendrait horrible (avec Qt WebEngine) ; pourrais-tu expliquer en quoi ? J’ai l’impression que non, mais je veux bien un complément d’information par rapport à ce qu’en dit la documentation.


        Pour le temps de préparation : je ne suis pas sûr que compiler QtWebKit soit plus long que d’installer Visual Studio (qui est un gros morceau, « une bonne heure d’installation » — pour la version légère ? —, si j’en crois ce que j’ai entendu) ; si quelqu’un a pu tester pour les deux, ce serait bien d’avoir une comparaison.

        • Partager sur Facebook
        • Partager sur Twitter

        [Qt] Utiliser QtWebKit au lieu de QtWebEngine

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown