source: trunk/doc/src/groups.qdoc@ 357

Last change on this file since 357 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 17.2 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: Qt Software Information (qt-info@nokia.com)
5**
6** This file is part of the documentation of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial Usage
10** Licensees holding valid Qt Commercial licenses may use this file in
11** accordance with the Qt Commercial License Agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and Nokia.
14**
15** GNU Lesser General Public License Usage
16** Alternatively, this file may be used under the terms of the GNU Lesser
17** General Public License version 2.1 as published by the Free Software
18** Foundation and appearing in the file LICENSE.LGPL included in the
19** packaging of this file. Please review the following information to
20** ensure the GNU Lesser General Public License version 2.1 requirements
21** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22**
23** In addition, as a special exception, Nokia gives you certain
24** additional rights. These rights are described in the Nokia Qt LGPL
25** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26** package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you are unsure which license is appropriate for your use, please
37** contact the sales department at qt-sales@nokia.com.
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42/*!
43 \group groups
44 \title Grouped Classes
45 \ingroup classlists
46
47 This page provides a way of navigating Qt's classes by grouping
48 related classes together. Some classes may appear in more than one group.
49
50 \generatelist{related}
51
52 \omit
53 \row
54 \o \l{Component Model}
55 \o Interfaces and helper classes for the Qt Component Model.
56 \endomit
57
58*/
59
60/*!
61 \group advanced
62 \title Advanced Widgets
63 \ingroup groups
64
65 \brief Advanced GUI widgets such as tab widgets and progress bars.
66
67 These classes provide more complex user interface widgets (controls).
68
69*/
70
71/*!
72 \group abstractwidgets
73 \title Abstract Widget Classes
74 \ingroup groups
75
76 \brief Abstract widget classes usable through subclassing.
77
78 These classes are abstract widgets; they are generally not usable in
79 themselves, but provide functionality that can be used by inheriting
80 these classes.
81
82*/
83
84/*!
85 \group accessibility
86 \title Accessibility Classes
87 \ingroup groups
88 \ingroup topics
89
90 \brief Classes that provide support for accessibility.
91
92 Accessible applications are able to be used by users who cannot use
93 conventional means of interaction. These classes provide support for
94 accessible applications.
95
96*/
97
98/*!
99 \group appearance
100 \title Widget Appearance and Style
101 \ingroup groups
102
103 \brief Appearance customization with styles, fonts, colors etc.
104
105 These classes are used to customize an application's appearance and
106 style.
107
108*/
109
110/*!
111 \group application
112 \title Main Window and Related Classes
113 \ingroup groups
114
115 \brief Everything you need for a typical modern main application window,
116 including menus, toolbars, workspace, etc.
117
118 These classes provide everything you need for a typical modern main
119 application window, like the main window itself, menu and tool bars,
120 a status bar, etc.
121
122*/
123
124
125/*!
126 \group basicwidgets
127 \title Basic Widgets
128 \ingroup groups
129
130 \brief Basic GUI widgets such as buttons, comboboxes and scroll bars.
131
132 These basic widgets (controls) are designed for direct use.
133 There are also some \l{Abstract Widget Classes} that are designed for
134 subclassing, and some more complex \l{Advanced Widgets}.
135
136*/
137
138/* \group componentmodel
139 \title Component Model
140
141 These classes and interfaces form the basis of the \l{Qt Component Model}.
142
143*/
144
145/*!
146 \group database
147 \title Database Classes
148 \ingroup groups
149
150 \brief Database related classes, e.g. for SQL databases.
151
152 These classes provide access to SQL databases.
153*/
154
155
156/*!
157 \group dialogs
158 \title Standard Dialog Classes
159 \ingroup groups
160
161 \brief Ready-made dialogs for file, font, color selection and more.
162
163 These classes are complex widgets, composed of simpler widgets; dialog
164 boxes, generally.
165*/
166
167/*!
168 \group desktop
169 \title Desktop Environment Classes
170 \ingroup groups
171
172 \brief Classes for interacting with the user's desktop environment.
173
174 These classes provide ways to interact with the user's desktop environment and
175 take advantage of common services.
176*/
177
178/*!
179 \group draganddrop
180 \title Drag And Drop Classes
181 \ingroup groups
182
183 \brief Classes dealing with drag and drop and mime type encoding and decoding.
184
185 These classes deal with drag and drop and the necessary mime type
186 encoding and decoding. See also \link dnd.html Drag and Drop with
187 Qt. \endlink
188*/
189
190/*!
191 \group environment
192 \title Environment Classes
193 \ingroup groups
194
195 \brief Classes providing various global services such as event handling,
196 access to system settings and internationalization.
197
198 These classes providing various global services to your application such as
199 event handling, access to system settings, internationalization, etc.
200
201*/
202
203/*!
204 \group events
205 \title Event Classes
206 \ingroup groups
207
208 \brief Classes used to create and handle events.
209
210 These classes are used to create and handle events.
211
212 For more information see the \link object.html Object model\endlink
213 and \link signalsandslots.html Signals and Slots\endlink.
214*/
215
216/*!
217 \group explicitly-shared
218 \ingroup groups
219
220 \title Explicitly Shared Classes
221 \brief Classes that use explicit sharing to manage internal data.
222
223 \keyword explicit sharing
224 \keyword explicitly shared
225
226 Unlike many of Qt's data types, which use \l{implicit sharing}, these
227 classes use explicit sharing to manage internal data.
228*/
229
230/*!
231 \group geomanagement
232 \title Layout Management
233 \ingroup groups
234
235 \brief Classes handling automatic resizing and moving of widgets, for
236 composing complex dialogs.
237
238 These classes provide automatic geometry (layout) management of widgets.
239
240*/
241
242/*!
243 \group graphicsview-api
244 \title Graphics View Classes
245 \ingroup groups
246
247 \brief Classes in the Graphics View framework for interactive applications.
248
249 These classes are provided by \l{The Graphics View Framework} for interactive
250 applications and are part of a larger collection of classes related to
251 \l{Multimedia, Graphics and Printing}.
252
253 \note These classes are part of the \l{Open Source Versions of Qt} and
254 \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial users.
255*/
256
257/*!
258 \group helpsystem
259 \title Help System
260 \ingroup groups
261
262 \brief Classes used to provide online-help for applications.
263
264 \keyword help system
265
266 These classes provide for all forms of online-help in your application,
267 with three levels of detail:
268
269 \list 1
270 \o Tool Tips and Status Bar message - flyweight help, extremely brief,
271 entirely integrated in the user interface, requiring little
272 or no user interaction to invoke.
273 \o What's This? - lightweight, but can be
274 a three-paragraph explanation.
275 \o Online Help - can encompass any amount of information,
276 but is typically slower to call up, somewhat separated
277 from the user's work, and often users feel that using online
278 help is a digression from their real task.
279 \endlist
280
281*/
282
283
284/*!
285 \group io
286 \title Input/Output and Networking
287 \ingroup groups
288
289 \brief Classes providing file input and output along with directory and
290 network handling.
291
292 These classes are used to handle input and output to and from external
293 devices, processes, files etc. as well as manipulating files and directories.
294*/
295
296/*!
297 \group misc
298 \title Miscellaneous Classes
299 \ingroup groups
300
301 \brief Various other useful classes.
302
303 These classes are useful classes not fitting into any other category.
304
305*/
306
307
308/*!
309 \group model-view
310 \title Model/View Classes
311 \ingroup groups
312
313 \brief Classes that use the model/view design pattern.
314
315 These classes use the model/view design pattern in which the
316 underlying data (in the model) is kept separate from the way the data
317 is presented and manipulated by the user (in the view). See also
318 \link model-view-programming.html Model/View Programming\endlink.
319
320*/
321
322/*!
323 \group multimedia
324 \title Multimedia, Graphics and Printing
325 \ingroup groups
326
327 \brief Classes that provide support for graphics (2D, and with OpenGL, 3D),
328 image encoding, decoding, and manipulation, sound, animation,
329 printing, etc.
330
331 These classes provide support for graphics (2D, and with OpenGL, 3D),
332 image encoding, decoding, and manipulation, sound, animation, printing
333 etc.
334
335 See also this introduction to the \link coordsys.html Qt
336 coordinate system. \endlink
337
338*/
339
340/*!
341 \group objectmodel
342 \title Object Model
343 \ingroup groups
344
345 \brief The Qt GUI toolkit's underlying object model.
346
347 These classes form the basis of the \l{Qt Object Model}.
348
349*/
350
351/*!
352 \group organizers
353 \title Organizers
354 \ingroup groups
355
356 \brief User interface organizers such as splitters, tab bars, button groups, etc.
357
358 These classes are used to organize and group GUI primitives into more
359 complex applications or dialogs.
360
361*/
362
363
364/*!
365 \group plugins
366 \title Plugin Classes
367 \ingroup groups
368
369 \brief Plugin related classes.
370
371 These classes deal with shared libraries, (e.g. .so and DLL files),
372 and with Qt plugins.
373
374 See the \link plugins-howto.html plugins documentation\endlink.
375
376 See also the \l{ActiveQt framework} for Windows.
377
378*/
379
380/*!
381 \group qws
382 \title Qt for Embedded Linux Classes
383 \ingroup groups
384
385 \ingroup qt-embedded-linux
386 \brief Classes that are specific to Qt for Embedded Linux.
387
388 These classes are relevant to \l{Qt for Embedded Linux} users.
389*/
390
391/*!
392 \group shared
393 \title Implicitly Shared Classes
394 \ingroup architecture
395 \ingroup groups
396
397 \brief Classes that use reference counting for fast copying.
398
399 \keyword implicit data sharing
400 \keyword implicit sharing
401 \keyword implicitly shared
402 \keyword reference counting
403 \keyword shared implicitly
404 \keyword shared classes
405
406 Many C++ classes in Qt use implicit data sharing to maximize
407 resource usage and minimize copying. Implicitly shared classes are
408 both safe and efficient when passed as arguments, because only a
409 pointer to the data is passed around, and the data is copied only
410 if and when a function writes to it, i.e., \e {copy-on-write}.
411
412 \tableofcontents
413
414 \section1 Overview
415
416 A shared class consists of a pointer to a shared data block that
417 contains a reference count and the data.
418
419 When a shared object is created, it sets the reference count to 1. The
420 reference count is incremented whenever a new object references the
421 shared data, and decremented when the object dereferences the shared
422 data. The shared data is deleted when the reference count becomes
423 zero.
424
425 \keyword deep copy
426 \keyword shallow copy
427
428 When dealing with shared objects, there are two ways of copying an
429 object. We usually speak about \e deep and \e shallow copies. A deep
430 copy implies duplicating an object. A shallow copy is a reference
431 copy, i.e. just a pointer to a shared data block. Making a deep copy
432 can be expensive in terms of memory and CPU. Making a shallow copy is
433 very fast, because it only involves setting a pointer and incrementing
434 the reference count.
435
436 Object assignment (with operator=()) for implicitly shared objects is
437 implemented using shallow copies.
438
439 The benefit of sharing is that a program does not need to duplicate
440 data unnecessarily, which results in lower memory use and less copying
441 of data. Objects can easily be assigned, sent as function arguments,
442 and returned from functions.
443
444 Implicit sharing takes place behind the scenes; the programmer
445 does not need to worry about it. Even in multithreaded
446 applications, implicit sharing takes place, as explained in
447 \l{Threads and Implicit Sharing}.
448
449 \section1 Implicit Sharing in Detail
450
451 Implicit sharing automatically detaches the object from a shared
452 block if the object is about to change and the reference count is
453 greater than one. (This is often called \e {copy-on-write} or
454 \e {value semantics}.)
455
456 An implicitly shared class has total control of its internal data. In
457 any member functions that modify its data, it automatically detaches
458 before modifying the data.
459
460 The QPen class, which uses implicit sharing, detaches from the shared
461 data in all member functions that change the internal data.
462
463 Code fragment:
464 \snippet doc/src/snippets/code/doc_src_groups.qdoc 0
465
466 \section1 List of Classes
467
468 The classes listed below automatically detach from common data if
469 an object is about to be changed. The programmer will not even
470 notice that the objects are shared. Thus you should treat
471 separate instances of them as separate objects. They will always
472 behave as separate objects but with the added benefit of sharing
473 data whenever possible. For this reason, you can pass instances
474 of these classes as arguments to functions by value without
475 concern for the copying overhead.
476
477 Example:
478 \snippet doc/src/snippets/code/doc_src_groups.qdoc 1
479
480 In this example, \c p1 and \c p2 share data until QPainter::begin()
481 is called for \c p2, because painting a pixmap will modify it.
482
483 \warning Do not copy an implicitly shared container (QMap,
484 QVector, etc.) while you are iterating over it using an non-const
485 \l{STL-style iterator}.
486*/
487
488/*!
489 \group ssl
490 \title Secure Sockets Layer (SSL) Classes
491 \ingroup groups
492
493 \brief Classes for secure communication over network sockets.
494 \keyword SSL
495
496 The classes below provide support for secure network communication using
497 the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} to
498 perform encryption and protocol handling.
499
500 See the \l{General Qt Requirements} page for information about the
501 versions of OpenSSL that are known to work with Qt.
502
503 \note Due to import and export restrictions in some parts of the world, we
504 are unable to supply the OpenSSL Toolkit with Qt packages. Developers wishing
505 to use SSL communication in their deployed applications should either ensure
506 that their users have the appropriate libraries installed, or they should
507 consult a suitably qualified legal professional to ensure that applications
508 using code from the OpenSSL project are correctly certified for import
509 and export in relevant regions of the world.
510
511 When the QtNetwork module is built with SSL support, the library is linked
512 against OpenSSL in a way that requires OpenSSL license compliance.
513*/
514
515/*!
516 \group text
517 \title Text Processing Classes
518 \ingroup groups
519 \ingroup text-processing
520
521 \brief Classes for text processing. (See also \l{XML Classes}.)
522
523 These classes are relevant to text processing. See also the
524 \l{Rich Text Processing} overview and the
525 \l{XML classes}.
526*/
527
528/*!
529 \group thread
530 \title Threading Classes
531 \ingroup groups
532
533 \brief Classes that provide threading support.
534
535 These classes are relevant to threaded applications. See
536 \l{Thread Support in Qt} for an overview of the features
537 Qt provides to help with multithreaded programming.
538*/
539
540
541/*!
542 \group time
543 \title Date and Time Classes
544 \ingroup groups
545
546 \brief Classes for handling date and time.
547
548 These classes provide system-independent date and time abstractions.
549
550*/
551
552/*!
553 \group tools
554 \title Non-GUI Classes
555 \ingroup groups
556
557 \brief Collection classes such as list, queue, stack and string, along
558 with other classes that can be used without needing QApplication.
559
560 The non-GUI classes are general-purpose collection and string classes
561 that may be used independently of the GUI classes.
562
563 In particular, these classes do not depend on QApplication at all,
564 and so can be used in non-GUI programs.
565
566*/
567
568/*!
569 \group xml-tools
570 \title XML Classes
571 \ingroup groups
572
573 \brief Classes that support XML, via, for example DOM and SAX.
574
575 These classes are relevant to XML users.
576*/
577
578/*!
579 \group script
580 \title Scripting Classes
581 \ingroup groups
582 \ingroup scripting
583
584 \brief Qt Script-related classes and overviews.
585
586 These classes are relevant to Qt Script users.
587*/
588
589/*!
590 \group scripttools
591 \title Script Tools
592 \ingroup groups
593 \ingroup scripting
594
595 \brief Classes for managing and debugging scripts.
596
597 These classes are relevant to developers who are working with Qt Script's
598 debugging features.
599*/
Note: See TracBrowser for help on using the repository browser.