QMetaObjectLa 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�eLa 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 membresbool 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 ) constRetourne la m�ta-donn�e pour l'�l�ment de l'information de classe avec lindex 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 () constRetourne le nombre d'�l�ments de l'information de classe dans cette classe. Voir aussi classInfo(), classInfoOffset() et indexOfClassInfo(). int QMetaObject::classInfoOffset () constRetourne 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 () constRetourne le nom de classe. Voir aussi superClass(). void QMetaObject::connectSlotsByName ( QObject * objet ) [static]Cherche r�cursivement tous les objets enfants de lobjet donn� et connecte depuis ceux-ci les signaux identifi�s � des slots de lobjet 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 ) constRetourne la m�ta-donn�e pour le constructeur ayant lindex donn�. Cette fonction a �t� introduite dans Qt 4.5. Voir aussi constructorCount() et newInstance(). int QMetaObject::constructorCount () constRetourne 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 ) constRetourne la m�ta-donn�e pour l'�num�rateur ayant lindex donn�. Voir aussi enumeratorCount(), enumeratorOffset() et indexOfEnumerator(). int QMetaObject::enumeratorCount () constRetourne le nombre d'�num�rateurs pr�sents dans cette classe. Voir aussi enumerator(), enumeratorOffset() et indexOfEnumerator(). int QMetaObject::enumeratorOffset () constRetourne 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 ) constTrouve 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 ) constTrouve 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 ) constTrouve 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 ) constTrouve 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 ) constTrouve 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 ) constTrouve 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 ) constTrouve 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 :
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 ) constRetourne la m�tadonn�e pour la m�thode ayant lindex donn�. Voir aussi methodCount(), methodOffset() et indexOfMethod(). int QMetaObject::methodCount () constRetourne 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 () constRetourne 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() ) constConstruit 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 ) constRetourne la m�tadonn�e pour la propri�t� ayant lindex donn�. Si aucune telle propri�t� n'existe, un QMetaProperty nul est retourn�. Voir aussi propertyCount(), propertyOffset() et indexOfProperty(). int QMetaObject::propertyCount () constRetourne 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 () constRetourne 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 () constRetourne le m�ta-objet de la superclasse, ou 0 s'il n'existe pas de tel objet. Voir aussi className(). QMetaProperty QMetaObject::userProperty () constRetourne 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(). MacrosQ_ARGQGenericArgument 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_ARGQGenericReturnArgument 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(). RemerciementsMerci � Louis du Verdier pour la traduction et � Thibaut Cuvelier, Jonathan Courtois ainsi qu'� Jacques Thery pour leur relecture ! |
Publicit�
Best OfActualit�s les plus luesSemaine
Mois
Ann�e
![]()
![]() Le Qt Developer Network au hasard![]() Combiner licence, � propos et fermer d'une derni�re mani�reLe 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 utilesContact
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 ! |
Copyright © 2000-2012 - www.developpez.com