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 :

Signaux Qt et boost::signals avec Visual


Sujet :

Qt

  1. #1
    Membre habitué Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 171
    Points
    171
    Par défaut Signaux Qt et boost::signals avec Visual
    Bonjour,

    Je rencontre actuellement un problème de conflit entre les signaux de boost et ceux de Qt. Alors, jusque là, le tutoriel de Denys Bulant m'a très bien renseigné à ce sujet, mais le souci est que j'utilise Visual Studio, et que les projets Qt réalisés via le plugin d'intégration n'utilisent pas de fichier .pro.

    Je souhaiterais donc savoir si quelqu'un a déjà effectué cette manipulation, à savoir d'ajouter l'option "no_keywords" à Qt, sans passer par un fichier pro.

    Je suis allé fouillé un petit peu dans le code de Qt, tout ce que j'ai trouvé c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # if defined(QT_NO_KEYWORDS)
    #  define QT_NO_EMIT
    # else
    #   define slots
    #   define signals protected
    # endif
    # define Q_SLOTS
    # define Q_SIGNALS protected
    # define Q_PRIVATE_SLOT(d, signature)
    # define Q_EMIT
    Cela m'a donné l'idée d'ajouter cette fameuse Macro QT_NO_EMIT à mes définitions de projet, mais cela ne suffit pas, je sollicite donc un petit coup de main

    Merci d'avance pour l'aide apportée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour, tu as séléctionné la mauvaise portion de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    # if defined(QT_NO_KEYWORDS)
    #  define QT_NO_EMIT
    # else
    #   define slots
    #   define signals protected
    # endif
    # define Q_SLOTS
    # define Q_SIGNALS protected
    # define Q_PRIVATE_SLOT(d, signature)
    # define Q_EMIT
    #ifndef QT_NO_EMIT
    # define emit
    #endif
    Qu'est ce que cela veut dire ? Si on ajoute dans le .pro la commande no_keywords, alors la constante de pré-processeur QT_NO_KEYWORDS sera définit, et les constantes de pré-processeur slots et signals protected ne seront pas définis. Par la même occasion, la constante de pré-processeur QT_NO_EMIT sera définit, alors la constante de pré-processeur emit, ne sera pas définit.

    En gros si QT_NO_KEYWORDS, n'est pas définit (on n'a pas spécialiser no_keywords), signal, emit, foreach etc... seront définit. Mais le savais-tu ? Ce sont juste les mot-clé design qui deviendrons inefficace dans ton code source.

    C'est pour ça qu'il existe d'autres constantes, qui eux ne pourront ne jamais être supprimé implicitement :

    signal = > Q_SIGNAL
    slots = > Q_SLOTS
    emit => Q_EMIT
    foreach => Q_FOREACH
    etc...

    Donc pour conclure, c'est QT_NO_KEYWORDS que tu dois définir depuis la configuration de VS.
    Dernière modification par johnlamericain ; 19/08/2011 à 22h48.

  3. #3
    Membre habitué Avatar de Furr
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 153
    Points : 171
    Points
    171
    Par défaut
    Alors oui, j'avais le bon bout de code, mais en effet je n'ai pas compris ce qu'il fallait à l'intérieur

    La définition QT_NO_KEYWORDS est bien celle qu'il me fallait ajouter, un grand merci pour ta réponse très claire, le conflit est bel est bien résolu !

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

Discussions similaires

  1. boost filesystem avec Visual C++ 7
    Par tlemcenvisit dans le forum Boost
    Réponses: 1
    Dernier message: 08/11/2008, 11h10
  2. [BOOST] utilisation de boost uBLAS non compile avec visual c++
    Par le_voisin dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 06/09/2006, 22h03
  3. boost - Probleme avec compilateur C++ de visual studio 2005
    Par gilles641 dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 24/01/2006, 19h03

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