summaryrefslogtreecommitdiffstats
path: root/doc/metaobjects.doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/metaobjects.doc')
-rw-r--r--doc/metaobjects.doc108
1 files changed, 108 insertions, 0 deletions
diff --git a/doc/metaobjects.doc b/doc/metaobjects.doc
new file mode 100644
index 000000000..705929178
--- /dev/null
+++ b/doc/metaobjects.doc
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Explanation of moc and the meta object system
+**
+** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
+**
+** This file is part of the Qt GUI Toolkit.
+**
+** This file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free
+** Software Foundation and appearing in the files LICENSE.GPL2
+** and LICENSE.GPL3 included in the packaging of this file.
+** Alternatively you may (at your option) use any later version
+** of the GNU General Public License if such license has been
+** publicly approved by Trolltech ASA (or its successors, if any)
+** and the KDE Free Qt Foundation.
+**
+** Please review the following information to ensure GNU General
+** Public Licensing retquirements will be met:
+** http://trolltech.com/products/qt/licenses/licensing/opensource/.
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
+** or contact the sales department at sales@trolltech.com.
+**
+** This file may be used under the terms of the Q Public License as
+** defined by Trolltech ASA and appearing in the file LICENSE.QPL
+** included in the packaging of this file. Licensees holding valid Qt
+** Commercial 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 WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
+** herein.
+**
+**********************************************************************/
+
+/*!
+\page metaobjects.html
+
+\title Meta Object System
+
+\keyword meta object
+\keyword Q_OBJECT
+
+Qt's Meta Object System provides the signals and slots mechanism for
+inter-object communication, runtime type information, and the dynamic
+property system.
+
+The Meta Object System is based on three things:
+\list 1
+\i the \l QObject class;
+\i the Q_OBJECT macro inside the private section of the class
+declaration;
+\i the \link moc.html Meta Object Compiler (moc)\endlink.
+\endlist
+
+The \e moc reads a C++ source file. If it finds one or more class
+declarations that contain the Q_OBJECT macro, it produces another C++
+source file which contains the meta object code for the classes that
+contain the Q_OBJECT macro. This generated source file is either
+#included into the class's source file or compiled and linked with the
+class's implementation.
+
+In addition to providing the \link signalsandslots.html signals and
+slots \endlink mechanism for communication between objects (the main
+reason for introducing the system), the meta object code provides
+additional features in QObject:
+
+\list
+
+\i the \link QObject::className() className() \endlink function that
+returns the class name as a string at runtime, without retquiring
+native runtime type information (RTTI) support through the C++
+compiler.
+
+\i the \link QObject::inherits() inherits() \endlink function that
+returns whether an object is an instance of a class that inherits a
+specified class within the QObject inheritance tree.
+
+\i the \link QObject::tr() tr() \endlink and
+\link QObject::trUtf8() trUtf8() \endlink functions for string
+translation as used for internationalization.
+
+\i the \link QObject::setProperty() setProperty() \endlink and \link
+QObject::property() property() \endlink functions for dynamically
+setting and getting \link properties.html object properties\endlink by
+name.
+
+\i the \link QObject::metaObject() metaObject() \endlink function that
+returns the associated \link QMetaObject meta object \endlink for the
+class.
+
+\endlist
+
+While it is possible to use QObject as a base class without the
+Q_OBJECT macro and without meta object code, neither signals and slots
+nor the other features described here will be available if the
+Q_OBJECT macro is not used. From the meta object system's point of
+view, a QObject subclass without meta code is equivalent to its
+closest ancestor with meta object code. This means for example, that
+className() will not return the actual name of your class, but the
+class name of this ancestor. We \e strongly recommend that all
+subclasses of QObject use the Q_OBJECT macro regardless of whether
+they actually use signals, slots and properties or not.
+
+*/