summaryrefslogtreecommitdiff
path: root/doc/api/creating-plugins.qdoc
blob: 1189ef6ab800908d10039e712ed1c0cd291eebfa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**************************************************************************
**
** Copyright (c) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of Qt Creator
**
**
** GNU Free Documentation License
**
** 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.
**
**
**************************************************************************/

/*!
    \page creating-plugins.html
    \title Creating Plugins

    At its very core, \QC consists of a plugin loader that loads
    and runs a set of plugins, which then actually provide the functionality
    that you know from \QC the IDE. So, even the main application window
    and menus are all provided by plugins. Plugins can use different means
    to provide other plugins access to their functionality and to allow them
    to extend certain aspects of the application.

    For example the "Core" plugin, which is the very basic plugin that must be
    present for \QC to run at all, provides the main window itself, and API
    for adding menu items, modes, editor types, navigation panels and many other
    things.
    The "TextEditor" plugin provides a framework and base implementation for
    different text editors with highlighting, completion and folding, that
    is then used by other plugins to add more specialized text editor types
    to \QC, like for editing C/C++ or .pro files.

    After reading this guide you will know what a basic plugin consists of,
    how to write a plugin specification file, what the lifecycle of a plugin is,
    what the general principles for extending existing plugins'
    functionality and providing interfaces for other plugins are, and will
    be able to write your first plugin.

    \section1 Basics
    \list
    \li \l{Getting and Building Qt Creator}
    \li \l{Creating Your First Plugin}
    \li \l{Plugin Meta Data}
    \li \l{Plugin Life Cycle}
    \endlist

    \section1 Design Principles
    \list
    \li \l{The Plugin Manager, the Object Pool, and Registered Objects}
    \li \l{Aggregations}
    \li \l{Extending and Providing Interfaces}
    \endlist

    \section1 Creating 3rd-Party Plugins
    \list
    \li \l{A Note on Binary Compatibility}
    \li \l{Creating User-Installable Plugins}
    \endlist
*/