tools/designer/src/lib/uilib/container.qdoc
changeset 0 1918ee327afb
child 4 3b1da2848fc7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/designer/src/lib/uilib/container.qdoc	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,186 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+    \class QDesignerContainerExtension
+    \brief The QDesignerContainerExtension class allows you to add pages to
+    a custom multi-page container in Qt Designer's workspace.
+    \inmodule QtDesigner
+
+    QDesignerContainerExtension provide an interface for creating
+    custom container extensions. A container extension consists of a
+    collection of functions that \QD needs to manage a multi-page
+    container plugin, and a list of the container's pages.
+
+    \image containerextension-example.png
+
+    \warning This is \e not an extension for container plugins in
+    general, only custom \e multi-page containers.
+
+    To create a container extension, your extension class must inherit
+    from both QObject and QDesignerContainerExtension. For example:
+
+    \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 6
+
+    Since we are implementing an interface, we must ensure that it's
+    made known to the meta object system using the Q_INTERFACES()
+    macro. This enables \QD to use the qobject_cast() function to
+    query for supported interfaces using nothing but a QObject
+    pointer.
+
+    You must reimplement several functions to enable \QD to manage a
+    custom multi-page container widget: \QD uses count() to keep track
+    of the number pages in your container, widget() to return the page
+    at a given index in the list of the container's pages, and
+    currentIndex() to return the list index of the selected page. \QD
+    uses the addWidget() function to add a given page to the
+    container, expecting it to be appended to the list of pages, while
+    it expects the insertWidget() function to add a given page to the
+    container by inserting it at a given index.
+
+    In \QD the extensions are not created until they are
+    required. For that reason you must also create a
+    QExtensionFactory, i.e a class that is able to make an instance of
+    your extension, and register it using \QD's \l
+    {QExtensionManager}{extension manager}.
+
+    When a container extension is required, \QD's \l
+    {QExtensionManager}{extension manager} will run through all its
+    registered factories calling QExtensionFactory::createExtension()
+    for each until the first one that is able to create a container
+    extension, is found. This factory will then create the extension
+    for the plugin.
+
+    There are four available types of extensions in \QD:
+    QDesignerContainerExtension , QDesignerMemberSheetExtension,
+    QDesignerPropertySheetExtension and QDesignerTaskMenuExtension.
+    \QD's behavior is the same whether the requested extension is
+    associated with a multi page container, a member sheet, a property
+    sheet or a task menu.
+
+    The QExtensionFactory class provides a standard extension factory,
+    and can also be used as an interface for custom extension
+    factories. You can either create a new QExtensionFactory and
+    reimplement the QExtensionFactory::createExtension() function. For
+    example:
+
+    \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 7
+
+    Or you can use an existing factory, expanding the
+    QExtensionFactory::createExtension() function to make the factory
+    able to create a container extension as well. For example:
+
+    \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 8
+
+    For a complete example using the QDesignerContainerExtension
+    class, see the \l {designer/containerextension}{Container
+    Extension example}. The example shows how to create a custom
+    multi-page plugin for \QD.
+
+    \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
+    Extensions}
+*/
+
+/*!
+    \fn QDesignerContainerExtension::~QDesignerContainerExtension()
+
+    Destroys the extension.
+*/
+
+/*!
+    \fn int QDesignerContainerExtension::count() const
+
+    Returns the number of pages in the container.
+*/
+
+/*!
+    \fn QWidget *QDesignerContainerExtension::widget(int index) const
+
+    Returns the page at the given \a index in the extension's list of
+    pages.
+
+    \sa addWidget(), insertWidget()
+*/
+
+/*!
+    \fn int QDesignerContainerExtension::currentIndex() const
+
+    Returns the index of the currently selected page in the
+    container.
+
+    \sa setCurrentIndex()
+*/
+
+/*!
+    \fn void QDesignerContainerExtension::setCurrentIndex(int index)
+
+    Sets the currently selected page in the container to be the
+    page at the given \a index in the extension's list of pages.
+
+    \sa currentIndex()
+*/
+
+/*!
+    \fn void QDesignerContainerExtension::addWidget(QWidget *page)
+
+    Adds the given \a page to the container by appending it to the
+    extension's list of pages.
+
+    \sa insertWidget(), remove(), widget()
+*/
+
+/*!
+    \fn void QDesignerContainerExtension::insertWidget(int index, QWidget *page)
+
+    Adds the given \a page to the container by inserting it at the
+    given \a index in the extension's list of pages.
+
+    \sa addWidget(), remove(), widget()
+*/
+
+/*!
+    \fn void QDesignerContainerExtension::remove(int index)
+
+    Removes the page at the given \a index from the extension's list
+    of pages.
+
+    \sa addWidget(), insertWidget()
+*/