summaryrefslogtreecommitdiffstats
path: root/src/corelib/doc
diff options
context:
space:
mode:
authorNico Vertriest <nico.vertriest@digia.com>2014-10-03 13:57:51 +0200
committerNico Vertriest <nico.vertriest@digia.com>2014-10-07 13:26:28 +0200
commitded6514de8b9975f1afd4f63b852c732e0125551 (patch)
tree9952901f568fb314b597fb021ba463ac07ef59fa /src/corelib/doc
parent6cd12577572b9685603e9df14612a73162f29c35 (diff)
Doc: deletion plugin-howtos.qdoc
Document is moved to qtdoc/doc/src/howtos Including snippet files. Task-number: QTBUG-38412 Change-Id: Iba15689ad63e17c370c21c9ee5a1fff40c79fcec Reviewed-by: Topi Reiniƶ <topi.reinio@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
Diffstat (limited to 'src/corelib/doc')
-rw-r--r--src/corelib/doc/snippets/code/doc_src_plugins-howto.cpp67
-rw-r--r--src/corelib/doc/snippets/code/doc_src_plugins-howto.pro61
-rw-r--r--src/corelib/doc/snippets/code/doc_src_plugins-howto.qdoc43
-rw-r--r--src/corelib/doc/snippets/plugins/extrafiltersplugin.h65
-rw-r--r--src/corelib/doc/snippets/plugins/interfaces.h114
-rw-r--r--src/corelib/doc/src/plugin-classes.qdoc39
-rw-r--r--src/corelib/doc/src/plugins-howto.qdoc333
7 files changed, 39 insertions, 683 deletions
diff --git a/src/corelib/doc/snippets/code/doc_src_plugins-howto.cpp b/src/corelib/doc/snippets/code/doc_src_plugins-howto.cpp
deleted file mode 100644
index b86f0bbf68..0000000000
--- a/src/corelib/doc/snippets/code/doc_src_plugins-howto.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//! [0]
-class MyStylePlugin : public QStylePlugin
-{
- Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "mystyleplugin.json")
-public:
- QStyle *create(const QString &key);
-};
-//! [0]
-
-
-//! [1]
-#include "mystyleplugin.h"
-
-QStyle *MyStylePlugin::create(const QString &key)
-{
- if (key.toLower() == "mystyle")
- return new MyStyle;
- return 0;
-}
-
-//! [1]
-
-
-//! [2]
-QApplication::setStyle(QStyleFactory::create("MyStyle"));
-//! [2]
diff --git a/src/corelib/doc/snippets/code/doc_src_plugins-howto.pro b/src/corelib/doc/snippets/code/doc_src_plugins-howto.pro
deleted file mode 100644
index dc75c1d9d7..0000000000
--- a/src/corelib/doc/snippets/code/doc_src_plugins-howto.pro
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#! [3]
-CONFIG += release
-#! [3]
-
-#! [4]
-QTPLUGIN.platforms = qminimal
-#! [4]
-
-#! [5]
-QTPLUGIN += qjpeg \
- qgif \
- qkrcodecs
-#! [5]
-
-#! [6]
-QTPLUGIN.platforms = -
-#! [6]
-
-#! [7]
-CONFIG -= import_plugins
-#! [7]
diff --git a/src/corelib/doc/snippets/code/doc_src_plugins-howto.qdoc b/src/corelib/doc/snippets/code/doc_src_plugins-howto.qdoc
deleted file mode 100644
index 46b8245ba6..0000000000
--- a/src/corelib/doc/snippets/code/doc_src_plugins-howto.qdoc
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//! [6]
-{ "Keys": [ "mystyleplugin" ] }
-//! [6]
diff --git a/src/corelib/doc/snippets/plugins/extrafiltersplugin.h b/src/corelib/doc/snippets/plugins/extrafiltersplugin.h
deleted file mode 100644
index 7add7abb53..0000000000
--- a/src/corelib/doc/snippets/plugins/extrafiltersplugin.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef EXTRAFILTERSPLUGIN_H
-#define EXTRAFILTERSPLUGIN_H
-
-//! [0]
-#include <QObject>
-#include <QtPlugin>
-#include <QStringList>
-#include <QImage>
-
-#include <plugandpaint/interfaces.h>
-
-class ExtraFiltersPlugin : public QObject, public FilterInterface
-{
- Q_OBJECT
- Q_PLUGIN_METADATA(IID "org.qt-project.Qt.Examples.PlugAndPaint.FilterInterface" FILE "extrafilters.json")
- Q_INTERFACES(FilterInterface)
-
-public:
- QStringList filters() const;
- QImage filterImage(const QString &filter, const QImage &image,
- QWidget *parent);
-};
-//! [0]
-
-#endif
diff --git a/src/corelib/doc/snippets/plugins/interfaces.h b/src/corelib/doc/snippets/plugins/interfaces.h
deleted file mode 100644
index b2261a1eb2..0000000000
--- a/src/corelib/doc/snippets/plugins/interfaces.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef INTERFACES_H
-#define INTERFACES_H
-
-#include <QtPlugin>
-
-QT_BEGIN_NAMESPACE
-class QImage;
-class QPainter;
-class QWidget;
-class QPainterPath;
-class QPoint;
-class QRect;
-class QString;
-class QStringList;
-QT_END_NAMESPACE
-
-//! [0]
-class BrushInterface
-{
-public:
- virtual ~BrushInterface() {}
-
- virtual QStringList brushes() const = 0;
- virtual QRect mousePress(const QString &brush, QPainter &painter,
- const QPoint &pos) = 0;
- virtual QRect mouseMove(const QString &brush, QPainter &painter,
- const QPoint &oldPos, const QPoint &newPos) = 0;
- virtual QRect mouseRelease(const QString &brush, QPainter &painter,
- const QPoint &pos) = 0;
-};
-//! [0]
-
-//! [1]
-class ShapeInterface
-{
-public:
- virtual ~ShapeInterface() {}
-
- virtual QStringList shapes() const = 0;
- virtual QPainterPath generateShape(const QString &shape,
- QWidget *parent) = 0;
-};
-//! [1]
-
-//! [2]
-class FilterInterface
-{
-public:
- virtual ~FilterInterface() {}
-
- virtual QStringList filters() const = 0;
- virtual QImage filterImage(const QString &filter, const QImage &image,
- QWidget *parent) = 0;
-};
-//! [2]
-
-QT_BEGIN_NAMESPACE
-//! [3] //! [4]
-#define BrushInterface_iid "org.qt-project.Qt.Examples.PlugAndPaint.BrushInterface"
-
-Q_DECLARE_INTERFACE(BrushInterface, BrushInterface_iid)
-//! [3]
-
-#define ShapeInterface_iid "org.qt-project.Qt.Examples.PlugAndPaint.ShapeInterface"
-
-Q_DECLARE_INTERFACE(ShapeInterface, ShapeInterface_iid)
-//! [5]
-#define FilterInterface_iid "org.qt-project.Qt.Examples.PlugAndPaint.FilterInterface"
-
-Q_DECLARE_INTERFACE(FilterInterface, FilterInterface_iid)
-//! [4] //! [5]
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/corelib/doc/src/plugin-classes.qdoc b/src/corelib/doc/src/plugin-classes.qdoc
new file mode 100644
index 0000000000..745e73151b
--- /dev/null
+++ b/src/corelib/doc/src/plugin-classes.qdoc
@@ -0,0 +1,39 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \group plugins
+ \title Plugin Classes
+ \ingroup groups
+
+ \brief Plugin related classes.
+
+ These \l{Qt Core} classes deal with shared libraries, (for example, .so and DLL
+ files), and with Qt plugins.
+
+ See the \l{How to Create Qt Plugins} page for more information.
+*/
diff --git a/src/corelib/doc/src/plugins-howto.qdoc b/src/corelib/doc/src/plugins-howto.qdoc
deleted file mode 100644
index 7dc0d01cce..0000000000
--- a/src/corelib/doc/src/plugins-howto.qdoc
+++ /dev/null
@@ -1,333 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Free Documentation License Usage
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file. Please review the following information to ensure
-** the GNU Free Documentation License version 1.3 requirements
-** will be met: http://www.gnu.org/copyleft/fdl.html.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group plugins
- \title Plugin Classes
- \ingroup groups
-
- \brief Plugin related classes.
-
- These \l{Qt Core} classes deal with shared libraries, (e.g. .so and DLL
- files), and with Qt plugins.
-
- See the \l{How to Create Qt Plugins} page for more information.
-*/
-
-/*!
- \page plugins-howto.html
- \title How to Create Qt Plugins
- \brief A guide to creating plugins to extend Qt applications and
- functionality provided by Qt.
-
- \ingroup frameworks-technologies
- \ingroup qt-basic-concepts
-
-
- \keyword QT_DEBUG_PLUGINS
- \keyword QT_NO_PLUGIN_CHECK
-
- Qt provides two APIs for creating plugins:
-
- \list
- \li A higher-level API for writing extensions to Qt itself: custom database
- drivers, image formats, text codecs, custom styles, etc.
- \li A lower-level API for extending Qt applications.
- \endlist
-
- For example, if you want to write a custom QStyle subclass and
- have Qt applications load it dynamically, you would use the
- higher-level API.
-
- Since the higher-level API is built on top of the lower-level API,
- some issues are common to both.
-
- If you want to provide plugins for use with Qt Designer, see the Qt Designer
- module documentation.
-
- Topics:
-
- \tableofcontents
-
- \section1 The Higher-Level API: Writing Qt Extensions
-
- Writing a plugin that extends Qt itself is achieved by
- subclassing the appropriate plugin base class, implementing a few
- functions, and adding a macro.
-
- There are several plugin base classes. Derived plugins are stored
- by default in sub-directories of the standard plugin directory. Qt
- will not find plugins if they are not stored in the right
- directory.
-
- \table
- \header \li Base Class \li Directory Name \li Key Case Sensitivity
- \row \li QAccessibleBridgePlugin \li \c accessiblebridge \li Case Sensitive
- \row \li QAccessiblePlugin \li \c accessible \li Case Sensitive
- \row \li QDecorationPlugin \li \c decorations \li Case Insensitive
- \row \li QFontEnginePlugin \li \c fontengines \li Case Insensitive
- \row \li QIconEnginePlugin \li \c iconengines \li Case Insensitive
- \row \li QImageIOPlugin \li \c imageformats \li Case Sensitive
- \row \li QInputContextPlugin \li \c inputmethods \li Case Sensitive
- \row \li QKbdDriverPlugin \li \c kbddrivers \li Case Insensitive
- \row \li QMouseDriverPlugin \li \c mousedrivers \li Case Insensitive
- \row \li QScreenDriverPlugin \li \c gfxdrivers \li Case Insensitive
- \row \li QScriptExtensionPlugin \li \c script \li Case Sensitive
- \row \li QSqlDriverPlugin \li \c sqldrivers \li Case Sensitive
- \row \li QStylePlugin \li \c styles \li Case Insensitive
- \row \li QTextCodecPlugin \li \c codecs \li Case Sensitive
- \endtable
-
- Suppose that you have a new style class called \c MyStyle that you
- want to make available as a plugin. The required code is
- straightforward, here is the class definition (\c
- mystyleplugin.h):
-
- \snippet code/doc_src_plugins-howto.cpp 0
-
- Ensure that the class implementation is located in a \c .cpp file:
-
- \snippet code/doc_src_plugins-howto.cpp 1
-
- (Note that QStylePlugin is case insensitive, and the lower-case
- version of the key is used in our
- \l{QStylePlugin::create()}{create()} implementation; most other
- plugins are case sensitive.)
-
- In addition a \c mystyleplugin.json file containing meta data
- describing the plugin is required for most plugins. For style
- plugins it simply contains a list of styles that can be created
- by the plugin:
-
- \snippet code/doc_src_plugins-howto.qdoc 6
-
- The type of information that needs to be provided in the json file
- is plugin dependent, please see the class documentation for
- details on the information that needs to be contained in the
- file.
-
- For database drivers, image formats, text codecs, and most other
- plugin types, no explicit object creation is required. Qt will
- find and create them as required. Styles are an exception, since
- you might want to set a style explicitly in code. To apply a
- style, use code like this:
-
- \snippet code/doc_src_plugins-howto.cpp 2
-
- Some plugin classes require additional functions to be
- implemented. See the class documentation for details of the
- virtual functions that must be reimplemented for each type of
- plugin.
-
- The \l{Style Plugin Example} shows how to implement a plugin
- that extends the QStylePlugin base class.
-
- \section1 The Lower-Level API: Extending Qt Applications
-
- Not only Qt itself but also Qt application can be extended
- through plugins. This requires the application to detect and load
- plugins using QPluginLoader. In that context, plugins may provide
- arbitrary functionality and are not limited to database drivers,
- image formats, text codecs, styles, and the other types of plugin
- that extend Qt's functionality.
-
- Making an application extensible through plugins involves the
- following steps:
-
- \list 1
- \li Define a set of interfaces (classes with only pure virtual
- functions) used to talk to the plugins.
- \li Use the Q_DECLARE_INTERFACE() macro to tell Qt's
- \l{meta-object system} about the interface.
- \li Use QPluginLoader in the application to load the plugins.
- \li Use qobject_cast() to test whether a plugin implements a given
- interface.
- \endlist
-
- Writing a plugin involves these steps:
-
- \list 1
- \li Declare a plugin class that inherits from QObject and from the
- interfaces that the plugin wants to provide.
- \li Use the Q_INTERFACES() macro to tell Qt's \l{meta-object
- system} about the interfaces.
- \li Export the plugin using the Q_PLUGIN_METADATA() macro.
- \li Build the plugin using a suitable \c .pro file.
- \endlist
-
- For example, here's the definition of an interface class:
-
- \snippet plugins/interfaces.h 2
-
- Here's the definition of a plugin class that implements that
- interface:
-
- \snippet plugins/extrafiltersplugin.h 0
-
- The \l{tools/plugandpaint}{Plug & Paint} example documentation
- explains this process in detail. See also \l{Creating Custom
- Widgets for Qt Designer} for information about issues that are
- specific to Qt Designer. You can also take a look at the
- \l{Echo Plugin Example} which is a more trivial example on
- how to implement a plugin that extends Qt applications.
- Please note that a QCoreApplication must have been initialized
- before plugins can be loaded.
-
- \section1 Locating Plugins
-
- Qt applications automatically know which plugins are available,
- because plugins are stored in the standard plugin subdirectories.
- Because of this applications don't require any code to find and load
- plugins, since Qt handles them automatically.
-
- During development, the directory for plugins is \c{QTDIR/plugins}
- (where \c QTDIR is the directory where Qt is installed), with each
- type of plugin in a subdirectory for that type, e.g. \c styles. If
- you want your applications to use plugins and you don't want to use
- the standard plugins path, have your installation process
- determine the path you want to use for the plugins, and save the
- path, e.g. using QSettings, for the application to read when it
- runs. The application can then call
- QCoreApplication::addLibraryPath() with this path and your
- plugins will be available to the application. Note that the final
- part of the path (e.g., \c styles) cannot be changed.
-
- If you want the plugin to be loadable then one approach is to
- create a subdirectory under the application and place the plugin
- in that directory. If you distribute any of the plugins that come
- with Qt (the ones located in the \c plugins directory), you must
- copy the sub-directory under \c plugins where the plugin is
- located to your applications root folder (i.e., do not include the
- \c plugins directory).
-
- For more information about deployment,
- see the \l {Deploying Qt Applications} and \l {Deploying Plugins}
- documentation.
-
- \section1 Static Plugins
-
- The normal and most flexible way to include a plugin with an
- application is to compile it into a dynamic library that is shipped
- separately, and detected and loaded at runtime.
-
- Plugins can be linked statically into your application. If you
- build the static version of Qt, this is the only option for
- including Qt's predefined plugins. Using static plugins makes the
- deployment less error-prone, but has the disadvantage that no
- functionality from plugins can be added without a complete rebuild
- and redistribution of the application.
-
- When compiled as a static library, Qt provides the following
- static plugins:
-
- \table
- \header \li Plugin name \li Type \li Description
- \row \li \c qtaccessiblewidgets \li Accessibility \li Accessibility for Qt widgets
- \row \li \c qgif \li Image formats \li GIF
- \row \li \c qjpeg \li Image formats \li JPEG
- \row \li \c qmng \li Image formats \li MNG
- \row \li \c qico \li Image formats \li ICO
- \row \li \c qsvg \li Image formats \li SVG
- \row \li \c qtiff \li Image formats \li TIFF
- \row \li \c qsqldb2 \li SQL driver \li IBM DB2
- \row \li \c qsqlibase \li SQL driver \li Borland InterBase
- \row \li \c qsqlite \li SQL driver \li SQLite version 3
- \row \li \c qsqlite2 \li SQL driver \li SQLite version 2
- \row \li \c qsqlmysql \li SQL driver \li MySQL
- \row \li \c qsqloci \li SQL driver \li Oracle (OCI)
- \row \li \c qsqlodbc \li SQL driver \li Open Database Connectivity (ODBC)
- \row \li \c qsqlpsql \li SQL driver \li PostgreSQL
- \row \li \c qsqltds \li SQL driver \li Sybase Adaptive Server (TDS)
- \endtable
-
- To link those plugins statically, you need to add
- the required plugins to your build using \c QTPLUGIN.
-
- In the \c .pro file for your application, you need the following
- entry:
-
- \snippet code/doc_src_plugins-howto.pro 5
-
- qmake automatically adds the plugins to QTPLUGIN that are typically
- needed by the used Qt modules (see \c QT), while more specialized
- plugins need to be added manually.
- The default list of automatically added plugins can be overridden
- per type.
- For example, to link the minimal plugin instead of the default Qt
- platform adaptation plugin, use:
-
- \snippet code/doc_src_plugins-howto.pro 4
-
- If you want neither the default nor the minimal QPA plugin to be
- linked automatically, use:
-
- \snippet code/doc_src_plugins-howto.pro 6
-
- The defaults are tuned towards an optimal out-of-the-box experience,
- but may unnecessarily bloat the application.
- It is recommended to inspect the linker command line built by qmake
- and eliminate unnecessary plugins.
-
- \section2 Details of Linking Static Plugins
-
- To cause static plugins actually being linked and instantiated,
- Q_IMPORT_PLUGIN() macros are also needed in application code,
- but those are automatically generated by qmake and added to
- your application project.
-
- If you do not want all plugins added to QTPLUGIN to be automatically
- linked, remove \c import_plugins from the \c CONFIG variable:
-
- \snippet code/doc_src_plugins-howto.pro 7
-
- \section2 Creating Static Plugins
-
- It is also possible to create your own static plugins, by
- following these steps:
-
- \list 1
- \li Add \c{CONFIG += static} to your plugin's \c .pro file.
- \li Use the Q_IMPORT_PLUGIN() macro in your application.
- \li Link your application with your plugin library using \c LIBS
- in the \c .pro file.
- \endlist
-
- See the \l{tools/plugandpaint}{Plug & Paint} example and the
- associated \l{tools/plugandpaintplugins/basictools}{Basic Tools}
- plugin for details on how to do this.
-
- \note If you are not using qmake to build your plugin you need
- to make sure that the \c{QT_STATICPLUGIN} preprocessor macro is
- defined.
-
- \section1 Deploying and Debugging Plugins
-
- The \l{Deploying Plugins} document covers the process of deploying
- plugins with applications and debugging them when problems arise.
-
- \sa QPluginLoader, QLibrary, {Plug & Paint Example}
-*/