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 :

De QObject aux méta-objets, une plongée au cœur des fondations de Qt [Tutoriel]


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut De QObject aux méta-objets, une plongée au cœur des fondations de Qt
    Bonjour à tous,

    Les fondations de Qt constituent un sujet intéressant dans le cadre de son apprentissage. Sur quoi s’appuie réellement le framework ? Quel est son modèle objet ? Dans la majorité des cas, les développeurs utilisant Qt pour développer des interfaces graphiques ne savent pas y répondre, et c’est pour cela que j’ai décidé de rédiger un article sur ces fondations.

    Cet article a pour but de traiter de QObject jusqu’aux méta-objets pour permettre à tous de mieux comprendre sur quoi est véritablement fondé Qt. L’introspection, les propriétés, les signaux, les slots et les méta-objets constituent pour vous un domaine inexploré ? L’occasion est venue d'y remédier.

    De QObject aux méta-objets, une plongée au cœur des fondations de Qt

    Attendiez-vous un tel article ? Vous a-t-il aidé ? N’hésitez pas à commenter !
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu as fait un superbe article Amnell, Bravo !

    Personnellement, tu m'as appris pas mal de chose, ce que je retiens surtout, c'est le système de méta-objets.

    Bon maintenant, est ce que ça va vraiment m'être utile ? Pas tant que ça, ce sont juste des connaissances en plus.

    Cependant, deux petites questions :

    Quand on utilise le compilateur de méta-objets (moc), si notre classe définit des méthodes templates dans les fichiers d'en-tête, est ce qu'elles sont toujours valable ?

    N'y aurait-t-il pas une erreur renvoyé par le compilateur C++, vu que ces méthodes "particulières" doivent être dans les en-têtes, et que le moc les transformes en fichiers avec l'extension .cpp ?

    Merci pour cet article Amnell. Bonne continuation.

  3. #3
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Salut,

    Tout d'abord, merci du commentaire.
    Je vais à la suite répondre à tes deux questions :

    Citation Envoyé par Abdelite Voir le message
    Quand on utilise le compilateur de méta-objets (moc), si notre classe définit des méthodes templates dans les fichiers d'en-tête, est ce qu'elles sont toujours valable ?
    Le moc n'empêche pas l'utilisation des templates (comment fonctionnerait QList, par exemple, si c'était le cas ?), mais prive une classe template des signaux et des slots. Je t'invite à consulter cette page pour avoir la liste complète des restrictions que cause le moc.

    Citation Envoyé par Abdelite Voir le message
    N'y aurait-t-il pas une erreur renvoyé par le compilateur C++, vu que ces méthodes "particulières" doivent être dans les en-têtes, et que le moc les transformes en fichiers avec l'extension .cpp ?
    Depuis quand les fonctions template doivent-elle forcément être implémentées dans la déclaration de classe ? Ou peut-être parlais-tu d'autres fonctions ?
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je n'ai pas parlé des fonctions "globale" templates, encore moins des classes templates, mais des méthodes templates.

    Elles doivent être entièrement définis (prototype + corp) dans l'en-tête.
    Comme les fonctions templates tout cour, on ne les places pas dans les .cpp

  5. #5
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Une déclaration de classe template avec dedans une méthode template (fichier header) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template <typename T>
    class MyClass
    {
    	public:
    	//...
    	T method() const; 
    };
    Et l'implémentation dans un fichier .cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template<typename T>
    T MyClass<T>::method() const
    {
    	// ...
    }
    N'y aurait-t-il pas une erreur renvoyé par le compilateur C++, vu que ces méthodes "particulières" doivent être dans les en-têtes, et que le moc les transformes en fichiers avec l'extension .cpp ?
    Comme le code donné ci-dessus fonctionne sans problème, il n'y a strictement aucun soucis, pour répondre à ta question.

    EDIT : Mais je pense qu'il n'y a aucun lien entre mon explication (sans doute erronée) et le système.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse Amnell, tout est clair à présent, bonne continuation.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/11/2010, 10h13
  2. Méta-données attachées aux fichiers sur une partition ext2 ?
    Par Hibou57 dans le forum Administration système
    Réponses: 2
    Dernier message: 21/11/2007, 14h53
  3. [FLASH MX 2004] Acceder aux variables d'une Popup
    Par freegreg dans le forum Flash
    Réponses: 3
    Dernier message: 05/05/2004, 21h13

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