Partage
  • Partager sur Facebook
  • Partager sur Twitter

Développement avec Qt

Le module QtWebEngine

Anonyme
    14 septembre 2022 à 8:59:11

    Bonjour à tous, ça fait des mois que je cherche à utiliser le module QtWebEngine avec Qt 6 mais j'ai toujours des problèmes pour la compilation.

    Voici les détails de ma configuration :

    Lors de l'installation j'ai bien coché la case librairie pour télécharger tout les modules mais après quand j'ai fais 

    QT += webenginewidgets  il y a un message d'erreur Module not found. Alors avec Qt je suis allé installer le compilateur MVSC mais on ne me proposer tjr pas le compilateur lors de la création du projet mais dans les outils ->kit 

    le compilateur s'affichait avec un point jaune, 

    j'ai vu une aide sur le forum disant qu'il fallait installer les compilateur avec MV studio installer je l'ai fait en choisissant développement Desktop avec c++ ... j'ai bien coché le compilateur une fois terminé j'ai retourne dans Qt et là lors de la création du projet on me propose d'utiliser Mingw ou MVSC et j'ai fait QT + =  webenginewidgets et il n'y avait pas d'erreur mais quand je veux maintenant compiler même un simple programme on me sort un message cstddef not found   mais le pire lorsque j'utilise vidual studio code je compile le programme sans problème.

    Aidé moi s'il vous plaît, il y a-t-ils des fichiers à copier dans Qt pour résoudre les programmes ? ça fait longtemps que je suis coincé là, merci d'avance pour votre compréhension 

    -
    Edité par Anonyme 14 septembre 2022 à 9:31:51

    • Partager sur Facebook
    • Partager sur Twitter
      14 septembre 2022 à 12:46:14

      Salut,

      Nharcisse a écrit:

      Bonjour à tous, ça fait des mois que je cherche à utiliser le module QtWebEngine avec Qt 6 mais j'ai toujours des problèmes pour la compilation.

      Ca fait pres de dix ans que le module QWebEngine ne fonctionne plus qu'avec le compilateur de microsoft. 

      Pour le reste, il faut savoir que Qt est une bibliothèque C++ et que, contrairement au C, l'ABI (faisons simple: la manière dont les bibliothèques sont reliées au programme) n'est absolument pas standardisée.

      Cela implique, entre autres, que tu dois vraiment être attentif,  lorsque tu choisi une bibliothèque qui a déjà été compilée, de choisir -- bien sur -- la version qui correspond à ton architecture (32 ou 64 bits), mais aussi celle qui a été compilée avec la version du compilateur que tu envisages d'utiliser.  Exactement le même compilateur et la même version.

      Si tu prends une bibliothèque qui n'a pas été compilée avec la version du compilateur que tu comptes utiliser, on ne peut absolument pas garantir que tout fonctonnera.  Même si la seule différence est que tu envisages d'utiliser le compilateur machin dans sa version X.Y avec la bibliothèque compilée avec le compilteur machin, mais dans sa version X+1.

      Tout simplement parce que l'on ne peut pas garantir que la version X+1 du compilateur produira exactement le même code binaire exécutable (les instructions qui pourront être comprises par le processeur) que sa version X.Y.

      Ainsi, sous windows, Qt 6 disponible dans une version compilée avec la version 2019 du compilateur de Microsoft et dans une version compilée avec la version 11.2 de Gcc (MinGw).

      Il ne sert donc à rien d'aller chercher VisualStudio 2022 ou MinGW 12 (bien qu'il existe), car Qt 6.2 ne peut -- telle qu'elle a été compilée -- a priori pas fonctionner avec ces compilateurs.

      Par contre, si tu as du temps à perdre, tu devrais pouvoir compiler l'intégralité de Qt à partir des sources avec le compilateur de ton choix (comme celui de VisualStudio 2022) .   Il faut juste savoir que cela te prendra sans doute une journée entière, et encore, à condition de savoir un minimum comment le faire:P

      EDIT: il faut, enfin, savoir que QMake (le système "d'origine" de configuration des projets Qt) a été progressivement abandonné alors que Qt n'en était qu'à sa version 5, et que le système "officiel" de configuration de projet est désormais (pour les versions 6) CMake.

      En conclusion:

      Je ne sais pas quel tutoriel tu es occupé à suivre, bien que je subodore que ce soit celui de ce site, mais il faut l'abandonner au plus vite, car il n'est absolument pas à jour (et il y a tant à dire sur le tutoriel du site que je préfère ne pas me lancer dans l'aventure aujourd'hui ;) )

      Pour installer correctement Qt sous windows, ou bien il faut que tu aies une installation correcte de Visual Studio 2019 (PAS une version plus récente pour l'instant), ou bien, tu fais confiance à l'installateur pour t'installer la version adéquate de MinGW.

      Si tu veux installer la version propre à Visual Studio 2019 (ou si tu veux personnaliser l'installation), tu dois ** uniquement ** cocher la case "installation personnalisée" et aucune autre sur la cinquième page de l'installateur, car, si tu sélectionne -- par exemple -- la case "Qt 6.3 pour le développement d'application de bureau (chaine de compilation MinGW et bibliothèque Qt pour MingGW), cela t'installera automatiquement ... la chaine de compilation MinGW et la version de Qt adéquate pour une utilisation avec ces outils.

      Tu pourras revenir là dessus par la suite, mais cela prend de la place.

      Si tu as uniquement coché la case "installation personnalisée", tu aura sur la sixième page le choix des différents composants à installer, classés par version de Qt puis par éléments à installer (il faut double cliquer sur "Qt" pour faire dérouler les possibilités).

      Dans l'idéal, tu veilleras à installer la version "actuelle", c'est à dire la version 6.3.2 au moment d'écrire ces lignes.

      Tu peux, si tu le souhaite, installer plusieurs composants et plusieurs kits, par exemple, en choisissant d'installer la version pour visual studio 2019 (qui doit alors être déjà présent sur ton système) et la version pour MinGW (qui pourra être installé automatiquement) voire même les sources ou une version de Qt pour créer des applications pour androdid, si tu y trouve un quelconque intérêt.

      Il faut juste être conscient du fait que chacun de ces éléments va prendre à peu près 3Gb d'espace sur ton disque dur.

      Si tu choisi la version de Qt pour MinGW, il sera également intéressant de descendre tout en bas, dans la section "Developers and Desing tools" pour s'assurer que MinGW-11.2.0-64bits est coché, afin que le compilateur soit correctement installé

      De même, à moins que tu ne veuille utiliser visual studio (ou n'importe quel autre EDI de ton choix), il est sans doute intéressant de s'assurer que les cases "Qt Creator 8.0.1 CDB debugger support" et "debugging tools" soient également cochées

      Tu remarqueras au passage dans cette section que CMake et Ninja sont normalement d'office cochés.  Il faut bien sur les garder, car ce sont les outils qui permettront la compilation de tes projets.

      Une fois toute tes sélections validées, il n'y aura plus qu'à attendre que l'ensemble soit installé.

      Enfin, si tu veux utiliser VisualStudio (2019, forcément) comme EDI, il faudra aller chercher une ou deux extension pour permettre à visual studio d'utiliser Qt.

      Il en ira d'ailleurs de même si tu souhaite utiliser visual studio code ;)

      -
      Edité par koala01 14 septembre 2022 à 14:35:15

      • Partager sur Facebook
      • Partager sur Twitter
      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
      Anonyme
        14 septembre 2022 à 21:17:03

        Merci beaucoup Koalao1, mais je ne sais pas si vous m'avez bien compris où je n'ai pas bien explique.

        J'ai fait une installation personnalisé de Qt en suite dans la partie tools j'ai bien choisi Mingw, Ninja, Qt creator, cmake,...

        Et après l'installation j'ai créé un projet et je l'ai compiler sans problème, mais lorsque que j'ai voulu utiliser QtWebEngine je fais juste QT += webenginewidgets dans .pro et je tape Ctr + s et la un message d'erreur s'affiche module note found, puis je suis venu sur le forum j'ai vu des discussions traitant du problème on dit il faut choisir QtWebEngine Qt position et autre plus le compilateur MVSC pour pouvoir utiliser QtWebEngine alors j'ai pris Qt et pour n'est pas avoir des problèmes j'ai choisis toutes les libraires et la partie tools j'ai choisis MVSC et là après l'installation toujours rien mais dans le menu tools->bouild output -> kit , le compilateur MVSC s'affichait avec petit triangle en jaune au début, puis encore sur le forum j'ai lu qu'il fallait installer le compilateur MVSC avec MV studio installer et j'ai bien coché le compilateur MVSC après je retourne dans Qt je crée un projet et la le compilateur MVSC est détecté automatiquement, donc on me propose de choisir Mingw ou MVSC je choisis ce dernier et je crée mon projet et dans mon fichier .pro je fais QT += webenginewidgets et je tape Ctr + s et aucune erreur maintenant pour compiler un programme même un simple programme Hello World avec le compilateur MVSC il ya un message

        <C1083: impossible d'ouvrir le fichier include?: 

        'crtdbg.h' ?: No such file or directory     yvals.h 12>

        Donc le problème c'est dans le fichier yvals.h ligne 12 on a fait un include crtdbg.h mais le pire si j'utilise l'éditeur de Microsoft visual studio code je crée un programme Hello World et j'ai compile ça marche très bien alors pourquoi ça ne marche pas avec Qt? Si Qt creator a détecté le compilateur MVSC automatiquement pourquoi il ne peut pas faire de même avec les fichiers include? Dois-je copié les fichiers de MVSC et le placer dans un endroit dans Qt ? 

        • Partager sur Facebook
        • Partager sur Twitter
          15 septembre 2022 à 0:45:53

          justement, je t'ai bien mieux compris que tu ne le penses:

          les fichiers .pro, ce sont des fichiers utilisés par QMake, or, Qt est passé à CMake, qui utilise typiquement des fichiers nommés CMakeLists.txt pour décrire les projet.

          De plus, j'ai bien précisé que QWebEngine, le module WebEngine n'est plus disponible que pour la version compilée pour Visual Studio, et ce, depuis la version 5 de Qt.

          Il est donc tout à fait normal que, lorsque tu essaye d'ajouter le module WebEngine -- que ce soit au travers de QMake ou de CMake -- en utilisant la version compilée pour MinGW, le système te réponde qu'il n'a pas pu trouver ce module, vu qu'il n'existe officiellement plus pour cette version de Qt.

          Nharcisse a écrit:

          Mdonc on me propose de choisir Mingw ou MVSC je choisis ce dernier et je crée mon projet et dans mon fichier .pro je fais QT += webenginewidgets et je tape Ctr + s et aucune erreur maintenant pour compiler un programme même un simple programme Hello World avec le compilateur MVSC il ya un message

          <C1083: impossible d'ouvrir le fichier include?: 

          'crtdbg.h' ?: No such file or directory     yvals.h 12>

          C'est ce que j'essayais de t'expliquer: bien qu'il s'agisse du même framework, il y a "quelques différence" entre la version du framework qui est compilée pour fonctionner avec MinGWW et la version du framework qui est compilée pour fonctionner avec Visual Studio.

          Ces différences vont apparaitre à différents niveaux:

          au niveau des fichiers d'en-tête, car les différents compilateurs utilisent des fichiers "non standard" pour faire connaitre certaines fonctionnalités qui ne sont pas non plus standard.  C'est pour cela que, Visual Studio se plaint de ne pas trouver crtdbg.h: pour une raison ou une autre (en fait, j'en parlerai un peu plus loin) un fichier destiné à être utilisé par MinGW s'est retrouvé à être utilisé par Visual Studio.

          Le problème, c'est que ce fichier destiné à être utilisé par MinGW inclut un autre fichier qui inclut un fichier nommé crtdbg.h qui ... n'existe que sous MinGW

          Au niveau des bibliothèques ensuite, entre autre parce que les compilateur font à peu près "comme il veulent" ce que l'on appelle le "mangling" (la création d'un symbole permettant de représenter le nom d'une fonction en s'assurant que ce soit toujours la bonne version de la fonction qui sera appelée si, comme cela arrive régulièrement, il en existe plusieurs surcharges)

          Tu ne peux donc pas utiliser avec MinGW (ou avec visual studio) une "bibliothèque d'importation" (les .lib ou les .a que tu trouves dans le dossier lib des différents kitt Qt)  qui a été générée pour fonctionner avec visual sutio (ou avec MinGW).

          Au niveau des systèmes de configuration de projet enfin:

          Pour chaque kitt (visual studio ou MinGW, par exemple), il existe une configuration particulière, qui permet, justement de préciser certaines particularité "propres à chaque kitt".

          Un problème qui arrive très régulièrement lorsque l'on change de kit "en cours de route", c'est qu'il y ait quelques "résidus"  de la configuration utilisée par le kitt que l'on utilisait avant.

          Dans ton cas, tu as commencé par utiliser le kitt "MinGW", avant d'apprendre que le module WebKit n'était pas disponible.  Tu as donc installé visual studio et le kitt "Visual Studio 2019" et tu t'es dit que "ca devrait maintenant passer crême".

          Sauf qu'il restait "quelque part" dans le dossier de génération "quelques informations" reliées ... au kitt MinGW.  Le truc vraiment moche de l'histoire, c'est que "tout te laisse à penser" que tu utilise effectivement le kitt "Visual Studio", MAIS ... il y a -- effectivement -- un endroit où la configuration du projet est toujours en place pour utiliser le kitt MinGW.

          Ce qui te fout un bordel incroyable, et donne de quoi s'arracher abondamment les cheveux lorsque l'on n'est pas au courant du problème ;)

          Et, enfin, il faut savoir que les différents EDI que tu vas utiliser vont sans doute fonctionner differemment (si tant est que tu utilise un EDi):

          Visual Studio (et Visual Studio code) vont généralement travailler dans un dossier nommé out se trouvant directement dans le dossier du projet, et contenant un sous dossier "build" qui contient lui-même un sous dossier par configuration (ex: x64_Debug) mais utilisera également un dossier (qui pourrait bien être caché) nommé .vs pour y placer ses données spécifiques, alors que QtCreator va ajouter un fichier nommé CMakeLists.txt.users (ou <nom_du_projet>.pro.users en fonction que tu utilises CMake ou QMake) et générer le projet dans un sous extérieur au dossier sources.

          Lorsque tu décide de changer d'EDI ou de kitt, tu as largement intérêt à supprimer tous ces éléments issus "de la configuration d'avant".  Cela t'évitera d'avoir le genre de problème auquel tu es confronté parce qu'une partie de la configuration n'a pas été mise "correctement à jour".

          Enfin, je persiste et signe: tu as très largement intérêt à abandonner QMake au profit de CMake.

          QMake est en effet un système de configuration de projet qui n'a jamais été utilisé que par Qt, alors que CMake est un système de configuration de projet qui a progressivement réussi à s'imposer (presque) partout.

          Ou disons plutôt que s'il n'est pas encore forcément utilisé "par défaut" par la plupart des EDI que tu pourra rencontrer, il a réussi à faire en sorte d'être au minimum supporté par la plupart d'entre eux, en plus de permettre une compilation sans avoir recours à un EDI quelconque.

          Mais, en plus, l'énorme avantage de travailler avec CMake, c'est que tu ne te retrouve pas à devoir te "lier" au système spécifiquement utilisé par Qt si ... tu n'as pas besoin de Qt.

          J'ai bien conscience qu'il est sans doute bien plus d'utiliser CMake que QMake, du moins, pour une utilisation "de base", mais tu peux me croire sur parole: CMake te permettra des choses souvent bien plus sympa que QMake ;)

          • Partager sur Facebook
          • Partager sur Twitter
          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
          Anonyme
            15 septembre 2022 à 2:45:18

            Encore une fois merci beaucoup , dans le cours que j'ai appris notamment celui de openclassroom de c++ on nous apprend à utiliser qmake comment puis-je utiliser Cmake et en plus pouvez- vous me donner une bonne marche à suivre pour éviter les problèmes des anciennes configuration de Qt? Et une autre chose es-ce qu'il est possible d'avoir deux versions de Qt installer sur la même machine sans que cela crée des problèmes ?

            Pour CMake ce que je voulais vous demander c'est de m'aider à compiler un projet avec, pour ce qu'il faut mettre dans le fichier CMakeLists.txt je vais me débrouiller avec la documentation mais comment ajouter ce fichier à mon projet et compiler ? Comme vous le savez avec qmake le fichier .pro était ajouter automatiquement au projet, je n'avais qu'à l'éditer et compiler mais avec CMake comment ajouter le fichier CMakeLists.txt à mon projet et compiler ?, Merci beaucoup d'avance 

            -
            Edité par Anonyme 15 septembre 2022 à 11:36:54

            • Partager sur Facebook
            • Partager sur Twitter

            Développement avec Qt

            × 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