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  ·  Classes  ·  Annotées  ·  Hiérarchie  ·  Fonctions  ·  Structure  · 

qmetaobject.h


This is the verbatim text of the qmetaobject.h include file. It is provided only for illustration; the copyright remains with Trolltech.
/****************************************************************************
** $Id: //depot/qt/main/src/kernel/qmetaobject.h#27 $
**
** Definition of QMetaObject class
**
** Created : 930419
**
** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
**
** This file is part of the kernel module of the Qt GUI Toolkit.
**
** This file may be distributed under the terms of the Q Public License
** as defined by Trolltech AS of Norway and appearing in the file
** LICENSE.QPL included in the packaging of this file.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
** licenses may use this file in accordance with the Qt Commercial License
** Agreement provided with the Software.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
**   information about Qt Commercial License Agreements.
** See http://www.trolltech.com/qpl/ for QPL licensing information.
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/

#ifndef QMETAOBJECT_H
#define QMETAOBJECT_H

#ifndef QT_H
#include "qconnection.h"
#include "qstrlist.h"
#endif // QT_H

class QObject;

struct QMetaData                                // - member function meta data
{                                               //   for signal and slots
    const char *name;                           // - member name
    QMember ptr;                                // - member pointer
    enum Access { Private, Protected, Public };
    /* ### add this in 3.0
       Access access;                           // - access permission
    */
};


struct QMetaEnum                                // enumerator meta data
{                                               //  for properties
    QMetaEnum() { }
    ~QMetaEnum() { delete [] items; }
    const char *name;                           // - enumerator name
    uint count;                                 // - number of values
    struct Item                                 // - a name/value pair
    {
        const char *key;
        int value;
    };
    Item *items;                                // - the name/value pairs
    bool set;                                   // whether enum has to be treated as a set
};

#ifndef QT_NO_PROPERTIES
class Q_EXPORT QMetaProperty                    // property meta data
{
public:
    QMetaProperty();
    ~QMetaProperty();

    const char  *type() const { return t; }     // type of the property
    const char* name() const { return n; }      // name of the property

    bool writable() const;
    bool writeable() const;                     // ### remove in 3.0
    bool isValid() const;

    bool isSetType() const;
    bool isEnumType() const;
    QStrList enumKeys() const;                  // enumeration names

    int keyToValue( const char* key ) const;    // enum and set conversion functions
    const char* valueToKey( int value ) const;
    int keysToValue( const QStrList& keys ) const;
    QStrList valueToKeys( int value ) const;

    bool stored( QObject* ) const;
    bool designable() const;

    const char* t;
    const char* n;
    QMember     get;                            // get-function or 0 ( 0 indicates an error )
    QMember     set;                            // set-function or 0
    QMember     store;                          // store-function or 0
    QMember     reset;                          // reset-function or 0
    QMetaEnum   *enumData;                      // a pointer to the enum specification or 0

    enum Specification  { Unspecified, Class, Reference, Pointer, ConstCharStar };
    Specification gspec;                        // specification of the get-function
    Specification sspec;                        // specification of the set-function

    enum Flags  {
        UnresolvedEnum       = 0x00000001,
        UnresolvedSet        = 0x00000002,
        UnresolvedEnumOrSet  = 0x00000004,
        UnresolvedStored     = 0x00000008,
        UnresolvedDesignable = 0x00000010,
        NotDesignable        = 0x00000020,
        NotStored            = 0x00000040,
        StdSet               = 0x00000080 
    };

    bool testFlags( uint f ) const;
    void setFlags( uint f );
    void clearFlags( uint f );

private:
    uint flags;
};
#endif // QT_NO_PROPERTIES

struct QClassInfo                               // class info meta data
{
    const char* name;                           // - name of the info
    const char* value;                          // - value of the info
};

class QMetaObjectPrivate;

class Q_EXPORT QMetaObject                      // meta object class
{
public:
    QMetaObject( const char *class_name, const char *superclass_name,
                 QMetaData *slot_data,  int n_slots,
                 QMetaData *signal_data, int n_signals );
    QMetaObject( const char *class_name, const char *superclass_name,
                 QMetaData *slot_data,  int n_slots,
                 QMetaData *signal_data, int n_signals,
#ifndef QT_NO_PROPERTIES
                 QMetaProperty *prop_data, int n_props,
                 QMetaEnum *enum_data, int n_enums,
#endif
                 QClassInfo *class_info, int n_info );


    virtual ~QMetaObject();

    const char  *className()            const { return classname; }
    const char  *superClassName()       const { return superclassname; }

    QMetaObject *superClass()           const { return superclass; }

    bool        inherits( const char* clname ) const;

    int         numSlots( bool super = FALSE ) const;
    int         numSignals( bool super = FALSE ) const;

    QMetaData   *slot( int index, bool super = FALSE ) const;
    QMetaData   *signal( int index, bool super = FALSE ) const;

    QMetaData   *slot( const char *, bool super = FALSE ) const;
    QMetaData   *signal( const char *, bool super = FALSE ) const;

    QStrList    slotNames( bool super = FALSE ) const;
    QStrList    signalNames( bool super = FALSE ) const;

    int         numClassInfo( bool super = FALSE ) const;
    QClassInfo  *classInfo( int index, bool super = FALSE ) const;
    const char  *classInfo( const char* name, bool super = FALSE ) const;

#ifndef QT_NO_PROPERTIES
    const QMetaProperty *property( const char* name, bool super = FALSE ) const;
    QStrList            propertyNames( bool super = FALSE ) const;
    void                resolveProperty( QMetaProperty* prop );
#endif

    // static wrappers around constructors, necessary to work around a
    // Windows-DLL limitation: objects can only be deleted within a
    // DLL if they were actually created within that DLL.
    static QMetaObject  *new_metaobject( const char *, const char *,
                                        QMetaData *, int,
                                        QMetaData *, int,
#ifndef QT_NO_PROPERTIES
                                        QMetaProperty *prop_data, int n_props,
                                        QMetaEnum *enum_data, int n_enums,
#endif
                                        QClassInfo * class_info, int n_info );
    static QMetaObject  *new_metaobject( const char *, const char *,
                                        QMetaData *, int,
                                        QMetaData *, int );
    static QMetaData            *new_metadata( int );
    static QMetaData::Access            *new_metaaccess( int ); // ### remove in 3.0
    void set_slot_access( QMetaData::Access* );                 // ### remove in 3.0
    QMetaData::Access slot_access(int index, bool super = FALSE ); // ### remove in 3.0
    static QMetaEnum            *new_metaenum( int );
    static QMetaEnum::Item      *new_metaenum_item( int );
#ifndef QT_NO_PROPERTIES
    static QMetaProperty        *new_metaproperty( int );
#endif
    static QClassInfo           *new_classinfo( int );

private:
    QMemberDict         *init( QMetaData *, int );
    QMetaData           *mdata( int code, const char *, bool ) const;
    QMetaData           *mdata( int code, int index, bool super ) const;

    const char          *classname;                     // class name
    const char          *superclassname;                // super class name
    QMetaObject         *superclass;                    // super class meta object
    QMetaObjectPrivate  *d;                             // private data for...
    void                *reserved;                      // ...binary compatibility
    QMetaData           *slotData;                      // slot meta data
    QMemberDict         *slotDict;                      // slot dictionary
    QMetaData           *signalData;                    // signal meta data
    QMemberDict         *signalDict;                    // signal dictionary
    QMetaEnum           *enumerator( const char* name, bool super = FALSE ) const;

private:        // Disabled copy constructor and operator=
#if defined(Q_DISABLE_COPY)
    QMetaObject( const QMetaObject & );
    QMetaObject &operator=( const QMetaObject & );
#endif
};

#ifndef QT_NO_PROPERTIES
inline bool QMetaProperty::writable() const
{ return set != 0; }
inline bool QMetaProperty::writeable() const
{ return set != 0; }
inline bool QMetaProperty::testFlags( uint f ) const
{ return (flags & (uint)f) != (uint)0; }
inline bool QMetaProperty::isValid() const
{ return get != 0 && !testFlags( UnresolvedEnum | UnresolvedDesignable | UnresolvedStored ) ; }
inline bool QMetaProperty::isSetType() const
{ return ( enumData != 0 && enumData->set ); }
inline bool QMetaProperty::isEnumType() const
{ return ( enumData != 0 ); }
inline bool QMetaProperty::designable() const
{ return ( isValid() && set != 0 && !testFlags( NotDesignable | UnresolvedDesignable ) ); }
inline void QMetaProperty::setFlags( uint f )
{ flags |= (uint)f; }
inline void QMetaProperty::clearFlags( uint f )
{ flags &= ~(uint)f; }
#endif

// ### remove 3.0 (binary compatibility with Qt-2.0.2)
class Q_EXPORT QMetaObjectInit {
public:
    QMetaObjectInit(void(*)());
    static int init();
};

#endif // QMETAOBJECT_H

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 94
  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. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 42
  5. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  6. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 9
  7. Qt Commercial : Digia organise un webinar gratuit le 27 mars sur la conception d'interfaces utilisateur et d'applications avec le framework 0
Page suivante

Le Qt Quarterly au hasard

Logo

Écrire un périphérique personnalisé d'E/S

Qt Quarterly est la revue trimestrielle proposée par Nokia et à destination des développeurs Qt. Ces articles d'une grande qualité technique sont rédigés par des experts Qt. 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 2.3
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