Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.7.1 - Qt Creator : 4.2.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

[Qt4-Win] Probleme avec la macro Q_OBJECT

December 2007 modifié dans Année 2007
Bonjour tout le monde Je viens juste de débuter aujourd'hui le programation avec Qt je l'ai installe avec vc++ 2005 express edition et tout marche bien mais dans tous les programmes que je fais je rencontres des Link error au début je savais pas pourquoi mais quand j'ai enlevé la macro Q_OBJECT tout marchait bien mais les signeaux et les slots que j'ai définie ne marchait plus.Je pense que ce problème a un rapport avec les Generated file parceque je les trouves dans tous les prg qui utilisent la macro.Merci de vos future réponse.
EDIT:
Je voudrais savoir aussi s'il y a une macro de conversion pour convertir d'un String en un Qstring,meme chose pour les entiers de int vers un type representant les int pour Qt meme chose pour les chars et les float.

Réponses

  • Salut,

    A partir du moment où tu as des signaux et des slots la macro Q_OBJECT est obligatoire.
    Il faut ensuite que tu génère le moc associé au fichier contenant la macro. Je ne connais pas visual 2005 mais normalement si Qt est correctement intégré, il génère les lignes automatiquement dans les settings de post build.
    Il ne te reste plus qu'à ajouter le fichier moc généré à ton projet si ce n'est pas fait automatiquement.

    Pout ton String en QString regarde la doc de QString. En suite pourquoi veux tu transformer tes int, float et autre char en équivalent Qt, ça marche très bien sans.
  • Salut,

    Il n'y a pas d'intégration avec Express. La meilleure solution est d'utiliser les projets de type Makefile, ou de se taper soi-même la maintenance des règles crées par qmake, ce qui n'est pas forcément une panacée.
    Ton project Makefile devra être réglé ainsi:
    * Debug:
    > Build: qmake && nmake debug
    > Rebuild: nmake distclean && qmake && nmake debug
    > Clean: nmake distclean
    * Release:
    > Build: qmake && nmake release
    > Rebuild: nmake distclean && qmake && nmake release
    > Clean: nmake distclean

    A partir de là, il faudra avant ta première compilation appeller 'qmake -project' dans le répertoire de ton projet. A partir de là, il sera préférable d'ajouter le .pro à ta solution pour le maintenir directement dans VC++.
    Si je ne te dis pas de faire qmake -project dans les régles de build, c'est pour la simple raison que tu perdras toute modification du projet en faisant ça (genre CONFIG += console, ou encore la spécification des modules à utiliser etc...).

    Pour ouvrir une console directement dans le répertoire du projet, tu peux créer une entrée dans le menu outils (Tools > Outils externes...), voilà par exemple le mien:
    * Titre: Command-line in project
    * Commande: %systemroot%\system32\cmd.exe
    * Arguments: /K "D:\prog\Microsoft Visual Studio 8\vc\bin\vcvars32.bat"
    * Répertoire initial: $(ProjectDir)

    A noter que si tu as une solution composée de plusieurs projets, cette commande te placera dans le répertoire du vcproj du projet actif (soit celui du fichier que tu as actuellement sous les yeux, soit le projet par défaut si aucun fichier n'est ouvert).
  • Merci les gars pour vos reponse.J'ai fais comme tu m'as dis IrmatDen et s'a marché mais c'est pas vraiment évident.Mais je pense qu'avec le temps on doit s'habituer et aussi merci a toi Markus pour ce qui est des int et autres puisque je debute en Qt je croyais qu'il fallait convertir en un type spécifique à Qt.
Connectez-vous ou Inscrivez-vous pour répondre.