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 :

Migration vers Qt 5.5 : problème d'include


Sujet :

Qt

  1. #1
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Migration vers Qt 5.5 : problème d'include
    Bonsoir,

    Je poursuit la migration de mon application vers Qt 5.5 depuis Qt 4.7.

    Je rencontre désormais des dizaines de fois lors de la compilation ce type d'erreur :

    Nom : error.png
Affichages : 236
Taille : 25,6 Ko

    Dans le fichier discovery.cpp voici les lignes concernées :

    Nom : error1.png
Affichages : 198
Taille : 4,8 Ko

    Dans mon .pro j'ai bien ajouté : QT += widgets


    J'ai fais d'autres "essais". Si par exemple je remplace par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <QtGlobal>
    #if QT_VERSION >= 0x050000
    #include <QObject>
    #include <QtWidgets/QWidget>
    #include <QtWidgets/QDialog>
    #else
    #include <QtGui>
    #endif
    J'obtiens alors d'autres erreurs :

    In file included from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtWidgets/QDialog:1:0,
                     from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtGui/qwindowdefs.h:40,
                     from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtWidgets/qwidget.h:37,
                     from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtWidgets/QWidget:1,
                     from ../discovery.cpp:14:
    C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtWidgets/qdialog.h:45:41: error: invalid use of incomplete type 'class QWidget'
     class Q_WIDGETS_EXPORT QDialog : public QWidget
                                             
    In file included from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtCore/qobject.h:48:0,
                     from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtCore/QObject:1,
                     from ../discovery.cpp:13:
    C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtCore/qmetatype.h:1314:7: error: forward declaration of 'class QWidget'
     class QWidget;
           
    In file included from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtWidgets/QDialog:1:0,
                     from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtGui/qwindowdefs.h:40,
                     from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtWidgets/qwidget.h:37,
                     from C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtWidgets/QWidget:1,
                     from ../discovery.cpp:14:
    C:/Qt/Qt5.5.0/5.5/mingw492_32/include/QtWidgets/qdialog.h:98:24: error: 'QKeyEvent' has not been declared
         void keyPressEvent(QKeyEvent *);
                            ^


    Merci par avance.

  2. #2
    Membre émérite
    Avatar de VivienD
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur logiciel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 523
    Points : 2 278
    Points
    2 278
    Par défaut
    Bonjour,

    Lorsque tu regardes les sources de la bibliothèque Qt, tu peux voir que les en-têtes que tu inclus dans ton code ne font que déclarer les classes QKeyEvent, QPainter et consorts, les inclusions des en-têtes correspondantes ne se faisant que dans les fichiers sources pour la définition des fonctions-membres de QWidget et QDialog.
    Si tu veux t'amuser avec ces classes, il faut que tu inclues leur fichier en-tête. Soit dit en passant, QKeyEvent et QPainter appartiennent au module QtGui.

    Tschüß

  3. #3
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonsoir VivienD,

    Tout d'abord merci pour ta réponse.

    Vu que j'ai toujours des problèmes malgré les éléments de ta réponse, j'ai fais le petit test suivant :

    J'ai créé un nouveau "projet" par défaut en faisant : "File" > "New file or project" > "qt widget application"

    du coup c'est Qt qui créé tout seul les fichiers main.cpp, mainwindow.cpp/.h/.ui

    et lorsque je compile ce "projet" sans rien modifier du tout j'obtiens le même "style" d'erreur que ce que je peux avoir avec mon projet "complet" :

    Nom : error4.png
Affichages : 174
Taille : 49,3 Ko

    Du coup j'en arrive à la conclusion que c'est plus un problème Qt peut-être lié à mon environnement. En effet je suis sous Windows 7 64 Bits et je me demande si cela ne pose pas problème à Qt 5.5.0 ....

    Ceci dit le même test de la mainwindow avec Qt 4.7.4 et Qt 5.3 sur le même PC compile et s’exécute sans aucun problème.

    A noter que sur ce PC j'ai Qt 4.7.4, Qt 4.8.1, Qt 5.3 et Qt 5.5.0 d'installé ....

    Tout aide est la bienvenue ...

  4. #4
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Donc j'ai résolu le problème en désinstallant Qt 5.3 et Qt 5.5 de mon PC, en supprimant les répertoires C:\Users\xxxxxx\AppData\Roaming\QtProject et \Nokia puis en réinstallant Qt 5.5 avec les options par défaut.

    Du coup compilation OK désormais de mon projet désormais.

  5. #5
    Membre émérite
    Avatar de VivienD
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur logiciel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 523
    Points : 2 278
    Points
    2 278
    Par défaut
    Normalement, Qt 5.3 et Qt 5.5 doivent pouvoir cohabiter; en tout cas c'est le cas sur mon ordinateur portable (Windows 8.1 64 bits et distributions de Qt avec MinGW exclusivement). Par contre, on ne te forcera pas de réinstaller Qt 5.3: c'est ton système, après tout.

    PS: Désolé de la réponse tardive mais je dois batailler au boulot sur un projet où le système embarqué à programmer ne jouit pas de la meilleure documentation possible ; sans compter le temps passé dans les transports (en tout trois heures par jour en comptant les changements ).

  6. #6
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Pas de soucis, merci quand même pour ton aide.
    N'ayant pas besoin de Qt 5.3 je ne vais pas le réinstaller.
    Mais sur le principe je suis d'accord qu'il ne devrait pas y avoir de problèmes pour faire cohabiter tout cela.
    Peut-être y a t'il eu un soucis lors de ma première install.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Migration vers Interbase
    Par mona dans le forum InterBase
    Réponses: 6
    Dernier message: 26/09/2005, 11h43
  2. [CR][VS.NET]Migration vers CR XI
    Par arthenius dans le forum SDK
    Réponses: 1
    Dernier message: 20/07/2005, 11h08
  3. Probleme de migration vers serveur dédié
    Par sylvain_neus dans le forum Hibernate
    Réponses: 13
    Dernier message: 23/04/2004, 09h51
  4. [Kylix] migration vers kylix
    Par zheng dans le forum EDI
    Réponses: 1
    Dernier message: 11/04/2004, 09h31
  5. [Tomcat] migration vers une version plus récente
    Par butcher dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 31/10/2003, 22h46

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