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 :

[Qt 4.4.3] connect qui ne marche pas


Sujet :

Qt

  1. #1
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut [Qt 4.4.3] connect qui ne marche pas
    Bonjour, depuis hier, gros mystere, Qt ne veut pas me connecter des signaux et des slots.

    Je m'explique, j'ai une classe qui comporte comme bien souvent des signaux et des slots, elle hérite d'une Ui_Class (classe générée par le designer).
    Dans ce ui, j'ai mis un widget personnel (en gros un rectangle jaune qui se dessine dans un rectangle bleu dont on varie des valeurs avec des QSpinBoxes).
    Comme toujours lorsque je fais un plugin, je le test dans un projet séparé et là ça marche :



    Sur la capture, lorsqu'on modifie la combobox, son signal curentIndexChanged(int) est relié à un de mes slots :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(cbxEditTable, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdateControls(int)))
    Je compile, je teste mon code et .... ça marche pas, la combobox n'est pas connectée. Je teste en debug ... ça marche, je reteste en release, ça marche pas.
    Je fais alors la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!QObject::connect(cbxEditTable, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUpdateControls(int))))
    {
    	QMessageBox::warning(this, "MESSAGE BOX de TEST","la connexion a foire dans slotUpdateControls");
    }
    en debug, pas de message, en release, ça plante

    En plein desespoir, je pose un bouton sur ma fiche, et que cree un slot pour que lors du clic sur le bouton je connecte la combobox. Mais .... la connection du bouton marche pas non plus !

    Qu'est-ce qui se passe ?
    Je tiens à préciser que j'ai beaucoup de connections/déconnections en fonction de la valeur de la combobox.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    tu utilise qmake?
    Ajoute la console, tu verra surement l'erreur

  3. #3
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    euh, comment ça j'utilise qmake ? J'utilise Visual Studio. Je n'ai pas de warnings ni d'erreurs.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Kestufou Voir le message
    euh, comment ça j'utilise qmake ? J'utilise Visual Studio. Je n'ai pas de warnings ni d'erreurs.
    Je parie que ça viens de là.

    Perso, j'ai eu trop problème avec l'intégration Qt de visual que j'avais finie par tout faire à la main. Maintenant j'utilise "qmake -tp vc" et un .pro.

    Tu as surement un problème de moc. Pour commencer, essaie de faire un rebuild.
    Si cela ne change rien, essaie de supprimer à la main les fichier généré par moc et uic.
    Tu as du modifier sans le faire expret le build en mode release.

    Si ton projet n'est pas gros, et que tu as envie, je peut l'essayer au taf, j'ai un peu de temps.

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Etrange en effet, je connais moi aussi des problèmes des fois entre debug et release. Voici les conseils que je peux te donner :

    -Affiche la console, comme l'a dit Mongaulois ; pour cela, tu ajoutes CONFIG += console dans ton .pro

    -As tu bien vérifier que tu as mis Q_OBJECT dans la définition de ta classe ? C'est bateau, mais ça s'oublie vite.

    -Vérifies bien les noms de tes signaux slots dans ton header, ta définition, et ton connect (c'est pareil, c'est des oublis qui arrivent).

    -As tu essayé en faisant un rebuild total (nmake distclean && qmake && nmake) ? Il y a parfois des erreurs qui disparaissent ainsi.

    -Dernière chose, et pour moi la plus pausible, c'est une erreur d'appel de lib. Il faut savoir qu'il existe des lib qt pour le debug, et pour le release (exemple : QtGui4d.dll et QtGui4.dll par défaut sous windows). Tente de bien spécifier les libs à utiliser dans ton .pro (LIBS += blabla.lib tutu.lib), ou copie juste celles qui sont nécessaires dans le répertoire courant de ta compilation.

    Après, ça vient peut être du designer, mais je ne l'ai jamais utilisé, donc je ne peux t'aider.

    Bonne chance,

    G.

  6. #6
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    Merci de vos participations.
    Pour les relectures de code, je l'ai refait plusieurs fois et demandé à un collègue (parce que parfois on est plongés dans le code et on voit pas la bourde juste sous nos yeux).
    Q_OBJECT est bien présent.
    Les rebuild, les cleans et Cie j'en ai refait bien en vérifiant que les mocs soient supprimés.
    Pour les libs, j'ai tout revérifié. J'ai même installé le Qt 4.4.3 (j'étais en 4.4.1).
    bizarre.

    EDIT : j'ai tenté de passer par la ligne de commande mais je me suis trompé dans le sens des arguments du coup, j'ai écrasé mon fichier mais bon ... je l'avais dans mon projet de test.

    Au final, je suis allé inspecter les dossiers de Visual studio, et j'ai vu qu'un clean n'efface pas grand chose ! j'ai tout enlevé à la main, puis j'ai enlevé du projet mon fichier .cpp et son header. Je compile, erreur (normal). Enfin, je remet mes fichiers dans mon projet afin qu'il cree le moc_XX.h, je recompile et c'est bon.

    Moralité : 2600 euros la version commerciale windows buggée c'est pas top. Surtout, que faut compter 3900 pour avoir une plateforme supplémentaire et 5600 pour les trois plateformes. Certes c'est joli et bien documenté, mais à ce prix là, ce genre de bugs c'est casse pieds !

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Kestufou Voir le message
    Moralité : 2600 euros la version commerciale windows buggée c'est pas top. Surtout, que faut compter 3900 pour avoir une plateforme supplémentaire et 5600 pour les trois plateformes. Certes c'est joli et bien documenté, mais à ce prix là, ce genre de bugs c'est casse pieds !
    Seulement, es ce vraiment leur faute?
    Tu as surement, sans le faire exprès modifié la directive de compilation (moc) du .h. Et ça ils n'y peuvent rien

    La meilleur façon d'utiliser Qt et sans aucun doute l'utilisation de qmake (ou peut être cmake, scons,...).

    Surtout que "qmake -tp vc" créé ton vcjproj pour visual .

  8. #8
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    bah non, j'ai pas modifié de directive de compilation ou autre. ça m'était déjà arrivé ce genre d'embrouilles, mais pas avec QObject::connect() et j'avais dû faire la même manip à peu près.
    Mon projet existe depuis des mois, et je n'ai pas modifié le header ou le moc.
    Je pense que c'est soit visual soit Qt qui a foiré (là c'est facile ) puisque clic droit dans l'explorateur de projet sur moc_monfichier.cpp > view code ne marchait pas et pourtant le moc file en question était quelque part.

    Les version d'intégrations à visual studio augmentent et à chaque fois quelques bugs corrigés. Bon, c'est ptêtre Visual qui fait chier aussi !

    Quand on ne connaît pas du tout Qt ni les lignes de commandes, qmake ça fait un peu peur (pour ma part), par contre on teste l'integration, c'est joli, F7 et voilà. L'inconvenient, c'est qu'on apprend pas le fond de cette manière.

    Maintenant, sur mon Mac, oui je préfère qmake et make, au moins je vois ce qu'il se passe (pis de toutes façons l'intégration à Xcode marche pas tip top : pas d'autocompletion ).

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Ce que j'aimais pas surtout dans l'integration de Qt dans visual, est qu'il ne mettais que des path absolue.
    Du coup, tu change le répertoire de ton projet et plus rien ne compile.

    Peut être que cela marche mieux maintenant..

  10. #10
    Membre averti Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Points : 344
    Points
    344
    Par défaut
    ah ? Moi j'aime bien pourtant. J'ai pas essayé de changer mon projet de répertoire, mais quand je prends mon projet chez moi ça marche très bien, les chemins ne sont pas absolu.
    J'ai des deux côtés des varaibles d'environnement qui vont bien et c'est tout.

    Les chemins dans visual sont de cette forme (donc relatifs) :

    Output Directory : $(SolutionDir)$(ConfigurationName)
    Additional Library directories : "$(QTDIR)\lib";"$(QTDIR)\plugins\designer";"$(QWTPLOT3DDIR)\lib";"$(QWTPLOTDIR)\lib";"$(QXTDIR)\deploy\libs"

    Plus d'infos La

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Kestufou Voir le message
    J'ai pas essayé de changer mon projet de répertoire, mais quand je prends mon projet chez moi ça marche très bien, les chemins ne sont pas absolu.
    C'est qu'ils ont changé alors (et en bien). J'utilisais la première version de Qt4.

  12. #12
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Je pense surtout que c'est la licence qu'ils vendent à ce prix là (j'entends code propriétaire / code open source). L'intégration du framework dans VC est vraiment simple :

    -Créer un projet vide
    -Définir les chemins d'include/libs pour l'intellisense
    -Définir les options de génération (Debug/Release)

    Ainsi, moi aussi je ne fais qu'appuyer sur F7, ce qui appelle automatiquement qmake && nmake. La seule chose qui me reste à faire je pense, en plus de vous, est la modification du .pro à chaque modification significative du projet, mais ça prend le temps de le dire.

    Si seulement nos supérieurs pouvaient voir le pognon qu'on leur fait économiser, et qu'il nous en redonne une partie .

    Bon après je dis pas, quand on veut vendre son appli, on a pas vraiment le choix.

    G.

  13. #13
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Gulish Voir le message
    Bon après je dis pas, quand on veut vendre son appli, on a pas vraiment le choix.
    Tu peut vendre ton appli sous GPL.

  14. #14
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Salut à vous
    Petite remarque :
    J'ai commencé il y a peu, je pense que vous vous en rappelez : c'était catastrophique !!!
    Grace à votre aide, j'ai pu m'améliorer.
    Je tenais absolument a faire fonctionner des appli avec une installation bancale sous Visual C++ et Qt.
    Je refusais de taper les lignes de commandes pour compiler.
    Jusqu'au jour où je me suis dis : : "aller j essaie" et je n'étais pas très motivé pour cela
    J'ai eu plusieurs problèmes avec Vc++ même en compilant avec la console.
    (obligation d'effacer tous les fichiers du dossier projet sauf les. cpp et .h pour compiler même avec la console...)
    Depuis, je me sers uniquement de code block et je compile Qt en ligne de commande ca me donne :
    qmake -project la première fois (2 secondes a taper et attendre)
    qmake (2 secondes maxi aussi)
    make (temps variable suivant le code)
    franchement, je ne perds pas de temps puisque rien ne bug (et pas besoin de configurer code block)
    Seule outil important pour moi : le raccourci de la console Qt
    Bon ça n'est que mon avis (comme je debute, je n'ai surement pas connaissance de toutes les contraintes ...)

    Merci encore à vous pour votre aide depuis ces quelques semaines (je vais encore avoir besoin de vous je pense.....)
    A bientot
    PS : desolé d'avoir été un peu long...

  15. #15
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut
    Citation Envoyé par katanaenmousse Voir le message
    Depuis, je me sers uniquement de code block et je compile Qt en ligne de commande
    Dit à code block d'utiliser le makefile généré par qmake tu perdra moins de temps.

  16. #16
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Salut

    Dit à code block d'utiliser le makefile généré par qmake tu perdra moins de temps.
    Bah je perds pas de temps c est vite tapé
    en plus j ai pas a retaper le tout à chaque fois et au moins je n ai aucun bug du à l IDE comme ca.

  17. #17
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par katanaenmousse Voir le message
    Bah je perds pas de temps c est vite tapé
    en plus j ai pas a retaper le tout à chaque fois et au moins je n ai aucun bug du à l IDE comme ca.
    Pour info,
    ca devrais t'interresser
    http://labs.trolltech.com/blogs/2008...view-released/

  18. #18
    Membre actif
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Points : 232
    Points
    232
    Par défaut
    Effectivement,

    ca a l air sympa

    Merci du tuyau Mongaulois
    (Bon je crois qu'il faut arreter de poster ici, on a serieusement fait du hors sujet là :
    Milles excuses, c est de ma faute

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

Discussions similaires

  1. Connection a base access qui ne marche pas
    Par harisman87 dans le forum C#
    Réponses: 9
    Dernier message: 12/08/2010, 10h22
  2. [Batch] connection FTP qui ne marche pas
    Par tibofo dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/10/2009, 10h38
  3. connect() qui ne marche pas
    Par Nykoo dans le forum Qt
    Réponses: 3
    Dernier message: 25/01/2008, 22h11
  4. Réponses: 3
    Dernier message: 08/09/2003, 15h06
  5. Réponses: 9
    Dernier message: 07/05/2003, 12h57

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