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 :

utilisation d'une classe ecrite en Qt dans un projet C++


Sujet :

Qt

  1. #1
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 72
    Par défaut utilisation d'une classe ecrite en Qt dans un projet C++
    Bonjour

    Une fois de plus, j'aimerais avoir l'aide de la communauté "Developpez.com".
    Au fait, ma préoccupation principale est la suivante:
    J'ai ecrit une classe à l'aide de Qt et de ses modules QtGui et QtCore.
    Maintenant je me pose la question de savoir, s'il serait possible de compiler
    ma classe (ou alors d'en faire une dll) de sorte qu'elle puisse être employé
    dans un projet non Qt (du genre l'utilisateur hérite juste de la classe en
    question dans un project purement C++). Mieux encore, peut-on utiliser cette
    classe sur une machine n'ayant pas Qt installé ?

    Merci et bon dimanche

  2. #2
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 55
    Par défaut
    ça m'étonnerait. les différentes macros et autre sur-couches utilisées par Qt ont au moins besoin de qmake pour générer les fichiers permettant au compilo c++ de comprendre ce qui est écrit. Donc il te faudrait qmake pour compiler du code Qt.
    Mais ne prend pas pour argent comptant ce que je dit, c'est ma vision des choses. Quelqu'un aura surement une réponse plus exact...

  3. #3
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Dans tous les cas, ta classe utilise Qt, et donc il faudra de toute manière joindre d'une manière ou d'une autre Qt aux autres bibliothèques utilisées dans ton programme. Donc il faut les entêtes et les .a/.lib/.whatever (selon l'OS) au moins.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 72
    Par défaut
    Tout d'abord merci pour vos reponses si rapides.
    Il est clair que je dois fournir les entetes (fichiers .h)
    Puisque la classe doit etre utilisee sous Windows, je compte donc generer un fichier ".lib"
    comme le suggere Alp. Seleument, jusqu'a present, je n'ai pas encore saisi comment ce
    type de fichier ce cree sous Qt.

    Si j'ai bien compris, suffira t-il d'inclure les entetes et de linker sur le fichier .lib ?

  5. #5
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Tu sais, Qt c'est juste une bibliothèque C++, c'est pas un langage à part. Donc tout se passe dans le monde du C++, c'est comme pour n'importe quel autre code C++.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    ça m'amène à une question (basique) comment précisément interagisse qmake et le programme 'moc' ?

  7. #7
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    qmake va lancer un moc sur tous les fichiers contenant des classes qui contiennent un appel à la macro "Q_OBJECT".

  8. #8
    Membre confirmé
    Inscrit en
    Février 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 72
    Par défaut
    Salut,
    je reviens une fois de plus avec mon problème.
    Comme m'a conseillé Alp, j'ai crée un fichier ".lib" de ma classe ainsi qu'un fichier ".dll". Peut être convient-il de noter que j'ai fait tout cela à l'aide de VS2008 et de Qt-Integrator.
    Cependant, lorsque je linke sur le fichier.lib et essaye de compiler sur une machine n'ayant pas Qt installé, j'obtiens des erreurs du type :

    --> fatal error C1083: Cannot open include file: 'QtGui/QtGui': No such file or directory

    Vu que je fais un #include <QtGui/QtGui> dans mon fichier d'entête, cet erreur se laisse facilement expliquer.
    Quelqu'un aurait-il amabilité de me dire ce qui me manque.
    Merci et bonne soirée

  9. #9
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Il faut que tu mette le dossier "include" de Qt (C:\Qt-4.6\include par exemple) dans les dossiers d'includes (entêtes) de ton projet VS. Et idem pour le dossier "lib" de Qt pour les dossiers de bibliothèques (libraries / linker), en n'oubliant pas de lier QtCore.lib et QtGui.lib à ton projet.

  10. #10
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par dj_the_kid Voir le message
    Cependant, lorsque je linke sur le fichier.lib et essaye de compiler sur une machine n'ayant pas Qt installé, j'obtiens des erreurs du type :

    --> fatal error C1083: Cannot open include file: 'QtGui/QtGui': No such file or directory
    C'est peut-être la seule explication nécessaire : tu ne peux pas utiliser Qt tant que tu n'as pas (1) les sources (surtout les headers .h, généralement indisociabmles du reste) et (2) les binaires compilés ((.dll) + .lib).

    Dès que tu as tout ça,; il faut que VS en ait connaissance. Si la console ne t'effraie pas, dans le dossier de ton projet, qmake -project && qmake --tp vc. Ça te crée un fichier de projet VS pour le projet Qt. Il suffit de l'ouvrir, et tout sera configuré (répertoires d'include, de libs, le moc...), pour peu que le fichier .pro puisse compiler le projet (i.e. tous les modules précisés, etc.).

    Sinon, un nouveau projet avec l'addon te configure le tout. Tu peux même changer par après la version de Qt à utiliser pour la compilation.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. Appeler une classe qui se trouve dans un projet externe
    Par abj8077 dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 17/01/2012, 13h01
  2. Réponses: 0
    Dernier message: 11/06/2008, 14h33
  3. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  4. Réponses: 4
    Dernier message: 08/11/2005, 15h10
  5. [Applet]utiliser une classe d'un package dans une applet
    Par jeromejanson dans le forum Applets
    Réponses: 1
    Dernier message: 30/06/2005, 08h13

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