# qobject.h

This is the verbatim text of the qobject.h include file. It is is provided only for illustration; the copyright remains with Troll Tech.

    /****************************************************************************
    ** $Id: qobject.h,v 2.11.2.3 1998/10/19 12:08:19 eiriken Exp $
    **
    ** Definition of QObject class
    **
    ** Created : 930418
    **
    ** Copyright (C) 1992-1999 Troll Tech AS.  All rights reserved.
    **
    ** This file is part of Qt Free Edition, version 1.45.
    **
    ** See the file LICENSE included in the distribution for the usage
    ** and distribution terms, or http://www.troll.no/free-license.html.
    **
    ** IMPORTANT NOTE: You may NOT copy this file or any part of it into
    ** your own programs or libraries.
    **
    ** Please see http://www.troll.no/pricing.html for information about
    ** Qt Professional Edition, which is this same library but with a
    ** license which allows creation of commercial/proprietary software.
    **
    *****************************************************************************/

    #ifndef QOBJECT_H
    #define QOBJECT_H

    #ifndef QT_H
    #include "qobjectdefs.h"
    #include "qstring.h"
    #include "qevent.h"
    #endif // QT_H

    class Q_EXPORT QObject                                  // base class for Q objects
    {
    public:
        QObject( QObject *parent=0, const char *name=0 );
        virtual ~QObject();

        virtual bool event( QEvent * );
        virtual bool eventFilter( QObject *, QEvent * );

        const char * tr( const char * ) const;

        virtual QMetaObject *metaObject() const { return metaObj; }
        virtual const char  *className()  const;

        bool        isA( const char * )      const;
        bool        inherits( const char * ) const;

        const char *name()            const { return objname; }
        const char *name( const char * defaultName ) const { return objname
                                                                 ? objname
                                                                 : defaultName; }

        void        setName( const char *name );
        bool        isWidgetType()    const { return isWidget; }
        bool        highPriority()    const { return hiPriority; }

        bool        signalsBlocked()  const { return blockSig; }
        void        blockSignals( bool b );

        int         startTimer( int interval );
        void        killTimer( int id );
        void        killTimers();

        const QObjectList *children() const { return childObjects; }
        QObjectList       *queryList( const char *inheritsClass = 0,
                                      const char *objName = 0,
                                      bool regexpMatch = TRUE,
                                      bool recursiveSearch = TRUE );

        void        insertChild( QObject * );
        void        removeChild( QObject * );

        void        installEventFilter( const QObject * );
        void        removeEventFilter( const QObject * );

        static bool connect( const QObject *sender, const char *signal,
                             const QObject *receiver, const char *member );
        bool        connect( const QObject *sender, const char *signal,
                             const char *member ) const;
        static bool disconnect( const QObject *sender, const char *signal,
                                const QObject *receiver, const char *member );
        bool        disconnect( const char *signal=0,
                                const QObject *receiver=0, const char *member=0 );
        bool        disconnect( const QObject *receiver, const char *member=0 );

        void        dumpObjectTree();
        void        dumpObjectInfo();

    signals:
        void        destroyed();

    public:
        QObject     *parent() const { return parentObj; }

    protected:
        bool        activate_filters( QEvent * );
        QConnectionList *receivers( const char *signal ) const;
        void        activate_signal( const char *signal );
        void        activate_signal( const char *signal, short );
        void        activate_signal( const char *signal, int );
        void        activate_signal( const char *signal, long );
        void        activate_signal( const char *signal, const char * );
        const QObject *sender();

        virtual void initMetaObject();

        virtual void timerEvent( QTimerEvent * );

        virtual void connectNotify( const char *signal );
       virtual void disconnectNotify( const char *signal );
        virtual bool checkConnectArgs( const char *signal, const QObject *receiver,
                                       const char *member );

        static  void badSuperclassWarning( const char *className,
                                           const char *superclassName );

        uint        isSignal   : 1;
        uint        isWidget   : 1;
        uint        hiPriority : 1;
        uint        pendTimer  : 1;
        uint        pendEvent  : 1;
        uint        blockSig   : 1;

    private slots:
        void        cleanupEventFilter();

    private:
        QMetaObject *queryMetaObject() const;
        static QMetaObject *metaObj;
        char        *objname;
        QObject     *parentObj;
        QObjectList *childObjects;
        QSignalDict *connections;
        QObjectList *senderObjects;
        QObjectList *eventFilters;
        QObject     *sigSender;

        friend class QApplication;
        friend class QWidget;
        friend class QSignal;
        friend class QSenderObject;

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

    inline bool QObject::connect( const QObject *sender, const char *signal,
                                  const char *member ) const
    {
        return connect( sender, signal, this, member );
    }

    inline bool QObject::disconnect( const char *signal,
                                     const QObject *receiver, const char *member )
    {
        return disconnect( this, signal, receiver, member );
    }

    inline bool QObject::disconnect( const QObject *receiver, const char *member )
    {
        return disconnect( this, 0, receiver, member );
    }

    inline const QObject *QObject::sender()
    {
        return sigSender;
    }

    class Q_EXPORT QSenderObject : public QObject           // object for sending signals
    {
    public:
        void setSender( QObject *s ) { sigSender=s; }
    };

    #endif // QOBJECT_H