Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QMetaObject

La classe QMetaObject contient les m�ta-informations concernant les objets de Qt. Plus d'informations...

#include <QMetaObject>

Voir la position dans l'arbre des classes.

Description d�taill�e

La classe QMetaObject contient les m�ta-informations concernant les objets de Qt.

Le syst�me de m�ta-objets de Qt est responsable du m�canisme de communication inter-objet des signaux et des slots, des informations de type disponibles � l'ex�cution ainsi que du syst�me de propri�t�s de Qt. Une unique instance de QMetaObject est cr��e pour chaque sous-classe de QObject utilis�e dans l'application et cette instance stocke toutes les m�ta-informations de la sous-classe de QObject. Cet objet est utilisable par le biais de QObject::metaObject().

Cette classe n'est normalement pas n�cessaire � la programmation d'applications, mais est tr�s utile dans le cas de l'�criture de m�ta-applications, telles que les moteurs de scripts ou les constructeurs de GUI.

Les fonctions les plus susceptibles d'�tre consid�r�es comme tr�s utiles sont les suivantes :

Les fonctions d'index indexOfConstructor(), indexOfMethod(), indexOfEnumerator() et indexOfProperty() font r�f�rence aux index dans le m�ta-objet des noms des constructeurs, des fonctions membres, des �num�rateurs et des propri�t�s. Par exemple, Qt utilise indexOfMethod() quand vous connectez un signal � un slot.

Les classes peuvent aussi avoir une liste de paires nom/valeur d'informations de classes additionnelles, stock�es dans des objets de QMetaClassInfo. Le nombre de paires est retourn� par classInfoCount(), les paires uniques sont retourn�es par classInfo et vous pouvez chercher des paires avec indexOfClassInfo().

Voir aussi QMetaClassInfo, QMetaEnum, QMetaMethod, QMetaProperty, QMetaType et Le syst�me de m�ta-objets.

Fonctions membres

bool QMetaObject::checkConnectArgs ( const char * signal, const char * methode ) [static]

Retourne true si le signal et la methode sont compatibles ; sinon retourne false.

signal et methode sont suppos�s �tre normalis�s.

Voir aussi normalizedSignature().

QMetaClassInfo QMetaObject::classInfo ( int index ) const

Retourne la m�ta-donn�e pour l'�l�ment de l'information de classe avec l‹index donn�.

Exemple :

 class MyClass
 {
     Q_OBJECT
     Q_CLASSINFO("auteur", "Sabrina Schweinsteiger")
     Q_CLASSINFO("url", "http://doc.moosesoft.co.uk/1.0/")
 
 public:
     ...
 };

Voir aussi classInfoCount(), classInfoOffset() et indexOfClassInfo().

int QMetaObject::classInfoCount () const

Retourne le nombre d'�l�ments de l'information de classe dans cette classe.

Voir aussi classInfo(), classInfoOffset() et indexOfClassInfo().

int QMetaObject::classInfoOffset () const

Retourne l'offset de l'information de classe de cette classe ; c'est-�-dire la position d'index du premier �l�ment de l'information de classe.

Si la classe n'a pas de superclasse ayant une information de classe, l'offset est 0 ; dans le cas contraire, l'offset est la somme de tous les �l�ments de l'information de classe des superclasses de la classe.

Voir aussi classInfo(), classInfoCount() et indexOfClassInfo().

const char * QMetaObject::className () const

Retourne le nom de classe.

Voir aussi superClass().

void QMetaObject::connectSlotsByName ( QObject * objet ) [static]

Cherche r�cursivement tous les objets enfants de l‹objet donn� et connecte depuis ceux-ci les signaux identifi�s � des slots de l‹objet qui suivent la forme suivante :

void on_<nom de l'objet>_<nom du signal>(<param�tres du signal>);

Supposons que notre objet poss�de un objet enfant du type de QPushButton avec le nom d'objet bouton1. Le slot permettant la capture du signal clicked() du bouton serait :

void on_bouton1_clicked();

Voir aussi QObject::setObjectName().

QMetaMethod QMetaObject::constructor ( int index ) const

Retourne la m�ta-donn�e pour le constructeur ayant l‹index donn�.

Cette fonction a �t� introduite dans Qt 4.5.

Voir aussi constructorCount() et newInstance().

int QMetaObject::constructorCount () const

Retourne le nombre de constructeurs que contient cette classe.

Cette fonction a �t� introduite dans Qt 4.5.

Voir aussi constructor() et indexOfConstructor().

QMetaEnum QMetaObject::enumerator ( int index ) const

Retourne la m�ta-donn�e pour l'�num�rateur ayant l‹index donn�.

Voir aussi enumeratorCount(), enumeratorOffset() et indexOfEnumerator().

int QMetaObject::enumeratorCount () const

Retourne le nombre d'�num�rateurs pr�sents dans cette classe.

Voir aussi enumerator(), enumeratorOffset() et indexOfEnumerator().

int QMetaObject::enumeratorOffset () const

Retourne l'offset des �num�rateurs de cette classe ; c'est-�-dire la position d'index du premier �num�rateur de la classe.

Si la classe n'a pas de superclasse ayant des �num�rateurs, l'offset sera 0 ; dans le cas contraire, l'offset sera la somme de tous les �num�rateurs des superclasses de la classe.

Voir aussi enumerator(), enumeratorCount() et indexOfEnumerator().

int QMetaObject::indexOfClassInfo ( const char * nom ) const

Trouve le nom de l'�l�ment de l'information de classe et retourne son index ; dans le cas contraire, retourne -1.

Voir aussi classInfo(), classInfoCount() et classInfoOffset().

int QMetaObject::indexOfConstructor ( const char * constructeur ) const

Trouve le constructeur et retourne son index ; dans le cas contraire, retourne -1.

Notez que le constructeur doit �tre dans une forme normalis�e, comme retourn� par normalizedSignature().

Cette fonction a �t� introduite dans Qt 4.5.

Voir aussi constructor(), constructorCount() et normalizedSignature().

int QMetaObject::indexOfEnumerator ( const char * nom ) const

Trouve l'�num�rateur nom et retourne son index ; dans le cas contraire, retourne -1.

Voir aussi enumerator(), enumeratorCount() et enumeratorOffset().

int QMetaObject::indexOfMethod ( const char * methode ) const

Trouve le terme methode et retourne son index ; dans le cas contraire, retourne -1.

Notez que la methode doit �tre dans une forme normalis�e, comme retourn�e par normalizedSignature().

Voir aussi method(), methodCount(), methodOffset() et normalizedSignature().

int QMetaObject::indexOfProperty ( const char * nom ) const

Trouve la propri�t� nom et retourne son index ; dans le cas contraire, retourne -1.

Voir aussi property(), propertyCount() et propertyOffset().

int QMetaObject::indexOfSignal ( const char * signal ) const

Trouve le signal et retourne son index ; dans le cas contraire, retourne -1.

Cette fonction est identique � indexOfMethod(), mis � part qu'elle retourne -1 si la m�thode existe, mais ne correspond pas � un signal.

Notez que le signal doit �tre dans une forme normalis�e, comme retourn� par normalizedSignature().

Voir aussi indexOfMethod(), normalizedSignature(), method(), methodCount() et methodOffset().

int QMetaObject::indexOfSlot ( const char * slot ) const

Trouve le slot et retourne son index ; dans le cas contraire, retourne -1.

Cette fonction est identique � indexOfMethod(), mis � part qu'elle retourne -1 si la m�thode existe, mais ne correspond pas � un slot.

Voir aussi indexOfMethod(), method(), methodCount() et methodOffset().

bool QMetaObject::invokeMethod ( QObject * obj, const char * membre, Qt::ConnectionType type, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) [static]

Invoque le membre (un nom de signal ou de slot) sur l'objet obj. Retourne true si le membre peut �tre invoqu�. Retourne false s'il n'existe pas de tel membre ou si les param�tres ne correspondent pas.

L'invocation peut �tre synchrone ou asynchrone, selon le type :

  • si type est Qt::DirectConnection, le membre sera invoqu� imm�diatement ;
  • si type est Qt::QueuedConnection, un QEvent sera envoy� et le membre sera invoqu� d�s que l'application entrera dans la boucle d'�v�nements principale ;
  • si type est Qt::BlockingQueuedConnection, la m�thode sera invoqu�e de la m�me mani�re que Qt::QueuedConnection, mis � part le fait que le thread actuel va bloquer jusqu'� ce que l'�v�nement soit d�livr� ; l'utilisation de ce type de connexion pour communiquer entre des objets du m�me thread m�nera � des blocages ;
  • si type est Qt::AutoConnection, le membre sera invoqu� de mani�re synchrone si obj vit dans le m�me thread que l'appelant ; dans le cas contraire, il appellera le membre de mani�re asynchrone.

La valeur de retour de l'appel de la fonction membre est plac�e dans ret. Si l'invocation est asynchrone, la valeur de retour ne peut pas �tre �valu�e. Vous pouvez passer un maximum de dix arguments (val0, val1, val2, val3, val4, val5, val6, val7, val8 et val9) � la fonction membre.

QGenericArgument et QGenericReturnArgument sont des classes d'assistance internes. Pour la m�me raison que les signaux et les slots peuvent �tre invoqu�s dynamiquement, vous devez joindre les arguments en utilisant les macros Q_ARG() et Q_RETURN_ARG(). Q_ARG() prend un nom de type et une r�f�rence constante de ce type ; Q_RETURN_ARG() prend un nom de type et une r�f�rence non constante.

Vous devez uniquement passer le nom du signal ou du slot � cette fonction, et non la signature enti�re. Par exemple, pour invoquer de mani�re asynchrone le slot QAbstractButton::animateClick() d'un QPushButton, vous pouvez utiliser le code suivant :

 QMetaObject::invokeMethod(pushButton, "animateClick",
                           Qt::QueuedConnection);

Avec des m�thodes asynchrones d'invocation, les param�tres doivent �tre de types connus du syst�me de m�ta-objets de Qt, car Qt a besoin de copier les arguments pour les stocker dans un �v�nement derri�re les coulisses. Si vous tentez d'utiliser une connexion par file d'attente et que vous r�cup�rez ce message d'erreur :

QMetaObject::invokeMethod: Unable to handle unregistered datatype 'MyType'

Appelez QMetaType::qRegisterMetaType() pour enregistrer les informations de type avant d'appeler invokeMethod().

Pour invoquer de mani�re synchrone le slot compute(QString, int, double) sur un obj arbitraire pour retourner sa valeur de retour :

 QString retVal;
 QMetaObject::invokeMethod(obj, "compute", Qt::DirectConnection,
                           Q_RETURN_ARG(QString, retVal),
                           Q_ARG(QString, "sqrt"),
                           Q_ARG(int, 42),
                           Q_ARG(double, 9.7));

Si le slot compute ne prend pas exactement un QString, un int et un double dans l'ordre sp�cifi�, l'appel �chouera.

Voir aussi Q_ARG(), Q_RETURN_ARG(), qRegisterMetaType() et QMetaMethod#invoke().

bool QMetaObject::invokeMethod ( QObject * obj, const char * membre, QGenericReturnArgument ret, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) [static]

Cette fonction surcharge invokeMethod().

Cette surcharge invoque toujours le membre en utilisant le type de connexion Qt::AutoConnection.

bool QMetaObject::invokeMethod ( QObject * obj, const char * membre, Qt::ConnectionType type, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) [static]

Cette fonction surcharge invokeMethod().

Cette surcharge peut �tre utilis�e si la valeur de retour n'est d'aucun int�r�t.

bool QMetaObject::invokeMethod ( QObject * obj, const char * membre, QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) [static]

Cette fonction surcharge invokeMethod().

Cette surcharge invoque le membre en utilisant le type de connexion Qt::AutoConnection et ignore les valeurs de retour.

QMetaMethod QMetaObject::method ( int index ) const

Retourne la m�tadonn�e pour la m�thode ayant l‹index donn�.

Voir aussi methodCount(), methodOffset() et indexOfMethod().

int QMetaObject::methodCount () const

Retourne le nombre de m�thodes que poss�de cette classe, incluant le nombre de propri�t�s fournies par chaque classe m�re. Ils incluent aussi bien les signaux et les slots que les fonctions membres normales.

Utilisez un code tel que le suivant pour obtenir une QStringList contenant les m�thodes sp�cifiques � chaque classe donn�e :

 const QMetaObject* metaObject = obj->metaObject();
 QStringList methods;
 for(int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i)
     methods << QString::fromLatin1(metaObject->method(i).signature());

Voir aussi method(), methodOffset() et indexOfMethod().

int QMetaObject::methodOffset () const

Retourne l'offset des m�thodes de cette classe ; c'est-�-dire la position d'index de la premi�re m�thode de la classe.

L'offset est la somme de toutes les m�thodes des superclasses de la classe (qui est toujours positive depuis que QObject poss�de le slot deleteLater() et le signal destroyed()).

Voir aussi method(), methodCount() et indexOfMethod().

QObject * QMetaObject::newInstance ( QGenericArgument val0 = QGenericArgument( 0 ), QGenericArgument val1 = QGenericArgument(), QGenericArgument val2 = QGenericArgument(), QGenericArgument val3 = QGenericArgument(), QGenericArgument val4 = QGenericArgument(), QGenericArgument val5 = QGenericArgument(), QGenericArgument val6 = QGenericArgument(), QGenericArgument val7 = QGenericArgument(), QGenericArgument val8 = QGenericArgument(), QGenericArgument val9 = QGenericArgument() ) const

Construit une nouvelle instance de cette classe. Vous pouvez passer un maximum de dix arguments (val0, val1, val2, val3, val4, val5, val6, val7, val8 et val9) au constructeur. Retourne le nouvel objet, ou 0 si aucun constructeur appropri� n'est disponible.

Notez que seuls les constructeurs d�clar�s avec le modificateur Q_INVOKABLE sont rendus disponibles � travers le syst�me de m�ta-objets.

Cette fonction a �t� introduite dans Qt 4.5.

Voir aussi Q_ARG() et constructor().

QByteArray QMetaObject::normalizedSignature ( const char * methode ) [static]

Normalise la signature de la methode donn�e.

Qt utilise des signatures normalis�es pour d�terminer si deux signaux et slots donn�s sont compatibles. La normalisation r�duit les espaces au minimum, d�place les mentions const vers l'avant quand appropri�, supprime la mention const des types de valeurs et remplace les r�f�rences constantes par des valeurs.

Voir aussi checkConnectArgs() et normalizedType().

QByteArray QMetaObject::normalizedType ( const char * type ) [static]

Normalise un type.

Voir QMetaObject::normalizedSignature() pour une description sur la m�thode de normalisation de Qt.

Exemple :

 QByteArray normType = QMetaObject::normalizedType(" int    const  *");
 // normType est maintenant "const int*"

Cette fonction a �t� introduite dans Qt 4.2.

Voir aussi normalizedSignature().

QMetaProperty QMetaObject::property ( int index ) const

Retourne la m�tadonn�e pour la propri�t� ayant l‹index donn�. Si aucune telle propri�t� n'existe, un QMetaProperty nul est retourn�.

Voir aussi propertyCount(), propertyOffset() et indexOfProperty().

int QMetaObject::propertyCount () const

Retourne le nombre de propri�t�s pr�sentes dans cette classe, incluant le nombre de propri�t�s fournies par chaque classe parente.

Utilisez un code tel que le suivant pour r�cup�rer une QStringList contenant les propri�t�s sp�cifiques � une classe donn�e :

 const QMetaObject* metaObject = obj->metaObject();
 QStringList properties;
 for(int i = metaObject->propertyOffset(); i < metaObject->propertyCount(); ++i)
     properties << QString::fromLatin1(metaObject->property(i).name());

Voir aussi property(), propertyOffset() et indexOfProperty().

int QMetaObject::propertyOffset () const

Retourne l'offset des propri�t�s de cette classe ; c'est-�-dire la position d'index de la premi�re propri�t� de la classe.

L'offset est la somme de toutes les propri�t�s des superclasses de la classe (qui est toujours positive depuis que QObject poss�de la propri�t� name()).

Voir aussi property(), propertyCount() et indexOfProperty().

const QMetaObject * QMetaObject::superClass () const

Retourne le m�ta-objet de la superclasse, ou 0 s'il n'existe pas de tel objet.

Voir aussi className().

QMetaProperty QMetaObject::userProperty () const

Retourne la propri�t� qui d�tient le flag USER d�fini � true.

Cette fonction a �t� introduite dans Qt 4.2.

Voir aussi QMetaProperty::isUser().

Macros

Q_ARG

QGenericArgument Q_ARG ( Type, const Type & valeur )

Cette macro prend un Type, une valeur de ce type et retourne un objet de QGenericArgument qui peut �tre pass� � QMetaObject::invokeMethod().

Voir aussi Q_RETURN_ARG().

Q_RETURN_ARG

QGenericReturnArgument Q_RETURN_ARG ( Type, Type & valeur )

Cette macro prend un Type et une r�f�rence non constante d'une valeur de ce type et retourne un objet de QGenericReturnArgument qui peut �tre pass� � QMetaObject::invokeMethod().

Voir aussi Q_ARG().

Remerciements

Merci � Louis du Verdier pour la traduction et � Thibaut Cuvelier, Jonathan Courtois ainsi qu'� Jacques Thery pour leur relecture !

Publicit�

Best Of

Actualit�s les plus lues

Semaine
Mois
Ann�e
  1. � Quelque chose ne va vraiment pas avec les d�veloppeurs "modernes" �, un d�veloppeur � "l'ancienne" critique la multiplication des biblioth�ques 80
  2. Apercevoir la troisi�me dimension ou l'utilisation multithread�e d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Les d�veloppeurs ignorent-ils trop les failles d�couvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  4. BlackBerry 10 : premi�res images du prochain OS de RIM qui devrait int�grer des widgets et des tuiles inspir�es de Windows Phone 0
  5. Quelles nouveaut�s de C++11 Visual C++ doit-il rapidement int�grer ? Donnez-nous votre avis 10
  6. Adieu qmake, bienvenue qbs : Qt Building Suite, un outil d�claratif et extensible pour la compilation de projets Qt 17
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 6
Page suivante

Le Qt Developer Network au hasard

Logo

Combiner licence, � propos et fermer d'une derni�re mani�re

Le Qt Developer Network est un r�seau de d�veloppeurs Qt anglophone, o� ils peuvent partager leur exp�rience sur le framework. Lire l'article.

Communaut�

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la r�daction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, �crite par Nokia Corporation and/or its subsidiary(-ies). Les �ventuels probl�mes r�sultant d'une mauvaise traduction ne sont pas imputables � Nokia. Qt 4.7
Copyright © 2012 Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'� 3 ans de prison et jusqu'� 300 000 E de dommages et int�r�ts. Cette page est d�pos�e � la SACD.
Vous avez d�nich� une erreur ? Un bug ? Une redirection cass�e ? Ou tout autre probl�me, quel qu'il soit ? Ou bien vous d�sirez participer � ce projet de traduction ? N'h�sitez pas � nous contacter ou par MP !
 
 
 
 
Partenaires

H�bergement Web