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 :

Où mettre l’appel à qRegisterMetaType ?


Sujet :

Qt

  1. #1
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut Où mettre l’appel à qRegisterMetaType ?
    Bonjour,

    J’ai une classe perso, disons Perso, qui dérive de QObject. Je souhaite utiliser dans des signaux / slots, non pas des Perso, mais des Perso*.

    Ça fonctionne bien si je rajoute l’appel à qRegisterMetaType<Perso*>("Perso*") dans le constructeur de mon objet. Sinon, j’ai une erreur à propos du type Perso* non enregistré.

    Sauf que en théorie, cet appel n’a besoin de n’être fait qu’une seule fois. Est-ce un problème de le faire à chaque fois (pas de problème fonctionnel entrevu pour l’instant), et est-ce coûteux ?

    Quelle est en fait, la pratique couramment utilisée pour placer ces appels ? Je n’ai rien trouvé de tel dans la doc.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Points : 1 738
    Points
    1 738
    Par défaut
    Bonjour,

    Je n'ai absolument pas compris pourquoi tu as besoin d'utiliser qRegisterMetaType, alors que tu hérites de QObject. Qu'est-ce que tu entends par "utiliser dans des signaux/slots" ? Un peu de code pour y voir plus clair ?

  3. #3
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    À vrai dire, moi non plus je ne comprends pas exactement pourquoi j’ai besoin de faire ça.

    Je passe par QMetaObject::invokeMethod() mais ça ne devrait pas influer. J’ai essayé de faire un exemple minimum qui reproduise le problème, mais… mon exemple minimum fonctionne parfaitement . Ce qui me fait donc dire qu’il y a probablement autre chose que je fais mal.

    Merci de ta réponse !

  4. #4
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Je me réponds à moi même, mais j’ai trouvé.

    Mon type Perso est dans un namespace, il faut donc utiliser partout (y compris dans la déclaration des signaux/slots) le nom complet pour éviter tout problème.

    Le pire est que ce n’est pas la première fois que j’ai le problème

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

Discussions similaires

  1. Mettre fin à un appel entrant
    Par geoffreybulle dans le forum Android
    Réponses: 1
    Dernier message: 06/06/2014, 10h42
  2. php : appeller un menu : comment le mettre en forme
    Par anxious dans le forum Langage
    Réponses: 1
    Dernier message: 03/06/2009, 18h09
  3. Réponses: 28
    Dernier message: 15/01/2009, 14h12
  4. Réponses: 2
    Dernier message: 15/07/2008, 16h11
  5. Réponses: 3
    Dernier message: 05/07/2008, 19h09

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