1
/****************************************************************************
2
**
3
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4
** All rights reserved.
5
** Contact: Nokia Corporation (qt-info@nokia.com)
6
**
7
** This file is part of the documentation of the Qt Toolkit.
8
**
9
** $QT_BEGIN_LICENSE:FDL$
10
** GNU Free Documentation License
11
** Alternatively, this file may be used under the terms of the GNU Free
12
** Documentation License version 1.3 as published by the Free Software
13
** Foundation and appearing in the file included in the packaging of
14
** this file.
15
**
16
** Other Usage
17
** Alternatively, this file may be used in accordance with the terms
18
** and conditions contained in a signed written agreement between you
19
** and Nokia.
20
**
21
**
22
**
23
**
24
** $QT_END_LICENSE$
25
**
26
****************************************************************************/
27
28
/*!
29
    \page qt-overview.html
30
    \title Qt Features Overview
31
32
    This document provides a summary of the most important features of Qt,
33
    providing links to other pages in the documentation that cover these
34
    features in more detail. It is not intended to be a comprehensive
35
    guide to Qt's features.
36
37
    \section1 Fundamental Technologies in Qt
38
39
    Qt is built upon a set of core technologies, provided by the \l QtCore
40
    and \l QtGui modules. These include the following:
41
42
    \list
43
    \o \l{The Tulip Container Classes}, a set of template container classes.
44
    \o \l{The Arthur Paint System}, the Qt 4 painting framework.
45
    \o \l{The Interview Framework}, a model/view architecture for item views
46
       and the \l{QtSQL Module}, which also uses this architecture.
47
    \o \l{The Scribe Classes}, a framework for creating text documents,
48
        performing low-level text layout and writing OpenDocument files.
49
    \o A collection of \l{Qt Widget Gallery}{common desktop widgets}, styled
50
       to fit in on each supported platform.
51
    \o \l{The Qt 4 Main Window Classes}, a main window, toolbar, menu, and
52
       docking architecture.
53
    \o The \l{Graphics View} framework provides a canvas for producing
54
       interactive graphics.
55
    \o The \l{QtNetwork Module} provides support for TCP, UDP and local
56
       sockets that are integrated with Qt's event model, including support
57
       for Secure Socket Layer (SSL) communications,
58
       \l{QNetworkProxy}{network proxy} servers and
59
       \l{Bearer Management}{network bearer management}.
60
    \o Enhanced \l{qt4-threads.html}{thread support} allows
61
    \l{Signals & Slots}{signal-slot} connections across threads and
62
       per-thread event loops.
63
       Additionally, \l{Thread Support in Qt}{a framework for concurrent programming}
64
       using Qt paradigms makes common threading tasks easier.
65
    \o A \l{resource system} for embedding images and other resource files
66
       into executable files makes it easier to deploy applications.
67
    \o A \l{QTestLib Manual}{unit testing framework} for Qt applications and
68
       libraries.
69
    \endlist
70
71
    The mature classes provided by these technologies have been used to build
72
    robust, cross-platform desktop applications. They are augmented by a number
73
    of additional technologies and improvements that have appeared over the
74
    lifetime of Qt 4.
75
    
76
    \section1 Graphical User Interfaces
77
78
    \div{class="float-right"}
79
    \inlineimage gtk-tabwidget.png
80
    \enddiv
81
    \div{class="float-right"}
82
    \inlineimage gtk-progressbar.png
83
    \br
84
    \inlineimage gtk-checkbox.png
85
    \br
86
    \inlineimage plastique-combobox.png
87
    \br
88
    \inlineimage plastique-radiobutton.png
89
    \enddiv
90
91
    Alongside the support for traditional desktop user interfaces, Qt includes
92
    support for declarative UI development with \l{Qt Quick}, a set of
93
    technologies for creating fluid, dynamic user interfaces. A starting point
94
    for exploring this approach can be found in the \l{Introduction to Qt Quick}
95
    guide.
96
97
    Qt provides a range of standard user interface elements, called widgets,
98
    for each supported platform. Widgets can be used as containers for other
99
    widgets, as windows, and as regular controls that the user interacts with.
100
    Where the platform supports it, widgets can be made to appear partially
101
    transparent, and may be styled with \l{Qt Style Sheets}.
102
103
    Support for \l{QTouchEvent}{touch input} and \l{Gestures Programming}{gestures}
104
    enable widgets to be used to create intuitive user interfaces for
105
    touch-enabled devices.
106
107
    User interfaces can also be created dynamically at run-time with the
108
    features provided by the \l{QtUiTools} module.
109
110
    A selection of available widgets are shown in the \l{Qt Widget Gallery}.
111
    An introduction to the concepts behind widgets can be found in the
112
    \l{Widgets Tutorial}.
113
114
    \clearfloat
115
    \section1 Painting, Printing and Rendering
116
117
    \div{class="float-left"}
118
    \inlineimage qpainter-affinetransformations.png
119
    \enddiv
120
    
121
    Widgets are just one of many kinds of paint device that Qt can render onto.
122
    This support for unified painting makes it possible for applications to use
123
    the same painting code for different tasks, as well as allowing Qt to be
124
    extended to support additional file formats.
125
126
    Qt provides support for common bitmap image formats,
127
    \l{QtSvg Module}{Scalable Vector Graphics} (SVG) drawings and animations,
128
    Postscript and Portable Document Format (PDF) files. Postscript and PDF are
129
    integrated with \l{Printing with Qt}{Qt's printing system}, which also
130
    allows printed output to be previewed.
131
132
    Interactive graphics can be created with the
133
    \l{The Animation Framework}{animation framework}, allowing animations to be
134
    used with both widgets and graphics items. Animations can be used with the
135
    \l{The State Machine Framework}{state machine framework}, which provides a
136
    way to express application logic and integrate it with the user interface.
137
    Animations can be enhanced with a collection of
138
    \l{QGraphicsEffect}{graphics effects} that operate on graphics items and
139
    can be applied individually or combined to create more complex effects.
140
141
    Qt supports integration with \l{QtOpenGL}{OpenGL} on a number of levels,
142
    providing convenience functions for handling textures and colors, as well
143
    as providing support for pixel and sample buffers. Future support for
144
    higher level 3D integration is provided by Qt3D enablers which include
145
    \l{QMatrix4x4}{matrix multiplication}, \l{QQuaternion}{quaternions}, and an
146
    API for \l{QGLShader}{vertex and fragment shaders}.
147
148
    Two APIs are provided for multimedia. The
149
    \l{Phonon Overview}{Phonon Multimedia Framework} has traditionally been
150
    used on desktop platforms. A set of
151
    \l{QtMultimedia Module}{multimedia services} provides low-level access to
152
    the system's audio system and is often used on mobile devices.
153
154
    \clearfloat
155
    \section1 Infrastructure
156
157
    \div{class="float-right"}
158
    \inlineimage qtscript-context2d.png
159
    \enddiv
160
161
    Facilities for Inter-Process Communication (IPC) and Remote Procedure
162
    Calling (RPC) mechanisms are available on platforms that support the
163
    \l{intro-to-dbus.html}{D-Bus} message bus system.
164
165
    An \l{Undo Framework}{Undo framework} based on the
166
    \l{Books about GUI Design#Design Patterns}{Command pattern} is designed to
167
    enable a consistent approach to handling data in editing applications.
168
169
    The \l{QtScript} and \l{QtScriptTools} modules provide support for
170
    application scripting and debugging using the ECMAScript language.
171
172
    The \l{QtHelp Module} provides the foundations of an interactive help
173
    system that can be used in conjunction with Qt Creator or integrated into
174
    applications directly.
175
176
    XML handling is supported in a number of places in Qt. The \l QtCore module
177
    provides classes for reading and writing XML streams. The \l QtXmlPatterns
178
    module includes XQuery, XPath and XSLT support, providing facilities for
179
    XML processing beyond that supported by the QtXml module, which contains
180
    SAX and DOM parsers. XML schema validation in the QtXmlPatterns module
181
    covers large parts of version 1.0 of the specification.
182
183
    \clearfloat
184
    \section1 Web Client Integration
185
186
    Integration between \l{Webkit in Qt}{Qt and WebKit} makes it possible for
187
    developers to use a fully-featured Web browser engine to display documents
188
    and access online services. Developers can access the browser's environment
189
    to create documents and run scripts within one or more browser widgets.
190
191
    A \l{QWebElement}{DOM access API} for QtWebKit provides a cleaner and safer
192
    way to access elements and structures of Web pages without the use of
193
    JavaScript.
194
195
    \section1 Further Reading
196
197
    Many of the technologies mentioned here, as well as other, more specific
198
    features, are listed in the \l{What's New in Qt 4} document. A complete
199
    list of Qt's modules can be found on the \l{All Modules} page, which
200
    also includes more domain-specific technologies.
201
202
    The tools that are supplied with Qt are covered by the listing in the
203
    \l{Qt's Tools} document.
204
*/