Eneboo - Documentación para desarrolladores
|
00001 /**************************************************************************** 00002 ** $Id: qt/qobject.h 3.3.8 edited Jan 11 14:38 $ 00003 ** 00004 ** Definition of QObject class 00005 ** 00006 ** Created : 930418 00007 ** 00008 ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. 00009 ** 00010 ** This file is part of the kernel module of the Qt GUI Toolkit. 00011 ** 00012 ** This file may be distributed under the terms of the Q Public License 00013 ** as defined by Trolltech ASA of Norway and appearing in the file 00014 ** LICENSE.QPL included in the packaging of this file. 00015 ** 00016 ** This file may be distributed and/or modified under the terms of the 00017 ** GNU General Public License version 2 as published by the Free Software 00018 ** Foundation and appearing in the file LICENSE.GPL included in the 00019 ** packaging of this file. 00020 ** 00021 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition 00022 ** licenses may use this file in accordance with the Qt Commercial License 00023 ** Agreement provided with the Software. 00024 ** 00025 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00026 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00027 ** 00028 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 00029 ** information about Qt Commercial License Agreements. 00030 ** See http://www.trolltech.com/qpl/ for QPL licensing information. 00031 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 00032 ** 00033 ** Contact info@trolltech.com if any conditions of this licensing are 00034 ** not clear to you. 00035 ** 00036 **********************************************************************/ 00037 00038 #ifndef QOBJECT_H 00039 #define QOBJECT_H 00040 00041 #ifndef QT_H 00042 #include "qobjectdefs.h" 00043 #include "qwindowdefs.h" 00044 #include "qstring.h" 00045 #include "qevent.h" 00046 #include "qnamespace.h" 00047 #endif // QT_H 00048 00049 #define QT_TR_NOOP(x) (x) 00050 #define QT_TRANSLATE_NOOP(scope,x) (x) 00051 00052 class QMetaObject; 00053 class QVariant; 00054 class QMetaProperty; 00055 class QPostEventList; 00056 class QSenderObjectList; 00057 class QObjectPrivate; 00058 #ifndef QT_NO_USERDATA 00059 class QObjectUserData; 00060 #endif 00061 struct QUObject; 00062 00063 class Q_EXPORT QObject: public Qt 00064 { 00065 Q_OBJECT 00066 Q_PROPERTY( QCString name READ name WRITE setName ) 00067 00068 public: 00069 QObject( QObject *parent=0, const char *name=0 ); 00070 virtual ~QObject(); 00071 00072 #ifdef Q_QDOC 00073 virtual const char *className() const; 00074 static QString tr( const char *, const char * ); 00075 static QString trUtf8( const char *, const char * ); 00076 virtual QMetaObject *metaObject() const; 00077 #endif 00078 00079 virtual bool event( QEvent * ); 00080 virtual bool eventFilter( QObject *, QEvent * ); 00081 00082 bool isA( const char * ) const; 00083 bool inherits( const char * ) const; 00084 00085 const char *name() const; 00086 const char *name( const char * defaultName ) const; 00087 00088 virtual void setName( const char *name ); 00089 bool isWidgetType() const { return isWidget; } 00090 bool highPriority() const { return FALSE; } 00091 00092 bool signalsBlocked() const { return blockSig; } 00093 void blockSignals( bool b ); 00094 00095 int startTimer( int interval ); 00096 void killTimer( int id ); 00097 void killTimers(); 00098 00099 QObject *child( const char *objName, const char *inheritsClass = 0, bool recursiveSearch = TRUE ); //### const in 4.0 00100 const QObjectList *children() const { return childObjects; } 00101 00102 static const QObjectList *objectTrees(); 00103 00104 QObjectList *queryList( const char *inheritsClass = 0, 00105 const char *objName = 0, 00106 bool regexpMatch = TRUE, 00107 bool recursiveSearch = TRUE ) const; 00108 00109 virtual void insertChild( QObject * ); 00110 virtual void removeChild( QObject * ); 00111 00112 void installEventFilter( const QObject * ); 00113 void removeEventFilter( const QObject * ); 00114 00115 static bool connect( const QObject *sender, const char *signal, 00116 const QObject *receiver, const char *member ); 00117 bool connect( const QObject *sender, const char *signal, 00118 const char *member ) const; 00119 static bool disconnect( const QObject *sender, const char *signal, 00120 const QObject *receiver, const char *member ); 00121 bool disconnect( const char *signal=0, 00122 const QObject *receiver=0, const char *member=0 ); 00123 bool disconnect( const QObject *receiver, const char *member=0 ); 00124 static void connectInternal( const QObject *sender, int signal_index, 00125 const QObject *receiver, int membcode, int member_index ); 00126 static bool disconnectInternal( const QObject *sender, int signal_index, 00127 const QObject *receiver, int membcode, int member_index ); 00128 00129 void dumpObjectTree(); 00130 void dumpObjectInfo(); 00131 00132 #ifndef QT_NO_PROPERTIES 00133 virtual bool setProperty( const char *name, const QVariant& value ); 00134 virtual QVariant property( const char *name ) const; 00135 #endif // QT_NO_PROPERTIES 00136 #ifdef QT_NO_TRANSLATION 00137 static QString tr( const char *sourceText, const char * = 0); 00138 #ifndef QT_NO_TEXTCODEC 00139 static QString trUtf8( const char *sourceText, const char * = 0); 00140 #endif 00141 #endif //QT_NO_TRANSLATION 00142 00143 #ifndef QT_NO_USERDATA 00144 static uint registerUserData(); 00145 void setUserData( uint id, QObjectUserData* data); 00146 QObjectUserData* userData( uint id ) const; 00147 #endif // QT_NO_USERDATA 00148 00149 signals: 00150 void destroyed(); 00151 void destroyed( QObject* obj ); 00152 00153 public: 00154 QObject *parent() const { return parentObj; } 00155 // ### AbanQ 00156 uint aqWasDeleted() const { return wasDeleted; } 00157 // ### 00158 00159 public slots: 00160 void deleteLater(); 00161 00162 private slots: 00163 void cleanupEventFilter( QObject* ); 00164 00165 protected: 00166 bool activate_filters( QEvent * ); 00167 QConnectionList *receivers( const char* signal ) const; 00168 QConnectionList *receivers( int signal ) const; 00169 void activate_signal( int signal ); 00170 void activate_signal( int signal, int ); 00171 void activate_signal( int signal, double ); 00172 void activate_signal( int signal, QString ); 00173 void activate_signal_bool( int signal, bool ); 00174 void activate_signal( QConnectionList *clist, QUObject *o ); 00175 00176 const QObject *sender(); 00177 00178 virtual void timerEvent( QTimerEvent * ); 00179 virtual void childEvent( QChildEvent * ); 00180 virtual void customEvent( QCustomEvent * ); 00181 00182 virtual void connectNotify( const char *signal ); 00183 virtual void disconnectNotify( const char *signal ); 00184 virtual bool checkConnectArgs( const char *signal, const QObject *receiver, 00185 const char *member ); 00186 static QCString normalizeSignalSlot( const char *signalSlot ); 00187 00188 private: 00189 uint isSignal : 1; 00190 uint isWidget : 1; 00191 uint pendTimer : 1; 00192 uint blockSig : 1; 00193 uint wasDeleted : 1; 00194 uint isTree : 1; 00195 00196 const char *objname; 00197 QObject *parentObj; 00198 QObjectList *childObjects; 00199 QSignalVec *connections; 00200 QSenderObjectList *senderObjects; 00201 QObjectList *eventFilters; 00202 QPostEventList *postedEvents; 00203 QObjectPrivate* d; 00204 00205 static QMetaObject* staticQtMetaObject(); 00206 00207 friend class QApplication; 00208 friend class QBaseApplication; 00209 friend class QWidget; 00210 friend class QSignal; 00211 00212 private: // Disabled copy constructor and operator= 00213 #if defined(Q_DISABLE_COPY) 00214 QObject( const QObject & ); 00215 QObject &operator=( const QObject & ); 00216 #endif 00217 }; 00218 00219 00220 #ifndef QT_NO_USERDATA 00221 class Q_EXPORT QObjectUserData { 00222 public: 00223 virtual ~QObjectUserData(); 00224 }; 00225 #endif 00226 00227 00228 inline bool QObject::connect( const QObject *sender, const char *signal, 00229 const char *member ) const 00230 { 00231 return connect( sender, signal, this, member ); 00232 } 00233 00234 00235 inline bool QObject::disconnect( const char *signal, 00236 const QObject *receiver, const char *member ) 00237 { 00238 return disconnect( this, signal, receiver, member ); 00239 } 00240 00241 00242 inline bool QObject::disconnect( const QObject *receiver, const char *member ) 00243 { 00244 return disconnect( this, 0, receiver, member ); 00245 } 00246 00247 00248 #ifdef QT_NO_TRANSLATION 00249 inline QString QObject::tr( const char *sourceText, const char * ) { 00250 return QString::fromLatin1( sourceText ); 00251 } 00252 #ifndef QT_NO_TEXTCODEC 00253 inline QString QObject::trUtf8( const char *sourceText, const char * ) { 00254 return QString::fromUtf8( sourceText ); 00255 } 00256 #endif 00257 #endif //QT_NO_TRANSLATION 00258 00259 00260 #define Q_DEFINED_QOBJECT 00261 #include "qwinexport.h" 00262 #endif // QOBJECT_H