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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    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 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    tu utilise qmake?
    Ajoute la console, tu verra surement l'erreur

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    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 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    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 émérite

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    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 expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    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 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    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 .

+ 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