summaryrefslogtreecommitdiffstats
path: root/src/H5Gcompact.c
blob: d5698a8ae5efa5d8c72b9cfdcf95615795b9fc2f (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Copyright by The HDF Group.                                               *
 * Copyright by the Board of Trustees of the University of Illinois.         *
 * All rights reserved.                                                      *
 *                                                                           *
 * This file is part of HDF5.  The full HDF5 copyright notice, including     *
 * terms governing use, modification, and redistribution, is contained in    *
 * the COPYING file, which can be found at the root of the source code       *
 * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.  *
 * If you do not have access to either file, you may request a copy from     *
 * help@hdfgroup.org.                                                        *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

/*-------------------------------------------------------------------------
 *
 * Created:		H5Gcompact.c
 *			Sep  5 2005
 *			Quincey Koziol <koziol@ncsa.uiuc.edu>
 *
 * Purpose:		Functions for handling compact storage.
 *
 *-------------------------------------------------------------------------
 */
#include "H5Gmodule.h"          /* This source code file is part of the H5G module */


/* Packages needed by this file... */
#include "H5private.h"		/* Generic Functions			*/
#include "H5Eprivate.h"		/* Error handling		  	*/
#include "H5Gpkg.h"		/* Groups		  		*/
#include "H5MMprivate.h"	/* Memory management			*/

/* Private typedefs */

/* User data for link message iteration when building link table */
typedef struct {
    H5G_link_table_t *ltable;   /* Pointer to link table to build */
    size_t curr_lnk;            /* Current link to operate on */
} H5G_iter_bt_t;

/* User data for deleting a link in the link messages */
typedef struct {
    /* downward */
    H5F_t       *file;          /* File that object header is located within */
    hid_t       dxpl_id;        /* DXPL during insertion */
    H5RS_str_t *grp_full_path_r;/* Full path for group of link */
    const char *name;           /* Link name to search for */
} H5G_iter_rm_t;

/* User data for link message iteration when querying link info */
typedef struct {
    /* downward */
    const char *name;           /* Name to search for */

    /* upward */
    H5O_link_t *lnk;            /* Link struct to fill in */
    hbool_t found;              /* Flag to indicate that the object was found */
} H5G_iter_lkp_t;

/* Private macros */

/* PRIVATE PROTOTYPES */
static herr_t H5G_compact_build_table_cb(const void *_mesg, unsigned idx, void *_udata);
static herr_t H5G_compact_build_table(const H5O_loc_t *oloc, hid_t dxpl_id,
    const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order,
    H5G_link_table_t *ltable);


/*-------------------------------------------------------------------------
 * Function:	H5G_compact_build_table_cb
 *
 * Purpose:	Callback routine for searching 'link' messages for a particular
 *              name.
 *
 * Return:	Non-negative on success/Negative on failure
 *
 * Programmer:	Quincey Koziol
 *		koziol@ncsa.uiuc.edu
 *		Sep  5 2005
 *
 *-------------------------------------------------------------------------
 */
static herr_t
H5G_compact_build_table_cb(const void *_mesg, unsigned H5_ATTR_UNUSED idx, void *_udata)
{
    const H5O_link_t *lnk = (const H5O_link_t *)_mesg;  /* Pointer to link */
    H5G_iter_bt_t *udata = (H5G_iter_bt_t *)_udata;     /* 'User data' passed in */
    herr_t ret_value=H5_ITER_CONT;             /* Return value */

    FUNC_ENTER_NOAPI_NOINIT

    /* check arguments */
    HDassert(lnk);
    HDassert(udata);
    HDassert(udata->curr_lnk < udata->ltable->nlinks);

    /* Copy link message into table */
    if(NULL == H5O_msg_copy(H5O_LINK_ID, lnk, &(udata->ltable->lnks[udata->curr_lnk])))
        HGOTO_ERROR(H5E_SYM, H5E_CANTCOPY, H5_ITER_ERROR, "can't copy link message")

    /* Increment current link entry to operate on */
    udata->curr_lnk++;

done:
    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G_compact_build_table_cb() */


/*-------------------------------------------------------------------------
 * Function:	H5G_compact_build_table
 *
 * Purpose:     Builds a table containing a sorted (alphabetically) list of
 *              links for a group
 *
 * Return:	Success:        Non-negative
 *		Failure:	Negative
 *
 * Programmer:	Quincey Koziol
 *	        Sep  6, 2005
 *
 *-------------------------------------------------------------------------
 */
static herr_t
H5G_compact_build_table(const H5O_loc_t *oloc, hid_t dxpl_id, const H5O_linfo_t *linfo,
    H5_index_t idx_type, H5_iter_order_t order, H5G_link_table_t *ltable)
{
    herr_t	ret_value = SUCCEED;    /* Return value */

    FUNC_ENTER_NOAPI_NOINIT

    /* Sanity check */
    HDassert(oloc);
    HDassert(linfo);
    HDassert(ltable);

    /* Set size of table */
    H5_CHECK_OVERFLOW(linfo->nlinks, hsize_t, size_t);
    ltable->nlinks = (size_t)linfo->nlinks;

    /* Allocate space for the table entries */
    if(ltable->nlinks > 0) {
        H5G_iter_bt_t udata;               /* User data for iteration callback */
        H5O_mesg_operator_t op;             /* Message operator */

        /* Allocate the link table */
        if((ltable->lnks = (H5O_link_t *)H5MM_malloc(sizeof(H5O_link_t) * ltable->nlinks)) == NULL)
            HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")

        /* Set up user data for iteration */
        udata.ltable = ltable;
        udata.curr_lnk = 0;

        /* Iterate through the link messages, adding them to the table */
        op.op_type = H5O_MESG_OP_APP;
        op.u.app_op = H5G_compact_build_table_cb;
        if(H5O_msg_iterate(oloc, H5O_LINK_ID, &op, &udata, dxpl_id) < 0)
            HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "error iterating over link messages")

        /* Sort link table in correct iteration order */
        if(H5G__link_sort_table(ltable, idx_type, order) < 0)
            HGOTO_ERROR(H5E_SYM, H5E_CANTSORT, FAIL, "error sorting link messages")
    } /* end if */
    else
        ltable->lnks = NULL;

done:
    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G_compact_build_table() */


/*-------------------------------------------------------------------------
 * Function:	H5G__compact_insert
 *
 * Purpose:	Insert a new symbol into the table described by GRP_ENT in
 *		file F.	 The name of the new symbol is NAME and its symbol
 *		table entry is OBJ_ENT.
 *
 * Return:	Non-negative on success/Negative on failure
 *
 * Programmer:	Quincey Koziol
 *		koziol@ncsa.uiuc.edu
 *		Sep  6 2005
 *
 *-------------------------------------------------------------------------
 */
herr_t
H5G__compact_insert(const H5O_loc_t *grp_oloc, H5O_link_t *obj_lnk,
    hid_t dxpl_id)
{
    herr_t     ret_value = SUCCEED;       /* Return value */

    FUNC_ENTER_PACKAGE

    /* check arguments */
    HDassert(grp_oloc && grp_oloc->file);
    HDassert(obj_lnk);

    /* Insert link message into group */
    if(H5O_msg_create(grp_oloc, H5O_LINK_ID, 0, H5O_UPDATE_TIME, obj_lnk, dxpl_id) < 0)
        HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create message")

done:
    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G__compact_insert() */


/*-------------------------------------------------------------------------
 * Function:	H5G__compact_get_name_by_idx
 *
 * Purpose:     Returns the name of objects in the group by giving index.
 *
 * Return:	Success:        Non-negative, length of name
 *		Failure:	Negative
 *
 * Programmer:	Quincey Koziol
 *	        Sep  6, 2005
 *
 *-------------------------------------------------------------------------
 */
ssize_t
H5G__compact_get_name_by_idx(const H5O_loc_t *oloc, hid_t dxpl_id,
    const H5O_linfo_t *linfo, H5_index_t idx_type, H5_iter_order_t order,
    hsize_t idx, char* name, size_t size)
{
    H5G_link_table_t    ltable = {0, NULL};     /* Link table */
    ssize_t		ret_value = -1;         /* Return value */

    FUNC_ENTER_PACKAGE

    /* Sanity check */
    HDassert(oloc);

    /* Build table of all link messages */
    if(H5G_compact_build_table(oloc, dxpl_id, linfo, idx_type, order, &ltable) < 0)
        HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create link message table")

    /* Check for going out of bounds */
    if(idx >= ltable.nlinks)
	HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "index out of bound")

    /* Get the length of the name */
    ret_value = (ssize_t)HDstrlen(ltable.lnks[idx].name);

    /* Copy the name into the user's buffer, if given */
    if(name) {
        HDstrncpy(name, ltable.lnks[idx].name, MIN((size_t)(ret_value + 1), size));
        if((size_t)ret_value >= size)
            name[size - 1]='\0';
    } /* end if */

done:
    /* Release link table */
    if(ltable.lnks && H5G__link_release_table(&ltable) < 0)
        HDONE_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "unable to release link table")

    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G__compact_get_name_by_idx() */


/*-------------------------------------------------------------------------
 * Function:	H5G_compact_remove_common_cb
 *
 * Purpose:	Common callback routine for deleting 'link' message for a
 *              particular name.
 *
 * Return:	Non-negative on success/Negative on failure
 *
 * Programmer:	Quincey Koziol
 *		koziol@ncsa.uiuc.edu
 *		Sep  5 2005
 *
 *-------------------------------------------------------------------------
 */
static herr_t
H5G_compact_remove_common_cb(const void *_mesg, unsigned H5_ATTR_UNUSED idx, void *_udata)
{
    const H5O_link_t *lnk = (const H5O_link_t *)_mesg;  /* Pointer to link */
    H5G_iter_rm_t *udata = (H5G_iter_rm_t *)_udata;     /* 'User data' passed in */
    herr_t ret_value = H5_ITER_CONT;           /* Return value */

    FUNC_ENTER_NOAPI_NOINIT

    /* check arguments */
    HDassert(lnk);
    HDassert(udata);

    /* If we've found the right link, get the object type */
    if(HDstrcmp(lnk->name, udata->name) == 0) {
        /* Replace path names for link being removed */
        if(H5G__link_name_replace(udata->file, udata->dxpl_id, udata->grp_full_path_r, lnk) < 0)
            HGOTO_ERROR(H5E_SYM, H5E_CANTGET, H5_ITER_ERROR, "unable to get object type")

        /* Stop the iteration, we found the correct link */
        HGOTO_DONE(H5_ITER_STOP)
    } /* end if */

done:
    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G_compact_remove_common_cb() */


/*-------------------------------------------------------------------------
 * Function:	H5G__compact_remove
 *
 * Purpose:	Remove NAME from links.
 *
 * Return:	Non-negative on success/Negative on failure
 *
 * Programmer:	Quincey Koziol
 *              Monday, September 19, 2005
 *
 *-------------------------------------------------------------------------
 */
herr_t
H5G__compact_remove(const H5O_loc_t *oloc, hid_t dxpl_id, H5RS_str_t *grp_full_path_r,
    const char *name)
{
    H5G_iter_rm_t udata;               /* Data to pass through OH iteration */
    herr_t ret_value = SUCCEED;         /* Return value */

    FUNC_ENTER_PACKAGE

    HDassert(oloc && oloc->file);
    HDassert(name && *name);

    /* Initialize data to pass through object header iteration */
    udata.file = oloc->file;
    udata.dxpl_id = dxpl_id;
    udata.grp_full_path_r = grp_full_path_r;
    udata.name = name;

    /* Iterate over the link messages to delete the right one */
    if(H5O_msg_remove_op(oloc, H5O_LINK_ID, H5O_FIRST, H5G_compact_remove_common_cb, &udata, TRUE, dxpl_id) < 0)
        HGOTO_ERROR(H5E_SYM, H5E_CANTDELETE, FAIL, "unable to delete link message")

done:
    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G__compact_remove() */


/*-------------------------------------------------------------------------
 * Function:	H5G__compact_remove_by_idx
 *
 * Purpose:	Remove link from group, according to an index order.
 *
 * Return:	Non-negative on success/Negative on failure
 *
 * Programmer:	Quincey Koziol
 *              Tuesday, November 14, 2006
 *
 *-------------------------------------------------------------------------
 */
herr_t
H5G__compact_remove_by_idx(const H5O_loc_t *oloc, hid_t dxpl_id,
    const H5O_linfo_t *linfo, H5RS_str_t *grp_full_path_r, H5_index_t idx_type,
    H5_iter_order_t order, hsize_t n)
{
    H5G_link_table_t ltable = {0, NULL};/* Link table */
    H5G_iter_rm_t udata;                /* Data to pass through OH iteration */
    herr_t ret_value = SUCCEED;         /* Return value */

    FUNC_ENTER_PACKAGE

    HDassert(oloc && oloc->file);
    HDassert(linfo);

    /* Build table of all link messages, sorted according to desired order */
    if(H5G_compact_build_table(oloc, dxpl_id, linfo, idx_type, order, &ltable) < 0)
        HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create link message table")

    /* Check for going out of bounds */
    if(n >= ltable.nlinks)
	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "index out of bound")

    /* Initialize data to pass through object header iteration */
    udata.file = oloc->file;
    udata.dxpl_id = dxpl_id;
    udata.grp_full_path_r = grp_full_path_r;
    udata.name = ltable.lnks[n].name;

    /* Iterate over the link messages to delete the right one */
    if(H5O_msg_remove_op(oloc, H5O_LINK_ID, H5O_FIRST, H5G_compact_remove_common_cb, &udata, TRUE, dxpl_id) < 0)
        HGOTO_ERROR(H5E_SYM, H5E_CANTDELETE, FAIL, "unable to delete link message")

done:
    /* Release link table */
    if(ltable.lnks && H5G__link_release_table(&ltable) < 0)
        HDONE_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "unable to release link table")

    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G__compact_remove_by_idx() */


/*-------------------------------------------------------------------------
 * Function:	H5G__compact_iterate
 *
 * Purpose:	Iterate over the links in a group
 *
 * Return:	Non-negative on success/Negative on failure
 *
 * Programmer:	Quincey Koziol
 *              Monday, October  3, 2005
 *
 *-------------------------------------------------------------------------
 */
herr_t
H5G__compact_iterate(const H5O_loc_t *oloc, hid_t dxpl_id, const H5O_linfo_t *linfo,
    H5_index_t idx_type, H5_iter_order_t order, hsize_t skip, hsize_t *last_lnk,
    H5G_lib_iterate_t op, void *op_data)
{
    H5G_link_table_t    ltable = {0, NULL};     /* Link table */
    herr_t ret_value = FAIL;    /* Return value */

    FUNC_ENTER_PACKAGE

    /* Sanity check */
    HDassert(oloc);
    HDassert(linfo);
    HDassert(op);

    /* Build table of all link messages */
    if(H5G_compact_build_table(oloc, dxpl_id, linfo, idx_type, order, &ltable) < 0)
        HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create link message table")

    /* Iterate over links in table */
    if((ret_value = H5G__link_iterate_table(&ltable, skip, last_lnk, op, op_data)) < 0)
        HERROR(H5E_SYM, H5E_CANTNEXT, "iteration operator failed");

done:
    /* Release link table */
    if(ltable.lnks && H5G__link_release_table(&ltable) < 0)
        HDONE_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "unable to release link table")

    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G__compact_iterate() */


/*-------------------------------------------------------------------------
 * Function:	H5G_compact_lookup_cb
 *
 * Purpose:	Callback routine for searching 'link' messages for a particular
 *              name & gettting object location for it
 *
 * Return:	Non-negative on success/Negative on failure
 *
 * Programmer:	Quincey Koziol
 *		koziol@ncsa.uiuc.edu
 *		Sep 20 2005
 *
 *-------------------------------------------------------------------------
 */
static herr_t
H5G_compact_lookup_cb(const void *_mesg, unsigned H5_ATTR_UNUSED idx, void *_udata)
{
    const H5O_link_t *lnk = (const H5O_link_t *)_mesg;  /* Pointer to link */
    H5G_iter_lkp_t *udata = (H5G_iter_lkp_t *)_udata;     /* 'User data' passed in */
    herr_t ret_value = H5_ITER_CONT;           /* Return value */

    FUNC_ENTER_NOAPI_NOINIT

    /* check arguments */
    HDassert(lnk);
    HDassert(udata);

    /* Check for name to get information */
    if(HDstrcmp(lnk->name, udata->name) == 0) {
        if(udata->lnk) {
            /* Copy link information */
            if(NULL == H5O_msg_copy(H5O_LINK_ID, lnk, udata->lnk))
                HGOTO_ERROR(H5E_SYM, H5E_CANTCOPY, H5_ITER_ERROR, "can't copy link message")
        } /* end if */

        /* Indicate that the correct link was found */
        udata->found = TRUE;

        /* Stop iteration now */
        HGOTO_DONE(H5_ITER_STOP)
    } /* end if */

done:
    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G_compact_lookup_cb() */


/*-------------------------------------------------------------------------
 * Function:	H5G__compact_lookup
 *
 * Purpose:	Look up an object relative to a group, using link messages.
 *
 * Return:	Non-negative (TRUE/FALSE) on success/Negative on failure
 *
 * Programmer:	Quincey Koziol
 *		koziol@ncsa.uiuc.edu
 *		Sep 20 2005
 *
 *-------------------------------------------------------------------------
 */
htri_t
H5G__compact_lookup(const H5O_loc_t *oloc, const char *name, H5O_link_t *lnk,
    hid_t dxpl_id)
{
    H5G_iter_lkp_t udata;               /* User data for iteration callback */
    H5O_mesg_operator_t op;             /* Message operator */
    htri_t     ret_value = FAIL;        /* Return value */

    FUNC_ENTER_PACKAGE

    /* check arguments */
    HDassert(lnk && oloc->file);
    HDassert(name && *name);

    /* Set up user data for iteration */
    udata.name = name;
    udata.lnk = lnk;
    udata.found = FALSE;

    /* Iterate through the link messages, adding them to the table */
    op.op_type = H5O_MESG_OP_APP;
    op.u.app_op = H5G_compact_lookup_cb;
    if(H5O_msg_iterate(oloc, H5O_LINK_ID, &op, &udata, dxpl_id) < 0)
        HGOTO_ERROR(H5E_SYM, H5E_NOTFOUND, FAIL, "error iterating over link messages")

    /* Determine if we found the link we were looking for */
    ret_value = (htri_t)udata.found;

done:
    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G__compact_lookup() */


/*-------------------------------------------------------------------------
 * Function:	H5G__compact_lookup_by_idx
 *
 * Purpose:	Look up an object in a group using link messages,
 *              according to the order of an index
 *
 * Return:	Non-negative on success/Negative on failure
 *
 * Programmer:	Quincey Koziol
 *		koziol@hdfgroup.org
 *		Nov  6 2006
 *
 *-------------------------------------------------------------------------
 */
herr_t
H5G__compact_lookup_by_idx(const H5O_loc_t *oloc, hid_t dxpl_id, const H5O_linfo_t *linfo,
    H5_index_t idx_type, H5_iter_order_t order, hsize_t n, H5O_link_t *lnk)
{
    H5G_link_table_t ltable = {0, NULL};/* Link table */
    herr_t ret_value = SUCCEED;         /* Return value */

    FUNC_ENTER_PACKAGE

    /* check arguments */
    HDassert(oloc && oloc->file);
    HDassert(linfo);
    HDassert(lnk);

    /* Build table of all link messages, sorted according to desired order */
    if(H5G_compact_build_table(oloc, dxpl_id, linfo, idx_type, order, &ltable) < 0)
        HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create link message table")

    /* Check for going out of bounds */
    if(n >= ltable.nlinks)
	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "index out of bound")

    /* Copy link information */
    if(NULL == H5O_msg_copy(H5O_LINK_ID, &ltable.lnks[n], lnk))
        HGOTO_ERROR(H5E_SYM, H5E_CANTCOPY, H5_ITER_ERROR, "can't copy link message")

done:
    /* Release link table */
    if(ltable.lnks && H5G__link_release_table(&ltable) < 0)
        HDONE_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "unable to release link table")

    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G__compact_lookup_by_idx() */

#ifndef H5_NO_DEPRECATED_SYMBOLS

/*-------------------------------------------------------------------------
 * Function:	H5G__compact_get_type_by_idx
 *
 * Purpose:     Returns the type of objects in the group by giving index.
 *
 * Return:	Success:        Non-negative
 *		Failure:	Negative
 *
 * Programmer:	Quincey Koziol
 *	        Sep 12, 2005
 *
 *-------------------------------------------------------------------------
 */
H5G_obj_t
H5G__compact_get_type_by_idx(H5O_loc_t *oloc, hid_t dxpl_id, const H5O_linfo_t *linfo,
    hsize_t idx)
{
    H5G_link_table_t    ltable = {0, NULL};         /* Link table */
    H5G_obj_t		ret_value = H5G_UNKNOWN;    /* Return value */

    FUNC_ENTER_PACKAGE

    /* Sanity check */
    HDassert(oloc);

    /* Build table of all link messages */
    if(H5G_compact_build_table(oloc, dxpl_id, linfo, H5_INDEX_NAME, H5_ITER_INC, &ltable) < 0)
        HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, H5G_UNKNOWN, "can't create link message table")

    /* Check for going out of bounds */
    if(idx >= ltable.nlinks)
	HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, H5G_UNKNOWN, "index out of bound")

    /* Determine type of object */
    if(ltable.lnks[idx].type == H5L_TYPE_SOFT)
        ret_value = H5G_LINK;
    else if(ltable.lnks[idx].type >= H5L_TYPE_UD_MIN)
        ret_value = H5G_UDLINK;
    else if(ltable.lnks[idx].type == H5L_TYPE_HARD){
        H5O_loc_t tmp_oloc;             /* Temporary object location */
        H5O_type_t obj_type;            /* Type of object at location */

        /* Build temporary object location */
        tmp_oloc.file = oloc->file;
        tmp_oloc.addr = ltable.lnks[idx].u.hard.addr;

        /* Get the type of the object */
        if(H5O_obj_type(&tmp_oloc, &obj_type, dxpl_id) < 0)
            HGOTO_ERROR(H5E_SYM, H5E_CANTGET, H5G_UNKNOWN, "can't get object type")

        /* Map to group object type */
        if(H5G_UNKNOWN == (ret_value = H5G_map_obj_type(obj_type)))
            HGOTO_ERROR(H5E_SYM, H5E_BADTYPE, H5G_UNKNOWN, "can't determine object type")
    } else {
        HGOTO_ERROR(H5E_SYM, H5E_BADTYPE, H5G_UNKNOWN, "unknown link type")
    } /* end else */

done:
    /* Release link table */
    if(ltable.lnks && H5G__link_release_table(&ltable) < 0)
        HDONE_ERROR(H5E_SYM, H5E_CANTFREE, H5G_UNKNOWN, "unable to release link table")

    FUNC_LEAVE_NOAPI(ret_value)
} /* end H5G__compact_get_type_by_idx() */
#endif /* H5_NO_DEPRECATED_SYMBOLS */

'/> -rw-r--r--doc/src/howtos/timers.qdoc (renamed from doc/src/timers.qdoc)3
-rw-r--r--doc/src/howtos/unix-signal-handlers.qdoc (renamed from doc/src/unix-signal-handlers.qdoc)4
-rw-r--r--doc/src/images/activeqt-examples.pngbin0 -> 6671 bytes-rw-r--r--doc/src/images/animation-examples.pngbin0 -> 28060 bytes-rw-r--r--doc/src/images/ipc-examples.pngbin0 -> 7727 bytes-rw-r--r--doc/src/images/qq-thumbnail.pngbin0 -> 27022 bytes-rw-r--r--doc/src/images/statemachine-examples.pngbin0 -> 3326 bytes-rw-r--r--doc/src/images/webkit-examples.pngbin26874 -> 19323 bytes-rw-r--r--doc/src/index.qdoc195
-rw-r--r--doc/src/internationalization/i18n.qdoc (renamed from doc/src/i18n.qdoc)19
-rw-r--r--doc/src/internationalization/linguist-manual.qdoc (renamed from doc/src/linguist-manual.qdoc)0
-rw-r--r--doc/src/legal/editions.qdoc12
-rw-r--r--doc/src/legal/licenses.qdoc1
-rw-r--r--doc/src/modules.qdoc952
-rw-r--r--doc/src/network-programming/qtnetwork.qdoc (renamed from doc/src/qtnetwork.qdoc)50
-rw-r--r--doc/src/network-programming/ssl.qdoc (renamed from doc/src/qtcore.qdoc)31
-rw-r--r--doc/src/objectmodel/metaobjects.qdoc (renamed from doc/src/metaobjects.qdoc)1
-rw-r--r--doc/src/objectmodel/object.qdoc (renamed from doc/src/object.qdoc)9
-rw-r--r--doc/src/objectmodel/objecttrees.qdoc115
-rw-r--r--doc/src/objectmodel/properties.qdoc (renamed from doc/src/properties.qdoc)1
-rw-r--r--doc/src/objectmodel/signalsandslots.qdoc (renamed from doc/src/signalsandslots.qdoc)1
-rw-r--r--doc/src/objecttrees.qdoc117
-rw-r--r--doc/src/overviews.qdoc25
-rw-r--r--doc/src/painting-and-printing/coordsys.qdoc (renamed from doc/src/coordsys.qdoc)17
-rw-r--r--doc/src/painting-and-printing/paintsystem.qdoc (renamed from doc/src/paintsystem.qdoc)447
-rw-r--r--doc/src/painting-and-printing/printing.qdoc (renamed from doc/src/printing.qdoc)20
-rw-r--r--doc/src/platforms/atomic-operations.qdoc (renamed from doc/src/atomic-operations.qdoc)13
-rw-r--r--doc/src/platforms/compiler-notes.qdoc (renamed from doc/src/compiler-notes.qdoc)2
-rw-r--r--doc/src/platforms/emb-accel.qdoc (renamed from doc/src/emb-accel.qdoc)0
-rw-r--r--doc/src/platforms/emb-architecture.qdoc (renamed from doc/src/qtopiacore-architecture.qdoc)0
-rw-r--r--doc/src/platforms/emb-charinput.qdoc (renamed from doc/src/emb-charinput.qdoc)0
-rw-r--r--doc/src/platforms/emb-crosscompiling.qdoc (renamed from doc/src/emb-crosscompiling.qdoc)0
-rw-r--r--doc/src/platforms/emb-deployment.qdoc (renamed from doc/src/emb-deployment.qdoc)0
-rw-r--r--doc/src/platforms/emb-differences.qdoc (renamed from doc/src/emb-differences.qdoc)0
-rw-r--r--doc/src/platforms/emb-displaymanagement.qdoc (renamed from doc/src/qtopiacore-displaymanagement.qdoc)0
-rw-r--r--doc/src/platforms/emb-envvars.qdoc (renamed from doc/src/emb-envvars.qdoc)0
-rw-r--r--doc/src/platforms/emb-features.qdoc (renamed from doc/src/emb-features.qdoc)0
-rw-r--r--doc/src/platforms/emb-fonts.qdoc (renamed from doc/src/emb-fonts.qdoc)0
-rw-r--r--doc/src/platforms/emb-framebuffer-howto.qdoc (renamed from doc/src/emb-framebuffer-howto.qdoc)0
-rw-r--r--doc/src/platforms/emb-install.qdoc (renamed from doc/src/emb-install.qdoc)0
-rw-r--r--doc/src/platforms/emb-kmap2qmap.qdoc (renamed from doc/src/emb-kmap2qmap.qdoc)0
-rw-r--r--doc/src/platforms/emb-makeqpf.qdoc (renamed from doc/src/emb-makeqpf.qdoc)0
-rw-r--r--doc/src/platforms/emb-opengl.qdoc (renamed from doc/src/qtopiacore-opengl.qdoc)0
-rw-r--r--doc/src/platforms/emb-performance.qdoc (renamed from doc/src/emb-performance.qdoc)0
-rw-r--r--doc/src/platforms/emb-pointer.qdoc (renamed from doc/src/emb-pointer.qdoc)0
-rw-r--r--doc/src/platforms/emb-porting.qdoc (renamed from doc/src/emb-porting.qdoc)0
-rw-r--r--doc/src/platforms/emb-qvfb.qdoc (renamed from doc/src/emb-qvfb.qdoc)0
-rw-r--r--doc/src/platforms/emb-running.qdoc (renamed from doc/src/emb-running.qdoc)0
-rw-r--r--doc/src/platforms/emb-vnc.qdoc (renamed from doc/src/emb-vnc.qdoc)0
-rw-r--r--doc/src/platforms/mac-differences.qdoc (renamed from doc/src/mac-differences.qdoc)2
-rw-r--r--doc/src/platforms/platform-notes-rtos.qdoc (renamed from doc/src/platform-notes-rtos.qdoc)0
-rw-r--r--doc/src/platforms/platform-notes.qdoc (renamed from doc/src/platform-notes.qdoc)15
-rw-r--r--doc/src/platforms/qt-embedded-linux.qdoc (renamed from doc/src/qtopiacore.qdoc)16
-rw-r--r--doc/src/platforms/qt-embedded.qdoc (renamed from doc/src/qt-embedded.qdoc)2
-rw-r--r--doc/src/platforms/qtmac-as-native.qdoc (renamed from doc/src/qtmac-as-native.qdoc)2
-rw-r--r--doc/src/platforms/supported-platforms.qdoc (renamed from doc/src/supported-platforms.qdoc)2
-rw-r--r--doc/src/platforms/wince-customization.qdoc (renamed from doc/src/wince-customization.qdoc)0
-rw-r--r--doc/src/platforms/wince-introduction.qdoc (renamed from doc/src/wince-introduction.qdoc)34
-rw-r--r--doc/src/platforms/wince-opengl.qdoc (renamed from doc/src/wince-opengl.qdoc)0
-rw-r--r--doc/src/platforms/winsystem.qdoc (renamed from doc/src/winsystem.qdoc)3
-rw-r--r--doc/src/platforms/x11overlays.qdoc (renamed from doc/src/qtopengl.qdoc)69
-rw-r--r--doc/src/porting/porting-qsa.qdoc (renamed from doc/src/porting-qsa.qdoc)0
-rw-r--r--doc/src/porting/porting4-canvas.qdoc (renamed from doc/src/porting4-canvas.qdoc)1
-rw-r--r--doc/src/porting/porting4-designer.qdoc (renamed from doc/src/porting4-designer.qdoc)0
-rw-r--r--doc/src/porting/porting4-dnd.qdoc152
-rw-r--r--doc/src/porting/porting4-modifiedvirtual.qdocinc (renamed from doc/src/porting4-modifiedvirtual.qdocinc)0
-rw-r--r--doc/src/porting/porting4-obsoletedmechanism.qdocinc (renamed from doc/src/porting4-obsoletedmechanism.qdocinc)0
-rw-r--r--doc/src/porting/porting4-overview.qdoc (renamed from doc/src/porting4-overview.qdoc)0
-rw-r--r--doc/src/porting/porting4-removedenumvalues.qdocinc (renamed from doc/src/porting4-removedenumvalues.qdocinc)0
-rw-r--r--doc/src/porting/porting4-removedtypes.qdocinc (renamed from doc/src/porting4-removedtypes.qdocinc)0
-rw-r--r--doc/src/porting/porting4-removedvariantfunctions.qdocinc (renamed from doc/src/porting4-removedvariantfunctions.qdocinc)0
-rw-r--r--doc/src/porting/porting4-removedvirtual.qdocinc (renamed from doc/src/porting4-removedvirtual.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedclasses.qdocinc (renamed from doc/src/porting4-renamedclasses.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedenumvalues.qdocinc (renamed from doc/src/porting4-renamedenumvalues.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedfunctions.qdocinc (renamed from doc/src/porting4-renamedfunctions.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedstatic.qdocinc (renamed from doc/src/porting4-renamedstatic.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedtypes.qdocinc (renamed from doc/src/porting4-renamedtypes.qdocinc)0
-rw-r--r--doc/src/porting/porting4.qdoc (renamed from doc/src/porting4.qdoc)37
-rw-r--r--doc/src/porting/qt3to4.qdoc (renamed from doc/src/qt3to4.qdoc)0
-rw-r--r--doc/src/porting/qt4-accessibility.qdoc (renamed from doc/src/qt4-accessibility.qdoc)1
-rw-r--r--doc/src/porting/qt4-arthur.qdoc (renamed from doc/src/qt4-arthur.qdoc)0
-rw-r--r--doc/src/porting/qt4-designer.qdoc (renamed from doc/src/qt4-designer.qdoc)0
-rw-r--r--doc/src/porting/qt4-interview.qdoc (renamed from doc/src/qt4-interview.qdoc)0
-rw-r--r--doc/src/porting/qt4-mainwindow.qdoc (renamed from doc/src/qt4-mainwindow.qdoc)0
-rw-r--r--doc/src/porting/qt4-network.qdoc (renamed from doc/src/qt4-network.qdoc)0
-rw-r--r--doc/src/porting/qt4-scribe.qdoc (renamed from doc/src/qt4-scribe.qdoc)0
-rw-r--r--doc/src/porting/qt4-sql.qdoc (renamed from doc/src/qt4-sql.qdoc)0
-rw-r--r--doc/src/porting/qt4-styles.qdoc (renamed from doc/src/qt4-styles.qdoc)0
-rw-r--r--doc/src/porting/qt4-threads.qdoc (renamed from doc/src/qt4-threads.qdoc)0
-rw-r--r--doc/src/porting/qt4-tulip.qdoc (renamed from doc/src/qt4-tulip.qdoc)0
-rw-r--r--doc/src/qt-webpages.qdoc (renamed from doc/src/trolltech-webpages.qdoc)0
-rw-r--r--doc/src/qt3support.qdoc81
-rw-r--r--doc/src/qt4-intro.qdoc6
-rw-r--r--doc/src/qtdbus.qdoc124
-rw-r--r--doc/src/qtgui.qdoc59
-rw-r--r--doc/src/qtmain.qdoc93
-rw-r--r--doc/src/qtscripttools.qdoc72
-rw-r--r--doc/src/qtsvg.qdoc135
-rw-r--r--doc/src/qtuiloader.qdoc82
-rw-r--r--doc/src/qundo.qdoc113
-rw-r--r--doc/src/richtext.qdoc1076
-rw-r--r--doc/src/scripting/ecmascript.qdoc (renamed from doc/src/ecmascript.qdoc)1
-rw-r--r--doc/src/scripting/qtscriptdebugger-manual.qdoc (renamed from doc/src/qtscriptdebugger-manual.qdoc)1
-rw-r--r--doc/src/scripting/qtscriptextensions.qdoc (renamed from doc/src/qtscriptextensions.qdoc)11
-rw-r--r--doc/src/scripting/scripting.qdoc (renamed from doc/src/qtscript.qdoc)61
-rw-r--r--doc/src/snippets/code/doc_src_qtmultimedia.qdoc8
-rw-r--r--doc/src/sql-programming/qsqldatatype-table.qdoc (renamed from doc/src/qsqldatatype-table.qdoc)4
-rw-r--r--doc/src/sql-programming/sql-driver.qdoc (renamed from doc/src/sql-driver.qdoc)12
-rw-r--r--doc/src/sql-programming/sql-programming.qdoc (renamed from doc/src/qtsql.qdoc)153
-rw-r--r--doc/src/topics.qdoc290
-rw-r--r--doc/src/tutorials/addressbook-fr.qdoc3
-rw-r--r--doc/src/tutorials/addressbook.qdoc3
-rw-r--r--doc/src/tutorials/widgets-tutorial.qdoc15
-rw-r--r--doc/src/widgets-and-layouts/focus.qdoc (renamed from doc/src/focus.qdoc)17
-rw-r--r--doc/src/widgets-and-layouts/gallery-cde.qdoc (renamed from doc/src/gallery-cde.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-cleanlooks.qdoc (renamed from doc/src/gallery-cleanlooks.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-gtk.qdoc (renamed from doc/src/gallery-gtk.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-macintosh.qdoc (renamed from doc/src/gallery-macintosh.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-motif.qdoc (renamed from doc/src/gallery-motif.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-plastique.qdoc (renamed from doc/src/gallery-plastique.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-windows.qdoc (renamed from doc/src/gallery-windows.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-windowsvista.qdoc (renamed from doc/src/gallery-windowsvista.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-windowsxp.qdoc (renamed from doc/src/gallery-windowsxp.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery.qdoc (renamed from doc/src/gallery.qdoc)1
-rw-r--r--doc/src/widgets-and-layouts/layout.qdoc (renamed from doc/src/layout.qdoc)16
-rw-r--r--doc/src/widgets-and-layouts/styles.qdoc (renamed from doc/src/styles.qdoc)100
-rw-r--r--doc/src/widgets-and-layouts/stylesheet.qdoc (renamed from doc/src/stylesheet.qdoc)36
-rw-r--r--doc/src/widgets-and-layouts/widgets.qdoc187
-rw-r--r--doc/src/windows-and-dialogs/dialogs.qdoc (renamed from doc/src/qttest.qdoc)46
-rw-r--r--doc/src/windows-and-dialogs/mainwindow.qdoc279
-rw-r--r--doc/src/xml-processing/xml-patterns.qdoc (renamed from doc/src/qtxmlpatterns.qdoc)76
-rw-r--r--doc/src/xml-processing/xml-processing.qdoc (renamed from doc/src/qtxml.qdoc)402
-rw-r--r--doc/src/xml-processing/xquery-introduction.qdoc (renamed from doc/src/xquery-introduction.qdoc)3
-rw-r--r--src/3rdparty/easing/legal.qdoc2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp8
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp10
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc110
-rw-r--r--src/corelib/animation/qpropertyanimation.cpp2
-rw-r--r--src/corelib/codecs/codecs.qdoc (renamed from doc/src/codecs.qdoc)12
-rw-r--r--src/corelib/concurrent/qfuture.cpp6
-rw-r--r--src/corelib/concurrent/qfuturesynchronizer.cpp6
-rw-r--r--src/corelib/concurrent/qfuturewatcher.cpp4
-rw-r--r--src/corelib/concurrent/qrunnable.cpp2
-rw-r--r--src/corelib/concurrent/qtconcurrentfilter.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentmap.cpp10
-rw-r--r--src/corelib/concurrent/qtconcurrentrun.cpp6
-rw-r--r--src/corelib/concurrent/qthreadpool.cpp4
-rw-r--r--src/corelib/global/qendian.qdoc (renamed from doc/src/classes/qtendian.qdoc)2
-rw-r--r--src/corelib/global/qglobal.cpp4
-rw-r--r--src/corelib/global/qlibraryinfo.cpp3
-rw-r--r--src/corelib/global/qnamespace.qdoc (renamed from doc/src/classes/qnamespace.qdoc)2
-rw-r--r--src/corelib/io/qdatastream.cpp2
-rw-r--r--src/corelib/io/qdebug.cpp3
-rw-r--r--src/corelib/io/qdir.cpp2
-rw-r--r--src/corelib/io/qfile.cpp2
-rw-r--r--src/corelib/io/qprocess.cpp3
-rw-r--r--src/corelib/io/qresource.cpp2
-rw-r--r--src/corelib/io/qsettings.cpp3
-rw-r--r--src/corelib/io/qtemporaryfile.cpp2
-rw-r--r--src/corelib/io/qtextstream.cpp6
-rw-r--r--src/corelib/io/qurl.cpp4
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.cpp1
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp4
-rw-r--r--src/corelib/kernel/qbasictimer.cpp1
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp3
-rw-r--r--src/corelib/kernel/qcoreevent.cpp1
-rw-r--r--src/corelib/kernel/qobject.cpp2
-rw-r--r--src/corelib/kernel/qpointer.cpp2
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp1
-rw-r--r--src/corelib/kernel/qsignalmapper.cpp4
-rw-r--r--src/corelib/kernel/qsocketnotifier.cpp1
-rw-r--r--src/corelib/kernel/qsystemsemaphore.cpp1
-rw-r--r--src/corelib/kernel/qtimer.cpp3
-rw-r--r--src/corelib/kernel/qtranslator.cpp2
-rw-r--r--src/corelib/kernel/qvariant.cpp3
-rw-r--r--src/corelib/kernel/qwineventnotifier_p.cpp2
-rw-r--r--src/corelib/plugin/qlibrary.cpp2
-rw-r--r--src/corelib/plugin/qplugin.qdoc (renamed from doc/src/classes/qplugin.qdoc)0
-rw-r--r--src/corelib/plugin/qpluginloader.cpp2
-rw-r--r--src/corelib/plugin/quuid.cpp1
-rw-r--r--src/corelib/thread/qmutex.cpp3
-rw-r--r--src/corelib/thread/qreadwritelock.cpp3
-rw-r--r--src/corelib/thread/qsemaphore.cpp1
-rw-r--r--src/corelib/thread/qthread.cpp2
-rw-r--r--src/corelib/thread/qthreadstorage.cpp2
-rw-r--r--src/corelib/thread/qwaitcondition.qdoc (renamed from doc/src/classes/qwaitcondition.qdoc)1
-rw-r--r--src/corelib/tools/qalgorithms.qdoc (renamed from doc/src/classes/qalgorithms.qdoc)2
-rw-r--r--src/corelib/tools/qbytearray.cpp4
-rw-r--r--src/corelib/tools/qbytearraymatcher.cpp2
-rw-r--r--src/corelib/tools/qcache.qdoc (renamed from doc/src/classes/qcache.qdoc)2
-rw-r--r--src/corelib/tools/qchar.cpp4
-rw-r--r--src/corelib/tools/qdatetime.cpp6
-rw-r--r--src/corelib/tools/qhash.cpp4
-rw-r--r--src/corelib/tools/qiterator.qdoc (renamed from doc/src/classes/qiterator.qdoc)0
-rw-r--r--src/corelib/tools/qline.cpp4
-rw-r--r--src/corelib/tools/qlinkedlist.cpp2
-rw-r--r--src/corelib/tools/qlistdata.cpp2
-rw-r--r--src/corelib/tools/qlocale.cpp4
-rw-r--r--src/corelib/tools/qmap.cpp4
-rw-r--r--src/corelib/tools/qpair.qdoc (renamed from doc/src/classes/qpair.qdoc)0
-rw-r--r--src/corelib/tools/qpoint.cpp4
-rw-r--r--src/corelib/tools/qqueue.cpp2
-rw-r--r--src/corelib/tools/qrect.cpp4
-rw-r--r--src/corelib/tools/qregexp.cpp3
-rw-r--r--src/corelib/tools/qset.qdoc (renamed from doc/src/classes/qset.qdoc)2
-rw-r--r--src/corelib/tools/qshareddata.cpp663
-rw-r--r--src/corelib/tools/qsharedpointer.cpp2
-rw-r--r--src/corelib/tools/qsize.cpp4
-rw-r--r--src/corelib/tools/qstack.cpp2
-rw-r--r--src/corelib/tools/qstring.cpp10
-rw-r--r--src/corelib/tools/qstringbuilder.cpp8
-rw-r--r--src/corelib/tools/qstringlist.cpp4
-rw-r--r--src/corelib/tools/qstringmatcher.cpp2
-rw-r--r--src/corelib/tools/qtextboundaryfinder.cpp2
-rw-r--r--src/corelib/tools/qtimeline.cpp2
-rw-r--r--src/corelib/tools/qvarlengtharray.qdoc (renamed from doc/src/classes/qvarlengtharray.qdoc)0
-rw-r--r--src/corelib/tools/qvector.cpp2
-rw-r--r--src/corelib/xml/qxmlstream.cpp4
-rw-r--r--src/gui/accessible/qaccessible.cpp2
-rw-r--r--src/gui/dialogs/qabstractprintdialog.cpp5
-rw-r--r--src/gui/dialogs/qcolordialog.cpp4
-rw-r--r--src/gui/dialogs/qdialog.cpp4
-rw-r--r--src/gui/dialogs/qerrormessage.cpp3
-rw-r--r--src/gui/dialogs/qfiledialog.cpp4
-rw-r--r--src/gui/dialogs/qfontdialog.cpp5
-rw-r--r--src/gui/dialogs/qinputdialog.cpp4
-rw-r--r--src/gui/dialogs/qmessagebox.cpp4
-rw-r--r--src/gui/dialogs/qpagesetupdialog.cpp46
-rw-r--r--src/gui/dialogs/qprintdialog.qdoc (renamed from doc/src/classes/qprintdialog.qdoc)0
-rw-r--r--src/gui/dialogs/qprintpreviewdialog.cpp3
-rw-r--r--src/gui/dialogs/qprogressdialog.cpp4
-rw-r--r--src/gui/embedded/qdirectpainter_qws.cpp2
-rw-r--r--src/gui/embedded/qlock.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicsgridlayout.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp13
-rw-r--r--src/gui/graphicsview/qgraphicsitemanimation.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicslayout.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicslinearlayout.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp9
-rw-r--r--src/gui/graphicsview/qgraphicssceneindex.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicstransform.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp1
-rw-r--r--src/gui/image/qbitmap.cpp2
-rw-r--r--src/gui/image/qicon.cpp4
-rw-r--r--src/gui/image/qiconengine.cpp4
-rw-r--r--src/gui/image/qimage.cpp4
-rw-r--r--src/gui/image/qimagereader.cpp2
-rw-r--r--src/gui/image/qimagewriter.cpp2
-rw-r--r--src/gui/image/qmovie.cpp2
-rw-r--r--src/gui/image/qpicture.cpp6
-rw-r--r--src/gui/image/qpixmap.cpp4
-rw-r--r--src/gui/image/qpixmapcache.cpp3
-rw-r--r--src/gui/image/qpixmapfilter.cpp8
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.cpp1
-rw-r--r--src/gui/itemviews/qabstractitemdelegate.cpp2
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp2
-rw-r--r--src/gui/itemviews/qcolumnview.cpp2
-rw-r--r--src/gui/itemviews/qheaderview.cpp2
-rw-r--r--src/gui/itemviews/qitemdelegate.cpp2
-rw-r--r--src/gui/itemviews/qlistview.cpp2
-rw-r--r--src/gui/itemviews/qlistwidget.cpp2
-rw-r--r--src/gui/itemviews/qstringlistmodel.cpp2
-rw-r--r--src/gui/itemviews/qstyleditemdelegate.cpp2
-rw-r--r--src/gui/itemviews/qtableview.cpp2
-rw-r--r--src/gui/itemviews/qtablewidget.cpp2
-rw-r--r--src/gui/itemviews/qtreeview.cpp2
-rw-r--r--src/gui/itemviews/qtreewidget.cpp4
-rw-r--r--src/gui/kernel/qaction.cpp4
-rw-r--r--src/gui/kernel/qactiongroup.cpp2
-rw-r--r--src/gui/kernel/qapplication.cpp6
-rw-r--r--src/gui/kernel/qboxlayout.cpp5
-rw-r--r--src/gui/kernel/qclipboard.cpp4
-rw-r--r--src/gui/kernel/qcursor.cpp2
-rw-r--r--src/gui/kernel/qdesktopwidget.qdoc (renamed from doc/src/classes/qdesktopwidget.qdoc)2
-rw-r--r--src/gui/kernel/qformlayout.cpp2
-rw-r--r--src/gui/kernel/qgridlayout.cpp3
-rw-r--r--src/gui/kernel/qkeymapper.cpp1
-rw-r--r--src/gui/kernel/qkeysequence.cpp3
-rw-r--r--src/gui/kernel/qlayout.cpp1
-rw-r--r--src/gui/kernel/qlayoutitem.cpp3
-rw-r--r--src/gui/kernel/qmime_mac.cpp3
-rw-r--r--src/gui/kernel/qmime_win.cpp2
-rw-r--r--src/gui/kernel/qpalette.cpp4
-rw-r--r--src/gui/kernel/qshortcut.cpp2
-rw-r--r--src/gui/kernel/qsizepolicy.qdoc (renamed from doc/src/classes/qsizepolicy.qdoc)1
-rw-r--r--src/gui/kernel/qsound.cpp2
-rw-r--r--src/gui/kernel/qstackedlayout.cpp2
-rw-r--r--src/gui/kernel/qtooltip.cpp2
-rw-r--r--src/gui/kernel/qwhatsthis.cpp2
-rw-r--r--src/gui/kernel/qwidget.cpp44
-rw-r--r--src/gui/kernel/qwidgetaction.cpp5
-rw-r--r--src/gui/math3d/qgenericmatrix.cpp2
-rw-r--r--src/gui/math3d/qmatrix4x4.cpp1
-rw-r--r--src/gui/math3d/qquaternion.cpp1
-rw-r--r--src/gui/math3d/qvector2d.cpp2
-rw-r--r--src/gui/math3d/qvector3d.cpp1
-rw-r--r--src/gui/math3d/qvector4d.cpp1
-rw-r--r--src/gui/painting/qbrush.cpp10
-rw-r--r--src/gui/painting/qcolor.cpp4
-rw-r--r--src/gui/painting/qcolormap.qdoc (renamed from doc/src/classes/qcolormap.qdoc)2
-rw-r--r--src/gui/painting/qmatrix.cpp2
-rw-r--r--src/gui/painting/qpaintdevice.qdoc (renamed from doc/src/classes/qpaintdevice.qdoc)2
-rw-r--r--src/gui/painting/qpaintengine.cpp2
-rw-r--r--src/gui/painting/qpainter.cpp4
-rw-r--r--src/gui/painting/qpainterpath.cpp4
-rw-r--r--src/gui/painting/qpen.cpp4
-rw-r--r--src/gui/painting/qpolygon.cpp4
-rw-r--r--src/gui/painting/qprinter.cpp6
-rw-r--r--src/gui/painting/qprinterinfo.qdoc (renamed from doc/src/classes/qprinterinfo.qdoc)2
-rw-r--r--src/gui/painting/qregion.cpp2
-rw-r--r--src/gui/painting/qstylepainter.cpp2
-rw-r--r--src/gui/painting/qtransform.cpp2
-rw-r--r--src/gui/styles/qmacstyle.qdoc (renamed from doc/src/classes/qmacstyle.qdoc)0
-rw-r--r--src/gui/styles/qstyleoption.cpp2
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.cpp2
-rw-r--r--src/gui/text/qfont.cpp9
-rw-r--r--src/gui/text/qfontdatabase.cpp6
-rw-r--r--src/gui/text/qfontmetrics.cpp6
-rw-r--r--src/gui/text/qsyntaxhighlighter.cpp2
-rw-r--r--src/gui/text/qtextcursor.cpp4
-rw-r--r--src/gui/text/qtextdocument.cpp4
-rw-r--r--src/gui/text/qtextdocumentfragment.cpp2
-rw-r--r--src/gui/text/qtextdocumentwriter.cpp2
-rw-r--r--src/gui/text/qtextformat.cpp20
-rw-r--r--src/gui/text/qtextlayout.cpp6
-rw-r--r--src/gui/text/qtextlist.cpp2
-rw-r--r--src/gui/text/qtextobject.cpp16
-rw-r--r--src/gui/text/qtextoption.cpp2
-rw-r--r--src/gui/text/qtexttable.cpp4
-rw-r--r--src/gui/util/qsystemtrayicon.cpp1
-rw-r--r--src/gui/util/qundogroup.cpp1
-rw-r--r--src/gui/util/qundostack.cpp2
-rw-r--r--src/gui/util/qundoview.cpp2
-rw-r--r--src/gui/widgets/qbuttongroup.cpp2
-rw-r--r--src/gui/widgets/qcalendarwidget.cpp2
-rw-r--r--src/gui/widgets/qcheckbox.cpp2
-rw-r--r--src/gui/widgets/qcombobox.cpp2
-rw-r--r--src/gui/widgets/qcommandlinkbutton.cpp2
-rw-r--r--src/gui/widgets/qdatetimeedit.cpp6
-rw-r--r--src/gui/widgets/qdial.cpp2
-rw-r--r--src/gui/widgets/qdialogbuttonbox.cpp4
-rw-r--r--src/gui/widgets/qdockwidget.cpp2
-rw-r--r--src/gui/widgets/qfocusframe.cpp2
-rw-r--r--src/gui/widgets/qfontcombobox.cpp1
-rw-r--r--src/gui/widgets/qframe.cpp2
-rw-r--r--src/gui/widgets/qgroupbox.cpp2
-rw-r--r--src/gui/widgets/qlabel.cpp2
-rw-r--r--src/gui/widgets/qlcdnumber.cpp2
-rw-r--r--src/gui/widgets/qlineedit.cpp2
-rw-r--r--src/gui/widgets/qmainwindow.cpp4
-rw-r--r--src/gui/widgets/qmdiarea.cpp4
-rw-r--r--src/gui/widgets/qmdisubwindow.cpp4
-rw-r--r--src/gui/widgets/qmenu.cpp4
-rw-r--r--src/gui/widgets/qmenubar.cpp5
-rw-r--r--src/gui/widgets/qplaintextedit.cpp7
-rw-r--r--src/gui/widgets/qprintpreviewwidget.cpp2
-rw-r--r--src/gui/widgets/qprogressbar.cpp2
-rw-r--r--src/gui/widgets/qpushbutton.cpp2
-rw-r--r--src/gui/widgets/qradiobutton.cpp2
-rw-r--r--src/gui/widgets/qrubberband.cpp3
-rw-r--r--src/gui/widgets/qscrollarea.cpp2
-rw-r--r--src/gui/widgets/qsizegrip.cpp3
-rw-r--r--src/gui/widgets/qslider.cpp2
-rw-r--r--src/gui/widgets/qspinbox.cpp4
-rw-r--r--src/gui/widgets/qsplashscreen.cpp3
-rw-r--r--src/gui/widgets/qsplitter.cpp2
-rw-r--r--src/gui/widgets/qstackedwidget.cpp3
-rw-r--r--src/gui/widgets/qstatusbar.cpp4
-rw-r--r--src/gui/widgets/qtabbar.cpp2
-rw-r--r--src/gui/widgets/qtabwidget.cpp2
-rw-r--r--src/gui/widgets/qtextbrowser.cpp2
-rw-r--r--src/gui/widgets/qtextedit.cpp4
-rw-r--r--src/gui/widgets/qtoolbar.cpp4
-rw-r--r--src/gui/widgets/qtoolbox.cpp2
-rw-r--r--src/gui/widgets/qtoolbutton.cpp2
-rw-r--r--src/gui/widgets/qvalidator.cpp9
-rw-r--r--src/gui/widgets/qworkspace.cpp1
-rw-r--r--src/network/access/qftp.cpp4
-rw-r--r--src/network/access/qhttp.cpp10
-rw-r--r--src/network/access/qnetworkrequest.cpp2
-rw-r--r--src/network/kernel/qauthenticator.cpp2
-rw-r--r--src/network/kernel/qhostaddress.cpp2
-rw-r--r--src/network/kernel/qhostinfo.cpp2
-rw-r--r--src/network/kernel/qnetworkinterface.cpp4
-rw-r--r--src/network/kernel/qnetworkproxy.cpp4
-rw-r--r--src/network/kernel/qurlinfo.cpp2
-rw-r--r--src/network/socket/qabstractsocket.cpp2
-rw-r--r--src/network/socket/qnativesocketengine.cpp2
-rw-r--r--src/network/socket/qtcpserver.cpp2
-rw-r--r--src/network/socket/qtcpsocket.cpp2
-rw-r--r--src/network/socket/qudpsocket.cpp2
-rw-r--r--src/network/ssl/qssl.cpp3
-rw-r--r--src/network/ssl/qsslcertificate.cpp2
-rw-r--r--src/network/ssl/qsslcipher.cpp2
-rw-r--r--src/network/ssl/qsslconfiguration.cpp2
-rw-r--r--src/network/ssl/qsslerror.cpp2
-rw-r--r--src/network/ssl/qsslkey.cpp2
-rw-r--r--src/network/ssl/qsslsocket.cpp2
-rw-r--r--src/opengl/qgl.cpp10
-rw-r--r--src/opengl/qglcolormap.cpp2
-rw-r--r--src/opengl/qglframebufferobject.cpp4
-rw-r--r--src/opengl/qglpixelbuffer.cpp2
-rw-r--r--src/opengl/qglshaderprogram.cpp2
-rw-r--r--src/qt3support/sql/q3sqlfieldinfo.qdoc (renamed from doc/src/classes/q3sqlfieldinfo.qdoc)0
-rw-r--r--src/qt3support/sql/q3sqlrecordinfo.qdoc (renamed from doc/src/classes/q3sqlrecordinfo.qdoc)0
-rw-r--r--src/qt3support/tools/q3asciicache.qdoc (renamed from doc/src/classes/q3asciicache.qdoc)0
-rw-r--r--src/qt3support/tools/q3asciidict.qdoc (renamed from doc/src/classes/q3asciidict.qdoc)0
-rw-r--r--src/qt3support/tools/q3cache.qdoc (renamed from doc/src/classes/q3cache.qdoc)0
-rw-r--r--src/qt3support/tools/q3dict.qdoc (renamed from doc/src/classes/q3dict.qdoc)0
-rw-r--r--src/qt3support/tools/q3intcache.qdoc (renamed from doc/src/classes/q3intcache.qdoc)0
-rw-r--r--src/qt3support/tools/q3intdict.qdoc (renamed from doc/src/classes/q3intdict.qdoc)0
-rw-r--r--src/qt3support/tools/q3memarray.qdoc (renamed from doc/src/classes/q3memarray.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrdict.qdoc (renamed from doc/src/classes/q3ptrdict.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrlist.qdoc (renamed from doc/src/classes/q3ptrlist.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrqueue.qdoc (renamed from doc/src/classes/q3ptrqueue.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrstack.qdoc (renamed from doc/src/classes/q3ptrstack.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrvector.qdoc (renamed from doc/src/classes/q3ptrvector.qdoc)0
-rw-r--r--src/qt3support/tools/q3valuelist.qdoc (renamed from doc/src/classes/q3valuelist.qdoc)0
-rw-r--r--src/qt3support/tools/q3valuestack.qdoc (renamed from doc/src/classes/q3valuestack.qdoc)0
-rw-r--r--src/qt3support/tools/q3valuevector.qdoc (renamed from doc/src/classes/q3valuevector.qdoc)0
-rw-r--r--src/qt3support/widgets/q3popupmenu.cpp37
-rw-r--r--src/script/qscriptable.cpp2
-rw-r--r--src/script/qscriptclass.cpp2
-rw-r--r--src/script/qscriptcontext.cpp2
-rw-r--r--src/script/qscriptcontextinfo.cpp2
-rw-r--r--src/script/qscriptengine.cpp8
-rw-r--r--src/script/qscriptengineagent.cpp2
-rw-r--r--src/script/qscriptstring.cpp2
-rw-r--r--src/script/qscriptvalue.cpp2
-rw-r--r--src/script/qscriptvalueiterator.cpp2
-rw-r--r--src/scripttools/debugging/qscriptdebugger.cpp4
-rw-r--r--src/scripttools/debugging/qscriptenginedebugger.cpp4
-rw-r--r--src/sql/kernel/qsql.qdoc (renamed from doc/src/qsql.qdoc)2
-rw-r--r--src/sql/kernel/qsqldatabase.cpp2
-rw-r--r--src/sql/kernel/qsqlquery.cpp2
-rw-r--r--src/svg/qgraphicssvgitem.cpp1
-rw-r--r--src/svg/qsvggenerator.cpp2
-rw-r--r--src/svg/qsvgrenderer.cpp2
-rw-r--r--src/svg/qsvgwidget.cpp2
-rw-r--r--src/testlib/qsignalspy.qdoc (renamed from doc/src/classes/qsignalspy.qdoc)0
-rw-r--r--src/testlib/qtestevent.qdoc (renamed from doc/src/classes/qtestevent.qdoc)0
-rw-r--r--src/xml/dom/qdom.cpp4
-rw-r--r--src/xml/sax/qxml.cpp2
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel.cpp3
-rw-r--r--src/xmlpatterns/api/qxmlquery.cpp4
-rw-r--r--src/xmlpatterns/utils/qautoptr.cpp2
-rw-r--r--tools/assistant/compat/lib/qassistantclient.cpp1
-rw-r--r--tools/designer/src/lib/sdk/abstractdnditem.qdoc (renamed from doc/src/classes/qpagesetupdialog.qdoc)70
-rw-r--r--tools/designer/src/lib/sdk/abstracticoncache.qdoc130
-rw-r--r--tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc94
-rw-r--r--tools/designer/src/lib/sdk/layoutdecoration.qdoc163
-rw-r--r--tools/designer/src/lib/sdk/membersheet.qdoc263
-rw-r--r--tools/designer/src/lib/sdk/propertysheet.qdoc302
-rw-r--r--tools/designer/src/lib/sdk/taskmenu.qdoc152
-rw-r--r--tools/designer/src/lib/uilib/container.qdoc186
-rw-r--r--tools/designer/src/lib/uilib/customwidget.qdoc309
-rw-r--r--tools/qdoc3/test/classic.css21
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf48
549 files changed, 9040 insertions, 8279 deletions
diff --git a/doc/src/bughowto.qdoc b/doc/src/bughowto.qdoc
index b6520f3..645154b 100644
--- a/doc/src/bughowto.qdoc
+++ b/doc/src/bughowto.qdoc
@@ -43,7 +43,6 @@
\page bughowto.html
\title How to Report a Bug
\brief Information about ways to report bugs in Qt.
- \ingroup howto
If you think you have found a bug in Qt, we would like to hear
about it so that we can fix it.
diff --git a/doc/src/classes.qdoc b/doc/src/classes.qdoc
index d9a0ae9..864445f 100644
--- a/doc/src/classes.qdoc
+++ b/doc/src/classes.qdoc
@@ -40,6 +40,18 @@
****************************************************************************/
/*!
+ \group classlists
+ \title Class and Function Indexes
+ \brief Collections of classes and functions grouped together into lists.
+
+ The following documents contain collections of classes, grouped by
+ subject area or related to particular functionality, or comprehensive
+ lists of classes and functions.
+
+ \generatelist{related}
+*/
+
+/*!
\group groups
\title Grouped Classes
\ingroup classlists
@@ -56,11 +68,9 @@
\title Qt's Classes
\ingroup classlists
- This is a list of all Qt classes. For a shorter list of the most
- frequently used Qt classes, see \l{Qt's Main Classes}. For a list
- of the classes provided for compatibility with Qt3, see \l{Qt 3
- compatibility classes}. For classes that have been deprecated, see
- the \l{Obsolete Classes} list.
+ This is a list of all Qt classes. For a list of the classes provided
+ for compatibility with Qt3, see \l{Qt 3 compatibility classes}. For
+ classes that have been deprecated, see the \l{Obsolete Classes} list.
\generatelist classes
@@ -128,17 +138,6 @@
*/
/*!
- \page mainclasses.html
- \title Qt's Main Classes
- \ingroup classlists
-
- These are the most frequently used Qt classes. For the complete
- list see \link classes.html Qt's Classes \endlink.
-
- \generatelist mainclasses
-*/
-
-/*!
\page compatclasses.html
\title Qt 3 Compatibility Classes
\ingroup classlists
diff --git a/doc/src/exportedfunctions.qdoc b/doc/src/classes/exportedfunctions.qdoc
index c51ace4..c51ace4 100644
--- a/doc/src/exportedfunctions.qdoc
+++ b/doc/src/classes/exportedfunctions.qdoc
diff --git a/doc/src/qtassistant.qdoc b/doc/src/classes/phonon-namespace.qdoc
index 9e52ccf..8007ddf 100644
--- a/doc/src/qtassistant.qdoc
+++ b/doc/src/classes/phonon-namespace.qdoc
@@ -40,15 +40,15 @@
****************************************************************************/
/*!
- \module QtAssistant
- \title QtAssistant Module
- \contentspage Qt's Modules
- \previouspage QtHelp
- \nextpage QtTest
- \ingroup modules
+ \namespace Phonon
+ \brief The Phonon namespace contains classes and functions for multimedia applications.
+ \since 4.4
- \brief The QtAssistant module provides a means of launching \QA
- to provide online help.
+ This namespace contains classes to access multimedia functions for
+ audio and video playback. Those classes are not dependent on any specific
+ framework, but rather use exchangeable backends to do the work.
- \sa {Qt Assistant Manual}
+ See the \l{Phonon Module} page for general information about the
+ framework and the \l{Phonon Overview} for an introductory tour of its
+ features.
*/
diff --git a/doc/src/classes/qtdesigner-api.qdoc b/doc/src/classes/qtdesigner-api.qdoc
deleted file mode 100644
index 60dd9f8..0000000
--- a/doc/src/classes/qtdesigner-api.qdoc
+++ /dev/null
@@ -1,1413 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QDesignerMemberSheetExtension
-
- \brief The QDesignerMemberSheetExtension class allows you to
- manipulate a widget's member functions which is displayed when
- configuring connections using Qt Designer's mode for editing
- signals and slots.
-
- \inmodule QtDesigner
-
- QDesignerMemberSheetExtension is a collection of functions that is
- typically used to query a widget's member functions, and to
- manipulate the member functions' appearance in \QD's signals and
- slots editing mode. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 2
-
- When implementing a custom widget plugin, a pointer to \QD's
- current QDesignerFormEditorInterface object (\c formEditor in the
- example above) is provided by the
- QDesignerCustomWidgetInterface::initialize() function's parameter.
-
- The member sheet (and any other extension), can be retrieved by
- querying \QD's extension manager using the qt_extension()
- function. When you want to release the extension, you only need to
- delete the pointer.
-
- All widgets have a default member sheet used in \QD's signals and
- slots editing mode with the widget's member functions. But
- QDesignerMemberSheetExtension also provides an interface for
- creating custom member sheet extensions.
-
- \warning \QD uses the QDesignerMemberSheetExtension to facilitate
- the signal and slot editing mode. Whenever a connection between
- two widgets is requested, \QD will query for the widgets' member
- sheet extensions. If a widget has an implemented member sheet
- extension, this extension will override the default member sheet.
-
- To create a member sheet extension, your extension class must
- inherit from both QObject and QDesignerMemberSheetExtension. Then,
- since we are implementing an interface, we must ensure that it's
- made known to the meta object system using the Q_INTERFACES()
- macro:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 3
-
- This enables \QD to use qobject_cast() to query for
- supported interfaces using nothing but a QObject pointer.
-
- In \QD the extensions are not created until they are
- required. For that reason, when implementing a member sheet
- extension, 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 widget's member sheet 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 member sheet
- extension for that widget, is found. This factory will then make
- an instance of the extension. If no such factory is found, \QD
- will use the default member sheet.
-
- 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 4
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a member sheet extension as well. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 5
-
- For a complete example using an extension class, see \l
- {designer/taskmenuextension}{Task Menu Extension example}. The
- example shows how to create a custom widget plugin for Qt
- Designer, and how to to use the QDesignerTaskMenuExtension class
- to add custom items to \QD's task menu.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerMemberSheetExtension::~QDesignerMemberSheetExtension()
-
- Destroys the member sheet extension.
-*/
-
-/*!
- \fn int QDesignerMemberSheetExtension::count() const
-
- Returns the extension's number of member functions.
-*/
-
-/*!
- \fn int QDesignerMemberSheetExtension::indexOf(const QString &name) const
-
- Returns the index of the member function specified by the given \a
- name.
-
- \sa memberName()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::memberName(int index) const
-
- Returns the name of the member function with the given \a index.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::memberGroup(int index) const
-
- Returns the name of the member group specified for the function
- with the given \a index.
-
- \sa indexOf(), setMemberGroup()
-*/
-
-/*!
- \fn void QDesignerMemberSheetExtension::setMemberGroup(int index, const QString &group)
-
- Sets the member group of the member function with the given \a
- index, to \a group.
-
- \sa indexOf(), memberGroup()
-*/
-
-/*!
- \fn bool QDesignerMemberSheetExtension::isVisible(int index) const
-
- Returns true if the member function with the given \a index is
- visible in \QD's signal and slot editor, otherwise false.
-
- \sa indexOf(), setVisible()
-*/
-
-/*!
- \fn void QDesignerMemberSheetExtension::setVisible(int index, bool visible)
-
- If \a visible is true, the member function with the given \a index
- is visible in \QD's signals and slots editing mode; otherwise the
- member function is hidden.
-
- \sa indexOf(), isVisible()
-*/
-
-/*!
- \fn virtual bool QDesignerMemberSheetExtension::isSignal(int index) const
-
- Returns true if the member function with the given \a index is a
- signal, otherwise false.
-
- \sa indexOf()
-*/
-
-/*!
- \fn bool QDesignerMemberSheetExtension::isSlot(int index) const
-
- Returns true if the member function with the given \a index is a
- slot, otherwise false.
-
- \sa indexOf()
-*/
-
-/*!
- \fn bool QDesignerMemberSheetExtension::inheritedFromWidget(int index) const
-
- Returns true if the member function with the given \a index is
- inherited from QWidget, otherwise false.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::declaredInClass(int index) const
-
- Returns the name of the class in which the member function with
- the given \a index is declared.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::signature(int index) const
-
- Returns the signature of the member function with the given \a
- index.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QList<QByteArray> QDesignerMemberSheetExtension::parameterTypes(int index) const
-
- Returns the parameter types of the member function with the given
- \a index, as a QByteArray list.
-
- \sa indexOf(), parameterNames()
-*/
-
-/*!
- \fn QList<QByteArray> QDesignerMemberSheetExtension::parameterNames(int index) const
-
- Returns the parameter names of the member function with the given
- \a index, as a QByteArray list.
-
- \sa indexOf(), parameterTypes()
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerLayoutDecorationExtension
- \brief The QDesignerLayoutDecorationExtension class provides an extension to a layout in \QD.
- \inmodule QtDesigner
- \internal
-*/
-
-/*!
- \enum QDesignerLayoutDecorationExtension::InsertMode
-
- This enum describes the modes that are used to insert items into a layout.
-
- \value InsertWidgetMode Widgets are inserted into empty cells in a layout.
- \value InsertRowMode Whole rows are inserted into a vertical or grid layout.
- \value InsertColumnMode Whole columns are inserted into a horizontal or grid layout.
-*/
-
-/*!
- \fn virtual QDesignerLayoutDecorationExtension::~QDesignerLayoutDecorationExtension()
-
- Destroys the extension.
-*/
-
-/*!
- \fn virtual QList<QWidget*> QDesignerLayoutDecorationExtension::widgets(QLayout *layout) const
-
- Returns the widgets that are managed by the given \a layout.
-
- \sa insertWidget(), removeWidget()
-*/
-
-/*!
- \fn QRect QDesignerLayoutDecorationExtension::itemInfo(int index) const
-
- Returns the rectangle covered by the item at the given \a index in the layout.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::indexOf(QWidget *widget) const
-
- Returns the index of the specified \a widget in the layout.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::indexOf(QLayoutItem *item) const
-
- Returns the index of the specified layout \a item.
-*/
-
-/*!
- \fn QDesignerLayoutDecorationExtension::InsertMode QDesignerLayoutDecorationExtension::currentInsertMode() const
-
- Returns the current insertion mode.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::currentIndex() const
-
- Returns the current index in the layout.
-*/
-
-/*!
- \fn QPair<int, int> QDesignerLayoutDecorationExtension::currentCell() const
-
- Returns a pair containing the row and column of the current cell in the layout.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::insertWidget(QWidget *widget, const QPair<int, int> &cell)
-
- Inserts the given \a widget into the specified \a cell in the layout.
-
- \sa removeWidget()
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::removeWidget(QWidget *widget)
-
- Removes the specified \a widget from the layout.
-
- \sa insertWidget()
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::insertRow(int row)
-
- Inserts a new row into the form at the position specified by \a row.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::insertColumn(int column)
-
- Inserts a new column into the form at the position specified by \a column.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::simplify()
-
- Simplifies the layout by removing unnecessary empty rows and columns, and by changing the
- number of rows or columns spanned by widgets.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::findItemAt(const QPoint &position) const
-
- Returns the index of the item in the layout that covers the given \a position.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::findItemAt(int row, int column) const
-
- Returns the item in the layout that occupies the specified \a row and \a column in the layout.
-
- Currently, this only applies to grid layouts.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::adjustIndicator(const QPoint &position, int index)
-
- Adjusts the indicator for the item specified by \a index so that
- it lies at the given \a position on the form.
-*/
-
-
-// Doc: Interface only
-
-/*!
- \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()
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerTaskMenuExtension
- \brief The QDesignerTaskMenuExtension class allows you to add custom
- menu entries to Qt Designer's task menu.
- \inmodule QtDesigner
-
- QDesignerTaskMenuExtension provides an interface for creating
- custom task menu extensions. It is typically used to create task
- menu entries that are specific to a plugin in \QD.
-
- \QD uses the QDesignerTaskMenuExtension to feed its task
- menu. Whenever a task menu is requested, \QD will query
- for the selected widget's task menu extension.
-
- \image taskmenuextension-example-faded.png
-
- A task menu extension is a collection of QActions. The actions
- appear as entries in the task menu when the plugin with the
- specified extension is selected. The image above shows the custom
- \gui {Edit State...} action which appears in addition to \QD's
- default task menu entries: \gui Cut, \gui Copy, \gui Paste etc.
-
- To create a custom task menu extension, your extension class must
- inherit from both QObject and QDesignerTaskMenuExtension. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 9
-
- Since we are implementing an interface, we must ensure that it
- is 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 the taskActions() function to return a list
- of actions that will be included in \QD task menu. Optionally, you
- can reimplement the preferredEditAction() function to set the
- action that is invoked when selecting your plugin and pressing
- \key F2. The preferred edit action must be one of the actions
- returned by taskActions() and, if it's not defined, pressing the
- \key F2 key will simply be ignored.
-
- In \QD, extensions are not created until they are required. A
- task menu extension, for example, is created when you click the
- right mouse button over a widget in \QD's workspace. For that
- reason you must also construct an extension factory, using either
- QExtensionFactory or a subclass, and register it using \QD's
- \l {QExtensionManager}{extension manager}.
-
- When a task menu extension is required, \QD's \l
- {QExtensionManager}{extension manager} will run through all its
- registered factories calling QExtensionFactory::createExtension()
- for each until it finds one that is able to create a task menu
- extension for the selected widget. This factory will then make an
- instance of the extension.
-
- 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 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 10
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a task menu extension as well. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 11
-
- For a complete example using the QDesignerTaskMenuExtension class,
- see the \l {designer/taskmenuextension}{Task Menu Extension
- example}. The example shows how to create a custom widget plugin
- for \QD, and how to to use the QDesignerTaskMenuExtension
- class to add custom items to \QD's task menu.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()
-
- Destroys the task menu extension.
-*/
-
-/*!
- \fn QAction *QDesignerTaskMenuExtension::preferredEditAction() const
-
- Returns the action that is invoked when selecting a plugin with
- the specified extension and pressing \key F2.
-
- The action must be one of the actions returned by taskActions().
-*/
-
-/*!
- \fn QList<QAction*> QDesignerTaskMenuExtension::taskActions() const
-
- Returns the task menu extension as a list of actions which will be
- included in \QD's task menu when a plugin with the specified
- extension is selected.
-
- The function must be reimplemented to add actions to the list.
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerCustomWidgetCollectionInterface
-
- \brief The QDesignerCustomWidgetCollectionInterface class allows
- you to include several custom widgets in one single library.
-
- \inmodule QtDesigner
-
- When implementing a custom widget plugin, you build it as a
- separate library. If you want to include several custom widget
- plugins in the same library, you must in addition subclass
- QDesignerCustomWidgetCollectionInterface.
-
- QDesignerCustomWidgetCollectionInterface contains one single
- function returning a list of the collection's
- QDesignerCustomWidgetInterface objects. For example, if you have
- several custom widgets \c CustomWidgetOne, \c CustomWidgetTwo and
- \c CustomWidgetThree, the class definition may look like this:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 12
-
- In the class constructor you add the interfaces to your custom
- widgets to the list which you return in the customWidgets()
- function:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 13
-
- Note that instead of exporting each custom widget plugin using the
- Q_EXPORT_PLUGIN2() macro, you export the entire collection. The
- Q_EXPORT_PLUGIN2() macro ensures that \QD can access and construct
- the custom widgets. Without this macro, there is no way for \QD to
- use them.
-
- \sa QDesignerCustomWidgetInterface, {Creating Custom Widgets for
- Qt Designer}
-*/
-
-/*!
- \fn QDesignerCustomWidgetCollectionInterface::~QDesignerCustomWidgetCollectionInterface() {
-
- Destroys the custom widget collection interface.
-*/
-
-/*!
- \fn QList<QDesignerCustomWidgetInterface*> QDesignerCustomWidgetCollectionInterface::customWidgets() const
-
- Returns a list of interfaces to the collection's custom widgets.
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerCustomWidgetInterface
-
- \brief The QDesignerCustomWidgetInterface class enables Qt Designer
- to access and construct custom widgets.
-
- \inmodule QtDesigner
-
- QDesignerCustomWidgetInterface provides a custom widget with an
- interface. The class contains a set of functions that must be subclassed
- to return basic information about the widget, such as its class name and
- the name of its header file. Other functions must be implemented to
- initialize the plugin when it is loaded, and to construct instances of
- the custom widget for \QD to use.
-
- When implementing a custom widget you must subclass
- QDesignerCustomWidgetInterface to expose your widget to \QD. For
- example, this is the declaration for the plugin used in the
- \l{Custom Widget Plugin Example}{Custom Widget Plugin example} that
- enables an analog clock custom widget to be used by \QD:
-
- \snippet examples/designer/customwidgetplugin/customwidgetplugin.h 0
-
- Note that the only part of the class definition that is specific
- to this particular custom widget is the class name. In addition,
- 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.
-
- After \QD loads a custom widget plugin, it calls the interface's
- initialize() function to enable it to set up any resources that it
- may need. This function is called with a QDesignerFormEditorInterface
- parameter that provides the plugin with a gateway to all of \QD's API.
-
- \QD constructs instances of the custom widget by calling the plugin's
- createWidget() function with a suitable parent widget. Plugins must
- construct and return an instance of a custom widget with the specified
- parent widget.
-
- In the implementation of the class you must remember to export
- your custom widget plugin to \QD using the Q_EXPORT_PLUGIN2()
- macro. For example, if a library called \c libcustomwidgetplugin.so
- (on Unix) or \c libcustomwidget.dll (on Windows) contains a widget
- class called \c MyCustomWidget, we can export it by adding the
- following line to the file containing the plugin implementation:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 14
-
- This macro ensures that \QD can access and construct the custom widget.
- Without this macro, there is no way for \QD to use it.
-
- When implementing a custom widget plugin, you build it as a
- separate library. If you want to include several custom widget
- plugins in the same library, you must in addition subclass
- QDesignerCustomWidgetCollectionInterface.
-
- \warning If your custom widget plugin contains QVariant
- properties, be aware that only the following \l
- {QVariant::Type}{types} are supported:
-
- \list
- \o QVariant::ByteArray
- \o QVariant::Bool
- \o QVariant::Color
- \o QVariant::Cursor
- \o QVariant::Date
- \o QVariant::DateTime
- \o QVariant::Double
- \o QVariant::Int
- \o QVariant::Point
- \o QVariant::Rect
- \o QVariant::Size
- \o QVariant::SizePolicy
- \o QVariant::String
- \o QVariant::Time
- \o QVariant::UInt
- \endlist
-
- For a complete example using the QDesignerCustomWidgetInterface
- class, see the \l {designer/customwidgetplugin}{Custom Widget
- Example}. The example shows how to create a custom widget plugin
- for \QD.
-
- \sa QDesignerCustomWidgetCollectionInterface {Creating Custom
- Widgets for Qt Designer}
-*/
-
-/*!
- \fn QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface()
-
- Destroys the custom widget interface.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::name() const
-
- Returns the class name of the custom widget supplied by the interface.
-
- The name returned \e must be identical to the class name used for the
- custom widget.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::group() const
-
- Returns the name of the group to which the custom widget belongs.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::toolTip() const
-
- Returns a short description of the widget that can be used by \QD
- in a tool tip.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::whatsThis() const
-
- Returns a description of the widget that can be used by \QD in
- "What's This?" help for the widget.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::includeFile() const
-
- Returns the path to the include file that \l uic uses when
- creating code for the custom widget.
-*/
-
-/*!
- \fn QIcon QDesignerCustomWidgetInterface::icon() const
-
- Returns the icon used to represent the custom widget in \QD's
- widget box.
-*/
-
-/*!
- \fn bool QDesignerCustomWidgetInterface::isContainer() const
-
- Returns true if the custom widget is intended to be used as a
- container; otherwise returns false.
-
- Most custom widgets are not used to hold other widgets, so their
- implementations of this function will return false, but custom
- containers will return true to ensure that they behave correctly
- in \QD.
-*/
-
-/*!
- \fn QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)
-
- Returns a new instance of the custom widget, with the given \a
- parent.
-*/
-
-/*!
- \fn bool QDesignerCustomWidgetInterface::isInitialized() const
-
- Returns true if the widget has been initialized; otherwise returns
- false.
-
- \sa initialize()
-*/
-
-/*!
- \fn void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)
-
- Initializes the widget for use with the specified \a formEditor
- interface.
-
- \sa isInitialized()
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::domXml() const
-
- Returns the XML that is used to describe the custom widget's
- properties to \QD.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::codeTemplate() const
-
- This function is reserved for future use by \QD.
-
- \omit
- Returns the code template that \QD includes in forms that contain
- the custom widget when they are saved.
- \endomit
-*/
-
-/*!
- \macro QDESIGNER_WIDGET_EXPORT
- \relates QDesignerCustomWidgetInterface
- \since 4.1
-
- This macro is used when defining custom widgets to ensure that they are
- correctly exported from plugins for use with \QD.
-
- On some platforms, the symbols required by \QD to create new widgets
- are removed from plugins by the build system, making them unusable.
- Using this macro ensures that the symbols are retained on those platforms,
- and has no side effects on other platforms.
-
- For example, the \l{designer/worldtimeclockplugin}{World Time Clock Plugin}
- example exports a custom widget class with the following declaration:
-
- \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 0
- \dots
- \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 2
-
- \sa {Creating Custom Widgets for Qt Designer}
-*/
-
-
-// Doc: Abstract class
-
-/*!
- \class QDesignerDnDItemInterface
- \brief The QDesignerDnDItemInterface class provides an interface that is used to manage items
- during a drag and drop operation.
- \inmodule QtDesigner
- \internal
-*/
-
-/*!
- \enum QDesignerDnDItemInterface::DropType
-
- This enum describes the result of a drag and drop operation.
-
- \value MoveDrop The item was moved.
- \value CopyDrop The item was copied.
-*/
-
-/*!
- \fn QDesignerDnDItemInterface::QDesignerDnDItemInterface()
-
- Constructs a new interface to a drag and drop item.
-*/
-
-/*!
- \fn QDesignerDnDItemInterface::~QDesignerDnDItemInterface()
-
- Destroys the interface to the item.
-*/
-
-/*!
- \fn DomUI *QDesignerDnDItemInterface::domUi() const
-
- Returns a user interface object for the item.
-*/
-
-/*!
- \fn QWidget *QDesignerDnDItemInterface::widget() const
-
- Returns the widget being copied or moved in the drag and drop operation.
-
- \sa source()
-*/
-
-/*!
- \fn QWidget *QDesignerDnDItemInterface::decoration() const
-
- Returns the widget used to represent the item.
-*/
-
-/*!
- \fn QPoint QDesignerDnDItemInterface::hotSpot() const
-
- Returns the cursor's hotspot.
-
- \sa QDrag::hotSpot()
-*/
-
-/*!
- \fn DropType QDesignerDnDItemInterface::type() const
-
- Returns the type of drag and drop operation in progress.
-*/
-
-/*!
- \fn QWidget *QDesignerDnDItemInterface::source() const
-
- Returns the widget that is the source of the drag and drop operation; i.e. the original
- container of the widget being dragged.
-
- \sa widget()
-*/
-
-
-// Doc: Abstract class
-
-/*!
- \class QDesignerIconCacheInterface
- \brief The QDesignerIconCacheInterface class provides an interface to \QD's icon cache.
- \inmodule QtDesigner
- \internal
-*/
-
-/*!
- \fn QDesignerIconCacheInterface::QDesignerIconCacheInterface(QObject *parent)
-
- Constructs a new interface with the given \a parent.
-*/
-
-/*!
- \fn QIcon QDesignerIconCacheInterface::nameToIcon(const QString &filePath, const QString &qrcPath)
-
- Returns the icon associated with the name specified by \a filePath in the resource
- file specified by \a qrcPath.
-
- If \a qrcPath refers to a valid resource file, the name used for the file path is a path
- within those resources; otherwise the file path refers to a local file.
-
- \sa {The Qt Resource System}, nameToPixmap()
-*/
-
-/*!
- \fn QPixmap QDesignerIconCacheInterface::nameToPixmap(const QString &filePath, const QString &qrcPath)
-
- Returns the pixmap associated with the name specified by \a filePath in the resource
- file specified by \a qrcPath.
-
- If \a qrcPath refers to a valid resource file, the name used for the file path is a path
- within those resources; otherwise the file path refers to a local file.
-
- \sa {The Qt Resource System}, nameToIcon()
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::iconToFilePath(const QIcon &icon) const
-
- Returns the file path associated with the given \a icon. The file path is a path within
- an application resources.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::iconToQrcPath(const QIcon &icon) const
-
- Returns the path to the resource file that refers to the specified \a icon. The resource
- path refers to a local file.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::pixmapToFilePath(const QPixmap &pixmap) const
-
- Returns the file path associated with the given \a pixmap. The file path is a path within
- an application resources.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::pixmapToQrcPath(const QPixmap &pixmap) const
-
- Returns the path to the resource file that refers to the specified \a pixmap. The resource
- path refers to a local file.
-*/
-
-/*!
- \fn QList<QPixmap> QDesignerIconCacheInterface::pixmapList() const
-
- Returns a list of pixmaps for the icons provided by the icon cache.
-*/
-
-/*!
- \fn QList<QIcon> QDesignerIconCacheInterface::iconList() const
-
- Returns a list of icons provided by the icon cache.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::resolveQrcPath(const QString &filePath, const QString &qrcPath, const QString &workingDirectory) const
-
- Returns a path to a resource specified by the \a filePath within
- the resource file located at \a qrcPath. If \a workingDirectory is
- a valid path to a directory, the path returned will be relative to
- that directory; otherwise an absolute path is returned.
-
- \omit
- ### Needs checking
- \endomit
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerPropertySheetExtension
-
- \brief The QDesignerPropertySheetExtension class allows you to
- manipulate a widget's properties which is displayed in Qt
- Designer's property editor.
-
- \sa QDesignerDynamicPropertySheetExtension
-
- \inmodule QtDesigner
-
- QDesignerPropertySheetExtension provides a collection of functions that
- are typically used to query a widget's properties, and to
- manipulate the properties' appearance in the property editor. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 15
-
- Note that if you change the value of a property using the
- QDesignerPropertySheetExtension::setProperty() function, the undo
- stack is not updated. To ensure that a property's value can be
- reverted using the undo stack, you must use the
- QDesignerFormWindowCursorInterface::setProperty() function, or its
- buddy \l
- {QDesignerFormWindowCursorInterface::setWidgetProperty()}{setWidgetProperty()},
- instead.
-
- When implementing a custom widget plugin, a pointer to \QD's
- current QDesignerFormEditorInterface object (\c formEditor in the
- example above) is provided by the
- QDesignerCustomWidgetInterface::initialize() function's parameter.
-
- The property sheet, or any other extension, can be retrieved by
- querying \QD's extension manager using the qt_extension()
- function. When you want to release the extension, you only need to
- delete the pointer.
-
- All widgets have a default property sheet which populates \QD's
- property editor with the widget's properties (i.e the ones defined
- with the Q_PROPERTY() macro). But QDesignerPropertySheetExtension
- also provides an interface for creating custom property sheet
- extensions.
-
- \warning \QD uses the QDesignerPropertySheetExtension to feed its
- property editor. Whenever a widget is selected in its workspace,
- \QD will query for the widget's property sheet extension. If the
- selected widget has an implemented property sheet extension, this
- extension will override the default property sheet.
-
- To create a property sheet extension, your extension class must
- inherit from both QObject and
- QDesignerPropertySheetExtension. Then, since we are implementing
- an interface, we must ensure that it's made known to the meta
- object system using the Q_INTERFACES() macro:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 16
-
- This enables \QD to use qobject_cast() to query for supported
- interfaces using nothing but a QObject pointer.
-
- In \QD the extensions are not created until they are
- required. For that reason, when implementing a property sheet
- extension, 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 property sheet 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 property
- sheet extension for the selected widget, is found. This factory
- will then make an instance of the extension. If no such factory
- can be found, \QD will use the default property sheet.
-
- There are four available types of extensions in \QD:
- QDesignerContainerExtension, QDesignerMemberSheetExtension,
- QDesignerPropertySheetExtension and QDesignerTaskMenuExtension. Qt
- Designer'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 17
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a property sheet extension extension as well. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 18
-
- For a complete example using an extension class, see the \l
- {designer/taskmenuextension}{Task Menu Extension example}. The
- example shows how to create a custom widget plugin for Qt
- Designer, and how to to use the QDesignerTaskMenuExtension class
- to add custom items to \QD's task menu.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerPropertySheetExtension::~QDesignerPropertySheetExtension()
-
- Destroys the property sheet extension.
-*/
-
-/*!
- \fn int QDesignerPropertySheetExtension::count() const
-
- Returns the selected widget's number of properties.
-*/
-
-/*!
- \fn int QDesignerPropertySheetExtension::indexOf(const QString &name) const
-
- Returns the index for a given property \a name.
-
- \sa propertyName()
-*/
-
-/*!
- \fn QString QDesignerPropertySheetExtension::propertyName(int index) const
-
- Returns the name of the property at the given \a index.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerPropertySheetExtension::propertyGroup(int index) const
-
- Returns the property group for the property at the given \a index.
-
- \QD's property editor supports property groups, i.e. sections of
- related properties. A property can be related to a group using the
- setPropertyGroup() function. The default group of any property is
- the name of the class that defines it. For example, the
- QObject::objectName property appears within the QObject property
- group.
-
- \sa indexOf(), setPropertyGroup()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setPropertyGroup(int index, const QString &group)
-
- Sets the property group for the property at the given \a index to
- \a group.
-
- Relating a property to a group makes it appear within that group's
- section in the property editor. The default property group of any
- property is the name of the class that defines it. For example,
- the QObject::objectName property appears within the QObject
- property group.
-
- \sa indexOf(), property(), propertyGroup()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::hasReset(int index) const
-
- Returns true if the property at the given \a index has a reset
- button in \QD's property editor, otherwise false.
-
- \sa indexOf(), reset()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::reset(int index)
-
- Resets the value of the property at the given \a index, to the
- default value. Returns true if a default value could be found, otherwise false.
-
- \sa indexOf(), hasReset(), isChanged()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::isVisible(int index) const
-
- Returns true if the property at the given \a index is visible in
- \QD's property editor, otherwise false.
-
- \sa indexOf(), setVisible()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setVisible(int index, bool visible)
-
- If \a visible is true, the property at the given \a index is
- visible in \QD's property editor; otherwise the property is
- hidden.
-
- \sa indexOf(), isVisible()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::isAttribute(int index) const
-
- Returns true if the property at the given \a index is an attribute,
- which will be \e excluded from the UI file, otherwise false.
-
- \sa indexOf(), setAttribute()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setAttribute(int index, bool attribute)
-
- If \a attribute is true, the property at the given \a index is
- made an attribute which will be \e excluded from the UI file;
- otherwise it will be included.
-
- \sa indexOf(), isAttribute()
-*/
-
-/*!
- \fn QVariant QDesignerPropertySheetExtension::property(int index) const
-
- Returns the value of the property at the given \a index.
-
- \sa indexOf(), setProperty(), propertyGroup()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setProperty(int index, const QVariant &value)
-
- Sets the \a value of the property at the given \a index.
-
- \warning If you change the value of a property using this
- function, the undo stack is not updated. To ensure that a
- property's value can be reverted using the undo stack, you must
- use the QDesignerFormWindowCursorInterface::setProperty()
- function, or its buddy \l
- {QDesignerFormWindowCursorInterface::setWidgetProperty()}{setWidgetProperty()},
- instead.
-
- \sa indexOf(), property(), propertyGroup()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::isChanged(int index) const
-
- Returns true if the value of the property at the given \a index
- differs from the property's default value, otherwise false.
-
- \sa indexOf(), setChanged(), reset()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setChanged(int index, bool changed)
-
- Sets whether the property at the given \a index is different from
- its default value, or not, depending on the \a changed parameter.
-
- \sa indexOf(), isChanged()
-*/
-
-// Doc: Interface only
-
-/*!
- \class QDesignerDynamicPropertySheetExtension
-
- \brief The QDesignerDynamicPropertySheetExtension class allows you to
- manipulate a widget's dynamic properties in Qt Designer's property editor.
-
- \sa QDesignerPropertySheetExtension, {QObject#Dynamic Properties}{Dynamic Properties}
-
- \inmodule QtDesigner
- \since 4.3
-*/
-
-/*!
- \fn QDesignerDynamicPropertySheetExtension::~QDesignerDynamicPropertySheetExtension()
-
- Destroys the dynamic property sheet extension.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::dynamicPropertiesAllowed() const
-
- Returns true if the widget supports dynamic properties; otherwise returns false.
-*/
-
-/*!
- \fn int QDesignerDynamicPropertySheetExtension::addDynamicProperty(const QString &propertyName, const QVariant &value)
-
- Adds a dynamic property named \a propertyName and sets its value to \a value.
- Returns the index of the property if it was added successfully; otherwise returns -1 to
- indicate failure.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::removeDynamicProperty(int index)
-
- Removes the dynamic property at the given \a index.
- Returns true if the operation succeeds; otherwise returns false.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::isDynamicProperty(int index) const
-
- Returns true if the property at the given \a index is a dynamic property; otherwise
- returns false.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::canAddDynamicProperty(const QString &propertyName) const
-
- Returns true if \a propertyName is a valid, unique name for a dynamic
- property; otherwise returns false.
-
-*/
diff --git a/doc/src/qtdemo.qdoc b/doc/src/demos/qtdemo.qdoc
index 60f896a..60f896a 100644
--- a/doc/src/qtdemo.qdoc
+++ b/doc/src/demos/qtdemo.qdoc
diff --git a/doc/src/deployment/deployment-plugins.qdoc b/doc/src/deployment/deployment-plugins.qdoc
new file mode 100644
index 0000000..b02bdd8
--- /dev/null
+++ b/doc/src/deployment/deployment-plugins.qdoc
@@ -0,0 +1,236 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page deployment-plugins.html
+ \title Deploying Plugins
+ \brief A guide to plugins-specific aspects of deploying Qt and Qt Application
+
+ This document explains how to deploy plugin libraries that Qt or
+ your application should load at runtime. If you use
+ \l{How to Create Qt Plugins#Static Plugins}{static plugins}, then the
+ plugin code is already part of your application executable, and no
+ separate deployment steps are required.
+
+ \tableofcontents
+
+ \section1 The Plugin Directory
+
+ When the application is run, Qt will first treat the application's
+ executable directory as the \c{pluginsbase}. For example if the
+ application is in \c{C:\Program Files\MyApp} and has a style plugin,
+ Qt will look in \c{C:\Program Files\MyApp\styles}. (See
+ QCoreApplication::applicationDirPath() for how to find out where
+ the application's executable is.) Qt will also look in the
+ directory specified by
+ QLibraryInfo::location(QLibraryInfo::PluginsPath), which typically
+ is located in \c QTDIR/plugins (where \c QTDIR is the directory
+ where Qt is installed). If you want Qt to look in additional
+ places you can add as many paths as you need with calls to
+ QCoreApplication::addLibraryPath(). And if you want to set your
+ own path or paths you can use QCoreApplication::setLibraryPaths().
+ You can also use a \c qt.conf file to override the hard-coded
+ paths that are compiled into the Qt library. For more information,
+ see the \l {Using qt.conf} documentation. Yet another possibility
+ is to set the \c QT_PLUGIN_PATH environment variable before running
+ the application. If set, Qt will look for plugins in the
+ paths (separated by the system path separator) specified in the variable.
+
+ \section1 Loading and Verifying Plugins Dynamically
+
+ When loading plugins, the Qt library does some sanity checking to
+ determine whether or not the plugin can be loaded and used. This
+ provides the ability to have multiple versions and configurations of
+ the Qt library installed side by side.
+
+ \list
+ \o Plugins linked with a Qt library that has a higher version number
+ will not be loaded by a library with a lower version number.
+
+ \br
+ \bold{Example:} Qt 4.3.0 will \e{not} load a plugin built with Qt 4.3.1.
+
+ \o Plugins linked with a Qt library that has a lower major version
+ number will not be loaded by a library with a higher major version
+ number.
+
+ \br
+ \bold{Example:} Qt 4.3.1 will \e{not} load a plugin built with Qt 3.3.1.
+ \br
+ \bold{Example:} Qt 4.3.1 will load plugins built with Qt 4.3.0 and Qt 4.2.3.
+
+ \o The Qt library and all plugins are built using a \e {build
+ key}. The build key in the Qt library is examined against the build
+ key in the plugin, and if they match, the plugin is loaded. If the
+ build keys do not match, then the Qt library refuses to load the
+ plugin.
+
+ \br \bold{Rationale:} See the \l{#The Build Key}{The Build Key} section below.
+ \endlist
+
+ When building plugins to extend an application, it is important to ensure
+ that the plugin is configured in the same way as the application. This means
+ that if the application was built in release mode, plugins should be built
+ in release mode, too.
+
+ If you configure Qt to be built in both debug and release modes,
+ but only build applications in release mode, you need to ensure that your
+ plugins are also built in release mode. By default, if a debug build of Qt is
+ available, plugins will \e only be built in debug mode. To force the
+ plugins to be built in release mode, add the following line to the plugin's
+ project file:
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 3
+
+ This will ensure that the plugin is compatible with the version of the library
+ used in the application.
+
+ \section2 The Build Key
+
+ When loading plugins, Qt checks the build key of each plugin against its
+ own configuration to ensure that only compatible plugins are loaded; any
+ plugins that are configured differently are not loaded.
+
+ The build key contains the following information:
+ \list
+ \o Architecture, operating system and compiler.
+
+ \e {Rationale:}
+ In cases where different versions of the same compiler do not
+ produce binary compatible code, the version of the compiler is
+ also present in the build key.
+
+ \o Configuration of the Qt library. The configuration is a list
+ of the missing features that affect the available API in the
+ library.
+
+ \e {Rationale:}
+ Two different configurations of the same version of
+ the Qt library are not binary compatible. The Qt library that
+ loads the plugin uses the list of (missing) features to
+ determine if the plugin is binary compatible.
+
+ \e {Note:} There are cases where a plugin can use features that are
+ available in two different configurations. However, the
+ developer writing plugins would need to know which features are
+ in use, both in their plugin and internally by the utility
+ classes in Qt. The Qt library would require complex feature
+ and dependency queries and verification when loading plugins.
+ Requiring this would place an unnecessary burden on the developer, and
+ increase the overhead of loading a plugin. To reduce both
+ development time and application runtime costs, a simple string
+ comparision of the build keys is used.
+
+ \o Optionally, an extra string may be specified on the configure
+ script command line.
+
+ \e {Rationale:}
+ When distributing binaries of the Qt library with an
+ application, this provides a way for developers to write
+ plugins that can only be loaded by the library with which the
+ plugins were linked.
+ \endlist
+
+ For debugging purposes, it is possible to override the run-time build key
+ checks by configuring Qt with the \c QT_NO_PLUGIN_CHECK preprocessor macro
+ defined.
+
+ \section1 The Plugin Cache
+
+ In order to speed up loading and validation of plugins, some of
+ the information that is collected when plugins are loaded is cached
+ through QSettings. This includes information about whether or not
+ a plugin was successfully loaded, so that subsequent load operations
+ don't try to load an invalid plugin. However, if the "last modified"
+ timestamp of a plugin has changed, the plugin's cache entry is
+ invalidated and the plugin is reloaded regardless of the values in
+ the cache entry, and the cache entry itself is updated with the new
+ result.
+
+ This also means that the timestamp must be updated each time the
+ plugin or any dependent resources (such as a shared library) is
+ updated, since the dependent resources might influence the result
+ of loading a plugin.
+
+ Sometimes, when developing plugins, it is necessary to remove entries
+ from the plugin cache. Since Qt uses QSettings to manage the plugin
+ cache, the locations of plugins are platform-dependent; see
+ \l{QSettings#Platform-Specific Notes}{the QSettings documentation}
+ for more information about each platform.
+
+ For example, on Windows the entries are stored in the registry, and the
+ paths for each plugin will typically begin with either of these two strings:
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 6
+
+ \section1 Debugging Plugins
+
+ There are a number of issues that may prevent correctly-written plugins from
+ working with the applications that are designed to use them. Many of these
+ are related to differences in the way that plugins and applications have been
+ built, often arising from separate build systems and processes.
+
+ The following table contains descriptions of the common causes of problems
+ developers experience when creating plugins:
+
+ \table
+ \header \o Problem \o Cause \o Solution
+ \row \o Plugins sliently fail to load even when opened directly by the
+ application. \QD shows the plugin libraries in its
+ \gui{Help|About Plugins} dialog, but no plugins are listed under each
+ of them.
+ \o The application and its plugins are built in different modes.
+ \o Either share the same build information or build the plugins in both
+ debug and release modes by appending the \c debug_and_release to
+ the \l{qmake Variable Reference#CONFIG}{CONFIG} variable in each of
+ their project files.
+ \row \o A valid plugin that replaces an invalid (or broken) plugin fails to load.
+ \o The entry for the plugin in the plugin cache indicates that the original
+ plugin could not be loaded, causing Qt to ignore the replacement.
+ \o Either ensure that the plugin's timestamp is updated, or delete the
+ entry in the \l{#The Plugin Cache}{plugin cache}.
+ \endtable
+
+ You can also use the \c QT_DEBUG_PLUGINS environment variable to obtain
+ diagnostic information from Qt about each plugin it tries to load. Set this
+ variable to a non-zero value in the environment from which your application is
+ launched.
+*/
diff --git a/doc/src/deployment.qdoc b/doc/src/deployment/deployment.qdoc
index 9f8ee8f..75b870f 100644
--- a/doc/src/deployment.qdoc
+++ b/doc/src/deployment/deployment.qdoc
@@ -39,20 +39,9 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
- \group deployment
+ \page deployment.html
\title Deploying Qt Applications
- \ingroup buildsystem
Deploying an Qt application does not require any C++
programming. All you need to do is to build Qt and your
@@ -200,7 +189,7 @@
\o \l{Deploying Qt for Embedded Linux Applications}{Qt for Embedded Linux}
\endlist
- \sa Installation {Window System Specific Notes}
+ \sa Installation {Platform-Specific Documentation}
*/
/*!
@@ -208,7 +197,6 @@
\contentspage Deploying Qt Applications
\title Deploying an Application on X11 Platforms
- \ingroup deployment
Due to the proliferation of Unix systems (commercial Unices, Linux
distributions, etc.), deployment on Unix is a complex
@@ -529,7 +517,6 @@
\contentspage Deploying Qt Applications
\title Deploying an Application on Windows
- \ingroup deployment
This documentation will describe how to determine which files you
should include in your distribution, and how to make sure that the
@@ -933,7 +920,6 @@
\contentspage Deploying Qt Applications
\title Deploying an Application on Mac OS X
- \ingroup deployment
Starting with version 4.5, Qt now includes a \l {macdeploy}{deployment tool}
that automates the prodecures described in this document.
diff --git a/doc/src/qt-conf.qdoc b/doc/src/deployment/qt-conf.qdoc
index ce32aa8..229fa45 100644
--- a/doc/src/qt-conf.qdoc
+++ b/doc/src/deployment/qt-conf.qdoc
@@ -43,7 +43,6 @@
\page qt-conf.html
\title Using qt.conf
- \ingroup deployment
The \c qt.conf file overrides the hard-coded paths that are
compiled into the Qt library. These paths are accessible using the
diff --git a/doc/src/qtconfig.qdoc b/doc/src/deployment/qtconfig.qdoc
index 2e02fe6..2e02fe6 100644
--- a/doc/src/qtconfig.qdoc
+++ b/doc/src/deployment/qtconfig.qdoc
diff --git a/doc/src/desktop-integration.qdoc b/doc/src/desktop-integration.qdoc
deleted file mode 100644
index 1c10ed9..0000000
--- a/doc/src/desktop-integration.qdoc
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page desktop-integration.html
- \title Desktop Integration
- \ingroup gui-programming
-
- Various classes in Qt are designed to help developers integrate applications into
- users' desktop environments. These classes enable developers to take advantage
- of native services while still using a cross-platform API.
-
- \tableofcontents
-
- \section1 Opening External Resources
-
- Although Qt provides facilities to handle and display resources, such as
- \l{QImageIOHandler}{common image formats} and \l{QTextDocument}{HTML},
- it is sometimes necessary to open files and external resources using external
- applications.
-
- QDesktopServices provides an interface to services offered by the user's desktop
- environment. In particular, the \l{QDesktopServices::}{openUrl()} function is
- used to open resources using the appropriate application, which may have been
- specifically configured by the user.
-
- \section1 System Tray Icons
-
- Many modern desktop environments feature docks or panels with \e{system trays}
- in which applications can install icons. Applications often use system tray icons
- to display status information, either by updating the icon itself or by showing
- information in "balloon messages". Additionally, many applications provide
- pop-up menus that can be accessed via their system tray icons.
-
- The QSystemTrayIcon class exposes all of the above features via an intuitive
- Qt-style API that can be used on all desktop platforms.
-
- \section1 Desktop Widgets
-
- On systems where the user's desktop is displayed using more than one screen,
- certain types of applications may need to obtain information about the
- configuration of the user's workspace to ensure that new windows and dialogs
- are opened in appropriate locations.
-
- The QDesktopWidget class can be used to monitor the positions of widgets and
- notify applications about changes to the way the desktop is split over the
- available screens. This enables applications to implement policies for
- positioning new windows so that, for example, they do not distract a user
- who is working on a specific task.
-
-
-*/
diff --git a/doc/src/activeqt-dumpcpp.qdoc b/doc/src/development/activeqt-dumpcpp.qdoc
index 63e35ee..8c743a1 100644
--- a/doc/src/activeqt-dumpcpp.qdoc
+++ b/doc/src/development/activeqt-dumpcpp.qdoc
@@ -93,15 +93,15 @@
for each \c coclass and \c interface declared in the type library. coclasses marked with
the \c control attribute will be wrapped by a QAxWidget subclass.
- Those classes that wrap creatable coclasses (i.e. coclasses that are not marked
+ Those classes that wrap creatable coclasses (i.e. coclasses that are not marked
as \c noncreatable) have a default constructor; this is typically a single class
of type \c Application.
\snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 0
All other classes can only be created by passing an IDispatch interface pointer
- to the constructor; those classes should however not be created explicitly.
- Instead, use the appropriate API of already created objects.
+ to the constructor; those classes should however not be created explicitly.
+ Instead, use the appropriate API of already created objects.
\snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 1
@@ -123,16 +123,16 @@
By default, methods and property returning subobjects will use the type as in
the type library. The caller of the function is responsible for deleting or
- reparenting the object returned. If the \c -compat switch is set, properties
+ reparenting the object returned. If the \c -compat switch is set, properties
and method returning a COM object have the return type \c IDispatch*, and
- the namespace will not declare wrapper classes for interfaces.
+ the namespace will not declare wrapper classes for interfaces.
In this case, create the correct wrapper class explicitly:
\snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 4
You can of course use the IDispatch* returned directly, in which case you have to
- call \c Release() when finished with the interface.
+ call \c Release() when finished with the interface.
All classes in the namespace are tagged with a macro that allows you to export
or import them from a DLL. To do that, declare the macro to expand to
diff --git a/doc/src/activeqt-dumpdoc.qdoc b/doc/src/development/activeqt-dumpdoc.qdoc
index 55ab2d7..55ab2d7 100644
--- a/doc/src/activeqt-dumpdoc.qdoc
+++ b/doc/src/development/activeqt-dumpdoc.qdoc
diff --git a/doc/src/activeqt-idc.qdoc b/doc/src/development/activeqt-idc.qdoc
index 974eddc..974eddc 100644
--- a/doc/src/activeqt-idc.qdoc
+++ b/doc/src/development/activeqt-idc.qdoc
diff --git a/doc/src/activeqt-testcon.qdoc b/doc/src/development/activeqt-testcon.qdoc
index 9fcfed6..9fcfed6 100644
--- a/doc/src/activeqt-testcon.qdoc
+++ b/doc/src/development/activeqt-testcon.qdoc
diff --git a/doc/src/assistant-manual.qdoc b/doc/src/development/assistant-manual.qdoc
index 1b82b1a..b26efcc 100644
--- a/doc/src/assistant-manual.qdoc
+++ b/doc/src/development/assistant-manual.qdoc
@@ -642,8 +642,8 @@
\endtable
In addition to those \QA specific tags, the tags for generating and registering
- documentation can be used. See \l{QtHelp Module#Creating a Qt Help Collection}{Qt Help Collection}
- documentation for more information.
+ documentation can be used. See \l{The Qt Help Framework#Creating a Qt Help Collection}
+ {Qt Help Collection} documentation for more information.
An example of a help collection file that uses all the available tags is shown below:
diff --git a/doc/src/debug.qdoc b/doc/src/development/debug.qdoc
index bedf73d..f0fe128 100644
--- a/doc/src/debug.qdoc
+++ b/doc/src/development/debug.qdoc
@@ -39,22 +39,9 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Qt Debugging Techniques
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page debug.html
\title Debugging Techniques
- \ingroup buildsystem
Here we present some useful hints to help you with debugging your
Qt-based software.
diff --git a/doc/src/designer-manual.qdoc b/doc/src/development/designer-manual.qdoc
index 5d8587a..5d8587a 100644
--- a/doc/src/designer-manual.qdoc
+++ b/doc/src/development/designer-manual.qdoc
diff --git a/doc/src/developing-on-mac.qdoc b/doc/src/development/developing-on-mac.qdoc
index 2546ef1..dee6d4d 100644
--- a/doc/src/developing-on-mac.qdoc
+++ b/doc/src/development/developing-on-mac.qdoc
@@ -44,7 +44,7 @@
\title Developing Qt Applications on Mac OS X
\brief A overview of items to be aware of when developing Qt applications
on Mac OS X
- \ingroup platform-notes
+ \ingroup platform-specific
\tableofcontents
diff --git a/doc/src/classes/q3popupmenu.qdoc b/doc/src/development/developing-with-qt.qdoc
index c20dadc..9fa2242 100644
--- a/doc/src/classes/q3popupmenu.qdoc
+++ b/doc/src/development/developing-with-qt.qdoc
@@ -40,37 +40,35 @@
****************************************************************************/
/*!
- \class Q3PopupMenu
- \brief The Q3PopupMenu class is a thin compatibility wrapper around QMenu.
- \compat
+ \page developing-with-qt.html
+ \title Cross Platform Development with Qt
- Use QMenu in new applications. Note that the menu's actions must
- be \l {Q3Action}s.
-*/
-
-/*!
- \fn Q3PopupMenu::Q3PopupMenu(QWidget *parent, const char *name)
-
- Constructs a menu with the given \a parent and \a name.
-*/
-
-/*!
- \fn int Q3PopupMenu::exec()
-
- Pops up the menu and returns the ID of the action that was
- selected.
-
- \sa QMenu::exec()
-*/
-
-/*!
- \fn int Q3PopupMenu::exec(const QPoint & pos, int indexAtPoint)
-
- Pops up the menu at coordinate \a pos and returns the ID of the
- action that was selected.
-
- If \a indexAtPoint is specified, the menu will pop up with the
- item at index \a indexAtPoint under the mouse cursor.
+ Qt is provided with a set of build tools to help developers automate
+ the process of building and installing Qt applications.
- \sa QMenu::exec()
+ \table 100%
+ \header \o Development \o Cross-Platform Issues \o Specific Tools
+ \row
+ \o
+ \list
+ \o \l {Debugging Techniques}
+ \o \l {Qt's Tools}
+ \o \l {The Qt Resource System}
+ \o \l {Using Precompiled Headers}
+ \endlist
+ \o
+ \list
+ \o \l {Cross Compiling Qt for Embedded Linux Applications}
+ \o \l {Deploying Qt Applications}
+ \o \l {Installation}{Installing Qt}
+ \o \l {Window System Specific Notes}
+ \endlist
+ \o
+ \list
+ \o \l lupdate and \l lrelease
+ \o \l {moc}{Meta-Object Compiler (moc)}
+ \o \l {User Interface Compiler (uic)}
+ \o \l {Resource Compiler (rcc)}
+ \endlist
+ \endtable
*/
diff --git a/doc/src/moc.qdoc b/doc/src/development/moc.qdoc
index ee57f7e..747c68d 100644
--- a/doc/src/moc.qdoc
+++ b/doc/src/development/moc.qdoc
@@ -42,7 +42,6 @@
/*!
\page moc.html
\title Using the Meta-Object Compiler (moc)
- \ingroup buildsystem
\ingroup qttools
\keyword moc
diff --git a/doc/src/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 2a0ad9a..181ba6a 100644
--- a/doc/src/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -45,7 +45,6 @@
\startpage {index.html}{Qt Reference Documentation}
\nextpage qmake Tutorial
- \ingroup buildsystem
\ingroup qttools
\keyword qmake
@@ -3843,7 +3842,6 @@
\contentspage {qmake Manual}{Contents}
\previouspage qmake Advanced Usage
\nextpage qmake Reference
- \ingroup buildsystem
\target Introduction
@@ -4262,8 +4260,7 @@
\snippet examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro 0
- See the \l{Qt Examples#Qt Designer}{Qt Designer examples} for more
- examples of plugin-based projects.
+ See the \l{Qt Designer Examples} for more examples of plugin-based projects.
\section1 Building and Installing in Debug and Release Modes
diff --git a/doc/src/qmsdev.qdoc b/doc/src/development/qmsdev.qdoc
index b6126a5..ceed4c1 100644
--- a/doc/src/qmsdev.qdoc
+++ b/doc/src/development/qmsdev.qdoc
@@ -1,12 +1,41 @@
/****************************************************************************
**
-** Documentation of Visual Studio Integration Plugin.
-**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/qtestlib.qdoc b/doc/src/development/qtestlib.qdoc
index 57683e6..13a5b7c 100644
--- a/doc/src/qtestlib.qdoc
+++ b/doc/src/development/qtestlib.qdoc
@@ -42,9 +42,9 @@
/*!
\page qtestlib-manual.html
\title QTestLib Manual
- \ingroup architecture
\brief An overview of Qt's unit testing framework.
+ \ingroup frameworks-technologies
\keyword qtestlib
The QTestLib framework, provided by Nokia, is a tool for unit
@@ -383,7 +383,6 @@
\nextpage {Chapter 1: Writing a Unit Test}{Chapter 1}
\title QTestLib Tutorial
- \ingroup howto
This tutorial gives a short introduction to how to use some of the
features of the QTestLib framework. It is divided into four
diff --git a/doc/src/rcc.qdoc b/doc/src/development/rcc.qdoc
index 5eb5547..1da641c 100644
--- a/doc/src/rcc.qdoc
+++ b/doc/src/development/rcc.qdoc
@@ -42,7 +42,6 @@
/*!
\page rcc.html
\title Resource Compiler (rcc)
- \ingroup buildsystem
\ingroup qttools
\keyword rcc
diff --git a/doc/src/tools-list.qdoc b/doc/src/development/tools-list.qdoc
index 509a1e7..01f71d3 100644
--- a/doc/src/tools-list.qdoc
+++ b/doc/src/development/tools-list.qdoc
@@ -42,7 +42,6 @@
/*!
\group qttools
\title Qt's Tools
- \ingroup buildsystem
Qt is supplied with several command line and graphical tools to
ease and speed the development process. Each tool is listed here
diff --git a/doc/src/uic.qdoc b/doc/src/development/uic.qdoc
index f774fa8..b05643c 100644
--- a/doc/src/uic.qdoc
+++ b/doc/src/development/uic.qdoc
@@ -42,7 +42,6 @@
/*!
\page uic.html
\title User Interface Compiler (uic)
- \ingroup buildsystem
\ingroup qttools
\keyword uic
diff --git a/doc/src/distributingqt.qdoc b/doc/src/distributingqt.qdoc
deleted file mode 100644
index 0739976..0000000
--- a/doc/src/distributingqt.qdoc
+++ /dev/null
@@ -1,154 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Documentation on deploying Qt.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*
-\page distributingqt.html
-
-\title Deploying Qt Applications
-
-This document lists the platform-specific files needed to distribute
-Qt applications. We do not include any compiler-specific files that
-may also be required. (See also, \link winsystem.html Window
-System-specific Notes\endlink.)
-
-\tableofcontents
-
-Also see the "deployment" articles in
-\e{\link http://qt.nokia.com/doc/qq/ Qt Quarterly\endlink}:
-\list
-\i \link http://qt.nokia.com/doc/qq/qq09-mac-deployment.html
-Deploying Applications on Mac OS X\endlink
-\i \link http://qt.nokia.com/doc/qq/qq10-windows-deployment.html
-Deploying Applications on Windows\endlink
-\i \link http://qt.nokia.com/doc/qq/qq11-unix-deployment.html
-Deploying Applications on X11\endlink
-\endlist
-
-\section1 Static Qt Applications
-
-To distribute static Qt applications, you need the following file for
-all platforms:
-
-\list
-\i your application's executable
-\endlist
-
-\section1 Dynamic Qt Applications
-
-To distribute dynamic Qt applications, you will need the following
-files for all platforms:
-
-\list
-\i application executable
-\i the Qt library
-\endlist
-
-The Qt library must either be in the same directory as the application
-executable or in a directory which is included in the system library
-path.
-
-The library is provided by the following platform specific files:
-
-\table
-\header \i Platform \i File
-\row \i Windows \i \c qt[version].dll
-\row \i Unix/Linux \i \c libqt[version].so
-\row \i Mac \i \c libqt[version].dylib
-\endtable
-
-\e version includes the three version numbers.
-
-\section2 Distributing Plugins
-
-You must include any plugin files required by the application.
-
-Plugins must be put into a subdirectory under a directory known to
-Qt as a plugin directory. The subdirectory must have the name of the
-plugin category (e.g. \c styles, \c sqldrivers, \c designer, etc.).
-
-Qt searches in the following directories for plugin categories:
-
-\list
-\i Application specific plugin paths
-\i Build-directory of Qt
-\i The application directory
-\endlist
-
-Application specific plugin paths can be added using
-QCoreApplication::addLibraryPath(). The build-directory of Qt is hardcoded
-in the Qt library and can be changed as a part of the installation
-process.
-
-\section1 Dynamic Dialogs
-
-For dynamic dialogs if you use QWidgetFactory, you need the following
-files for all platforms:
-
-\list
-\i The same files as used for dynamic Qt applications
-\i The QUI Library
-\endlist
-
-The QUI library is provided by the following platform specific files:
-\table
-\header \i Platform \i File
-\row \i Windows \i\c qui.lib
-\row \i Unix/Linux \i\c libqui.so
-\row \i Mac \i \c libqui.dylib
-\endtable
-
-The QUI library must either be in the same directory as the
-application executable or in a directory which is included in the
-system library path.
-
-*/
diff --git a/doc/src/examples-overview.qdoc b/doc/src/examples-overview.qdoc
deleted file mode 100644
index 50c19fa..0000000
--- a/doc/src/examples-overview.qdoc
+++ /dev/null
@@ -1,367 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page examples-overview.html
- \title An Overview of Qt's Examples
- \brief A short guide to the different categories of examples included with Qt.
- \ingroup howto
-
- Qt is supplied with a variety of examples that cover almost every aspect
- of development. These examples are ordered by functional area, but many
- examples often use features from many parts of Qt to highlight one area
- in particular.
-
- This document provides a brief overview of each example category and
- provides links to the more formal \l{Qt Examples}{list of examples}.
-
- \section1 \l{Qt Examples#Widgets}{Widgets}
-
- \l{Qt Examples#Widgets}{\inlineimage widget-examples.png
- }
-
- Qt comes with a large range of standard widgets that users of modern
- applications have come to expect.
-
- You can also develop your own custom widgets and controls, and use them
- alongside standard widgets.
-
- It is even possible to provide custom styles and themes for widgets that can
- be used to change the appearance of standard widgets and appropriately
- written custom widgets.
-
- \section1 \l{Qt Examples#Dialogs}{Dialogs}
-
- \l{Qt Examples#Dialogs}{\inlineimage dialog-examples.png
- }
-
- Qt includes standard dialogs for many common operations, such as file
- selection, printing, and color selection.
-
- Custom dialogs can also be created for specialized modal or modeless
- interactions with users.
-
- \section1 \l{Qt Examples#Main Windows}{Main Windows}
-
- \l{Qt Examples#Main Windows}{\inlineimage mainwindow-examples.png
- }
-
- All the standard features of application main windows are provided by Qt.
-
- Main windows can have pull down menus, tool bars, and dock windows. These
- separate forms of user input are unified in an integrated action system that
- also supports keyboard shortcuts and accelerator keys in menu items.
-
- \section1 \l{Qt Examples#Layouts}{Layouts}
-
- \l{Qt Examples#Layouts}{\inlineimage layout-examples.png
- }
-
- Qt uses a layout-based approach to widget management. Widgets are arranged in
- the optimal positions in windows based on simple layout rules, leading to a
- consistent look and feel.
-
- Custom layouts can be used to provide more control over the positions and
- sizes of child widgets.
-
- \section1 \l{Qt Examples#Painting}{Painting}
-
- \l{Qt Examples#Painting}{\inlineimage painting-examples.png
- }
-
- Qt's painting system is able to render vector graphics, images, and outline
- font-based text with sub-pixel accuracy accuracy using anti-aliasing to
- improve rendering quality.
-
- These examples show the most common techniques that are used when painting
- with Qt, from basic concepts such as drawing simple primitives to the use of
- transformations.
-
- \section1 \l{Qt Examples#Item Views}{Item Views}
-
- \l{Qt Examples#Item Views}{\inlineimage itemview-examples.png
- }
-
- Item views are widgets that typically display data sets. Qt 4's model/view
- framework lets you handle large data sets by separating the underlying data
- from the way it is represented to the user, and provides support for
- customized rendering through the use of delegates.
-
- \section1 \l{Qt Examples#Graphics View}{Graphics View}
-
- \l{Qt Examples#Graphics View}{\inlineimage graphicsview-examples.png
- }
-
- Qt is provided with a comprehensive canvas through the GraphicsView
- classes.
-
- These examples demonstrate the fundamental aspects of canvas programming
- with Qt.
-
- \section1 \l{Qt Examples#Rich Text}{Rich Text}
-
- \l{Qt Examples#Rich Text}{\inlineimage richtext-examples.png
- }
-
- Qt provides powerful document-oriented rich text engine that supports Unicode
- and right-to-left scripts. Documents can be manipulated using a cursor-based
- API, and their contents can be imported and exported as both HTML and in a
- custom XML format.
-
- \section1 \l{Qt Examples#Tools}{Tools}
-
- \l{Qt Examples#Tools}{\inlineimage tool-examples.png
- }
-
- Qt is equipped with a range of capable tool classes, from containers and
- iterators to classes for string handling and manipulation.
-
- Other classes provide application infrastructure support, handling plugin
- loading and managing configuration files.
-
- \section1 \l{Qt Examples#Desktop}{Desktop}
-
- \l{Qt Examples#Desktop}{\inlineimage desktop-examples.png
- }
-
- Qt provides features to enable applications to integrate with the user's
- preferred desktop environment.
-
- Features such as system tray icons, access to the desktop widget, and
- support for desktop services can be used to improve the appearance of
- applications and take advantage of underlying desktop facilities.
-
- \section1 \l{Qt Examples#Drag and Drop}{Drag and Drop}
-
- \l{Qt Examples#Drag and Drop}{\inlineimage draganddrop-examples.png
- }
-
- Qt supports native drag and drop on all platforms via an extensible
- MIME-based system that enables applications to send data to each other in the
- most appropriate formats.
-
- Drag and drop can also be implemented for internal use by applications.
-
- \section1 \l{Qt Examples#Threads}{Threads}
-
- \l{Qt Examples#Threads}{\inlineimage thread-examples.png
- }
-
- Qt 4 makes it easier than ever to write multithreaded applications. More
- classes have been made usable from non-GUI threads, and the signals and slots
- mechanism can now be used to communicate between threads.
-
- Additionally, it is now possible to move objects between threads.
-
- \section1 \l{Qt Examples#Concurrent Programming}{Concurrent Programming}
-
- The QtConcurrent namespace includes a collection of classes and functions
- for straightforward concurrent programming.
-
- These examples show how to apply the basic techniques of concurrent
- programming to simple problems.
-
- \section1 \l{Qt Examples#Network}{Network}
-
- \l{Qt Examples#Network}{\inlineimage network-examples.png
- }
-
- Qt is provided with an extensive set of network classes to support both
- client-based and server side network programming.
-
- These examples demonstrate the fundamental aspects of network programming
- with Qt.
-
- \section1 \l{Qt Examples#XML}{XML}
-
- \l{Qt Examples#XML}{\inlineimage xml-examples.png
- }
-
- XML parsing and handling is supported through SAX and DOM compliant APIs.
-
- Qt's SAX compliant classes allow you to parse XML incrementally; the DOM
- classes enable more complex document-level operations to be performed on
- XML files.
-
- \section1 \l{Qt Examples#XQuery, XPath}{XQuery, XPath}
-
- Qt provides an XQuery/XPath engine, QtXmlPatterns, for querying XML
- files and custom data models, similar to the model/view framework.
-
- \section1 \l{Qt Examples#OpenGL}{OpenGL}
-
- \l{Qt Examples#OpenGL}{\inlineimage opengl-examples.png
- }
-
- Qt provides support for integration with OpenGL implementations on all
- platforms, giving developers the opportunity to display hardware accelerated
- 3D graphics alongside a more conventional user interface.
-
- These examples demonstrate the basic techniques used to take advantage of
- OpenGL in Qt applications.
-
- \section1 \l{Qt Examples#Multimedia}{Multimedia}
-
- \l{Qt Examples#Multimedia}
-
- Qt provides low-level audio support on linux,windows and mac platforms by default and
- an audio plugin API to allow developers to implement there own audio support for
- custom devices and platforms.
-
- These examples demonstrate the basic techniques used to take advantage of
- Audio API in Qt applications.
-
- \section1 \l{Qt Examples#SQL}{SQL}
-
- \l{Qt Examples#SQL}{\inlineimage sql-examples.png
- }
-
- Qt provides extensive database interoperability, with support for products
- from both open source and proprietary vendors.
-
- SQL support is integrated with Qt's model/view architecture, making it easier
- to provide GUI integration for your database applications.
-
- \section1 \l{Qt Examples#Help System}{Help System}
-
- \l{Qt Examples#Help System}{\inlineimage assistant-examples.png
- }
-
- Support for interactive help is provided by the Qt Assistant application.
- Developers can take advantages of the facilities it offers to display
- specially-prepared documentation to users of their applications.
-
- \section1 \l{Qt Examples#Qt Designer}{Qt Designer}
-
- \l{Qt Examples#Qt Designer}{\inlineimage designer-examples.png
- }
-
- Qt Designer is a capable graphical user interface designer that lets you
- create and configure forms without writing code. GUIs created with
- Qt Designer can be compiled into an application or created at run-time.
-
- \section1 \l{Qt Examples#UiTools}{UiTools}
-
- \l{Qt Examples#UiTools}{\inlineimage uitools-examples.png
- }
-
- Qt is equipped with a range of capable tool classes, from containers and
- iterators to classes for string handling and manipulation.
-
- Other classes provide application infrastructure support, handling plugin
- loading and managing configuration files.
-
- \section1 \l{Qt Examples#Qt Linguist}{Qt Linguist}
-
- \l{Qt Examples#Qt Linguist}{\inlineimage linguist-examples.png
- }
-
- Internationalization is a core feature of Qt. These examples show how to
- access translation and localization facilities at run-time.
-
- \section1 \l{Qt Examples#Qt Script}{Qt Script}
-
- \l{Qt Examples#Qt Script}{\inlineimage qtscript-examples.png
- }
-
- Qt is provided with a powerful embedded scripting environment through the QtScript
- classes.
-
- These examples demonstrate the fundamental aspects of scripting applications
- with Qt.
-
- \section1 \l{Qt Examples#Phonon Multimedia Framework}{Phonon Multimedia Framework}
-
- \l{Qt Examples#Phonon Multimedia Framework}{\inlineimage phonon-examples.png
- }
-
- The Phonon Multimedia Framework brings multimedia support to Qt applications.
-
- The examples and demonstrations provided show how to play music and movies
- using the Phonon API.
-
- \section1 \l{Qt Examples#WebKit}{WebKit}
-
- \l{Qt Examples#WebKit}{\inlineimage webkit-examples.png
- }
-
- Qt provides an integrated Web browser component based on WebKit, the popular
- open source browser engine.
-
- These examples and demonstrations show a range of different uses for WebKit,
- from displaying Web pages within a Qt user interface to an implementation of
- a basic function Web browser.
-
- \section1 \l{Qt Examples#State Machine}{State Machine}
-
- Qt provides a powerful hierchical finite state machine through the Qt State
- Machine classes.
-
- These examples demonstrate the fundamental aspects of implementing
- Statecharts with Qt.
-
- \section1 \l{Qt Examples#Qt for Embedded Linux}{Qt for Embedded Linux}
-
- \l{Qt Examples#Qt for Embedded Linux}{\inlineimage qt-embedded-examples.png
- }
-
- These examples show how to take advantage of features specifically designed
- for use on systems with limited resources, specialized hardware, and small
- screens.
-
- \section1 \l{Qt Examples#ActiveQt}{ActiveQt}
-
- Qt is supplied with a number of example applications and demonstrations that
- have been written to provide developers with examples of the Qt API in use,
- highlight good programming practice, and showcase features found in each of
- Qt's core technologies.
-
- The example and demo launcher can be used to explore the different categories
- available. It provides an overview of each example, lets you view the
- documentation in Qt Assistant, and is able to launch examples and demos.
-
- \section1 \l{http://qt.nokia.com/doc/qq}{Another Source of Examples}
-
- One more valuable source for examples and explanations of Qt
- features is the archive of the \l {http://qt.nokia.com/doc/qq}
- {Qt Quarterly}.
-
-*/
diff --git a/doc/src/examples.qdoc b/doc/src/examples.qdoc
deleted file mode 100644
index 0181e09..0000000
--- a/doc/src/examples.qdoc
+++ /dev/null
@@ -1,437 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page examples.html
- \title Qt Examples
- \brief Information about the example programs provided with Qt.
- \ingroup howto
-
- This is the list of examples in Qt's \c examples directory. The
- examples demonstrate Qt features in small, self-contained
- programs. They are not all designed to be impressive when you run
- them, but their source code is carefully written to show good Qt
- programming practices. You can launch any of these programs from the
- \l{Examples and Demos Launcher} application.
-
- If you are new to Qt, you should probably start by going through
- the \l{Tutorials} before you have a look at the
- \l{mainwindows/application}{Application} example.
-
- In addition to the examples and the tutorial, Qt includes a
- \l{Qt Demonstrations}{selection of demos} that deliberately show off
- Qt's features. You might want to look at these as well.
-
- One more valuable source for examples and explanations of Qt
- features is the archive of the \l {Qt Quarterly}.
-
- In the list below, examples marked with an asterisk (*) are fully
- documented. Eventually, all the examples will be fully documented,
- but sometimes we include an example before we have time to write
- about it, because someone might need it right now.
-
- Categories:
-
- \tableofcontents
-
- \section1 ActiveQt
-
- \list
- \o \l{activeqt/comapp}{COM App}\raisedaster
- \o \l{Dot Net Example (ActiveQt)}{Dot Net}\raisedaster
- \o \l{activeqt/hierarchy}{Hierarchy}\raisedaster
- \o \l{activeqt/menus}{Menus}\raisedaster
- \o \l{activeqt/multiple}{Multiple}\raisedaster
- \o \l{activeqt/opengl}{OpenGL}\raisedaster
- \o \l{activeqt/qutlook}{Qutlook}\raisedaster
- \o \l{activeqt/simple}{Simple}\raisedaster
- \o \l{activeqt/webbrowser}{Web Browser}\raisedaster
- \o \l{activeqt/wrapper}{Wrapper}\raisedaster
- \endlist
-
- \section1 Animation
-
- \list
- \o \l{animation/moveblocks}{Move Blocks}\raisedaster
- \o \l{animation/stickman}{Stick man}\raisedaster
- \endlist
-
- \section1 Concurrent Programming
-
- \list
- \o \l{qtconcurrent/imagescaling}{QtConcurrent Asynchronous Image Scaling}
- \o \l{qtconcurrent/map}{QtConcurrent Map}
- \o \l{qtconcurrent/progressdialog}{QtConcurrent Progress Dialog}
- \o \l{qtconcurrent/runfunction}{QtConcurrent Run Function}
- \o \l{qtconcurrent/wordcount}{QtConcurrent Word Count}
- \endlist
-
- \section1 D-Bus
- \list
- \o \l{dbus/dbus-chat}{Chat}
- \o \l{dbus/complexpingpong}{Complex Ping Pong}
- \o \l{dbus/listnames}{List Names}
- \o \l{dbus/pingpong}{Ping Pong}
- \o \l{dbus/remotecontrolledcar}{Remote Controlled Car}
- \endlist
-
- \section1 Desktop
-
- \list
- \o \l{desktop/screenshot}{Screenshot}\raisedaster
- \o \l{desktop/systray}{System Tray}\raisedaster
- \endlist
-
- \section1 Dialogs
-
- \list
- \o \l{dialogs/classwizard}{Class Wizard}\raisedaster
- \o \l{dialogs/configdialog}{Config Dialog}
- \o \l{dialogs/extension}{Extension}\raisedaster
- \o \l{dialogs/findfiles}{Find Files}\raisedaster
- \o \l{dialogs/licensewizard}{License Wizard}\raisedaster
- \o \l{dialogs/standarddialogs}{Standard Dialogs}
- \o \l{dialogs/tabdialog}{Tab Dialog}\raisedaster
- \o \l{dialogs/trivialwizard}{Trivial Wizard}
- \endlist
-
- \section1 Drag and Drop
-
- \list
- \o \l{draganddrop/delayedencoding}{Delayed Encoding}\raisedaster
- \o \l{draganddrop/draggableicons}{Draggable Icons}
- \o \l{draganddrop/draggabletext}{Draggable Text}
- \o \l{draganddrop/dropsite}{Drop Site}
- \o \l{draganddrop/fridgemagnets}{Fridge Magnets}\raisedaster
- \o \l{draganddrop/puzzle}{Drag and Drop Puzzle}
- \endlist
-
- \section1 Graphics View
-
- \list
- \o \l{graphicsview/collidingmice}{Colliding Mice}\raisedaster
- \o \l{graphicsview/diagramscene}{Diagram Scene}\raisedaster
- \o \l{graphicsview/dragdroprobot}{Drag and Drop Robot}
- \o \l{graphicsview/elasticnodes}{Elastic Nodes}
- \o \l{graphicsview/portedasteroids}{Ported Asteroids}
- \o \l{graphicsview/portedcanvas}{Ported Canvas}
- \endlist
-
- \section1 Help System
-
- \list
- \o \l{help/simpletextviewer}{Simple Text Viewer}\raisedaster
- \endlist
-
- \section1 Item Views
-
- \list
- \o \l{itemviews/addressbook}{Address Book}\raisedaster
- \o \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model}
- \o \l{itemviews/chart}{Chart}
- \o \l{itemviews/coloreditorfactory}{Color Editor Factory}\raisedaster
- \o \l{itemviews/combowidgetmapper}{Combo Widget Mapper}\raisedaster
- \o \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model}\raisedaster
- \o \l{itemviews/dirview}{Dir View}
- \o \l{itemviews/editabletreemodel}{Editable Tree Model}\raisedaster
- \o \l{itemviews/fetchmore}{Fetch More}\raisedaster
- \o \l{itemviews/frozencolumn}{Frozen Column}\raisedaster
- \o \l{itemviews/pixelator}{Pixelator}\raisedaster
- \o \l{itemviews/puzzle}{Puzzle}
- \o \l{itemviews/simpledommodel}{Simple DOM Model}\raisedaster
- \o \l{itemviews/simpletreemodel}{Simple Tree Model}\raisedaster
- \o \l{itemviews/simplewidgetmapper}{Simple Widget Mapper}\raisedaster
- \o \l{itemviews/spinboxdelegate}{Spin Box Delegate}\raisedaster
- \o \l{itemviews/stardelegate}{Star Delegate}\raisedaster
- \endlist
-
- \section1 Layouts
-
- \list
- \o \l{layouts/basiclayouts}{Basic Layouts}\raisedaster
- \o \l{layouts/borderlayout}{Border Layout}
- \o \l{layouts/dynamiclayouts}{Dynamic Layouts}
- \o \l{layouts/flowlayout}{Flow Layout}
- \endlist
-
- \section1 Main Windows
-
- \list
- \o \l{mainwindows/application}{Application}\raisedaster
- \o \l{mainwindows/dockwidgets}{Dock Widgets}\raisedaster
- \o \l{mainwindows/mdi}{MDI}
- \o \l{mainwindows/menus}{Menus}\raisedaster
- \o \l{mainwindows/recentfiles}{Recent Files}
- \o \l{mainwindows/sdi}{SDI}
- \endlist
-
- \section1 Network
-
- \list
- \o \l{network/blockingfortuneclient}{Blocking Fortune Client}\raisedaster
- \o \l{network/broadcastreceiver}{Broadcast Receiver}
- \o \l{network/broadcastsender}{Broadcast Sender}
- \o \l{network/network-chat}{Network Chat}
- \o \l{network/fortuneclient}{Fortune Client}\raisedaster
- \o \l{network/fortuneserver}{Fortune Server}\raisedaster
- \o \l{network/ftp}{FTP}\raisedaster
- \o \l{network/http}{HTTP}
- \o \l{network/loopback}{Loopback}
- \o \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster
- \o \l{network/torrent}{Torrent}
- \o \l{network/googlesuggest}{Google Suggest}
- \endlist
-
- \section1 OpenGL
-
- \list
- \o \l{opengl/2dpainting}{2D Painting}\raisedaster
- \o \l{opengl/framebufferobject}{Framebuffer Object}
- \o \l{opengl/framebufferobject2}{Framebuffer Object 2}
- \o \l{opengl/grabber}{Grabber}
- \o \l{opengl/hellogl}{Hello GL}\raisedaster
- \o \l{opengl/overpainting}{Overpainting}\raisedaster
- \o \l{opengl/pbuffers}{Pixel Buffers}
- \o \l{opengl/pbuffers2}{Pixel Buffers 2}
- \o \l{opengl/samplebuffers}{Sample Buffers}
- \o \l{opengl/textures}{Textures}
- \endlist
-
- \section1 Painting
-
- \list
- \o \l{painting/basicdrawing}{Basic Drawing}\raisedaster
- \o \l{painting/concentriccircles}{Concentric Circles}\raisedaster
- \o \l{painting/fontsampler}{Font Sampler}
- \o \l{painting/imagecomposition}{Image Composition}\raisedaster
- \o \l{painting/painterpaths}{Painter Paths}\raisedaster
- \o \l{painting/svggenerator}{SVG Generator}\raisedaster
- \o \l{painting/svgviewer}{SVG Viewer}
- \o \l{painting/transformations}{Transformations}\raisedaster
- \endlist
-
- \section1 Phonon Multimedia Framework
-
- \list
- \o \l{phonon/capabilities}{Capabilities}\raisedaster
- \o \l{phonon/musicplayer}{Music Player}\raisedaster
- \endlist
-
- \section1 Multimedia
-
- \list
- \o \l{multimedia/audio/audiodevices}{Audio Devices}\raisedaster
- \o \l{multimedia/audio/audiooutput}{Audio Output}\raisedaster
- \o \l{multimedia/audio/audioinput}{Audio Input}\raisedaster
- \endlist
-
- \section1 Qt Designer
-
- \list
- \o \l{designer/calculatorbuilder}{Calculator Builder}\raisedaster
- \o \l{designer/calculatorform}{Calculator Form}\raisedaster
- \o \l{designer/customwidgetplugin}{Custom Widget Plugin}\raisedaster
- \o \l{designer/taskmenuextension}{Task Menu Extension}\raisedaster
- \o \l{designer/containerextension}{Container Extension}\raisedaster
- \o \l{designer/worldtimeclockbuilder}{World Time Clock Builder}\raisedaster
- \o \l{designer/worldtimeclockplugin}{World Time Clock Plugin}\raisedaster
- \endlist
-
- \section1 Qt Linguist
-
- \list
- \o \l{linguist/hellotr}{Hello tr()}\raisedaster
- \o \l{linguist/arrowpad}{Arrow Pad}\raisedaster
- \o \l{linguist/trollprint}{Troll Print}\raisedaster
- \endlist
-
- \section1 Qt for Embedded Linux
-
- \list
- \o \l{qws/svgalib}{Accelerated Graphics Driver}\raisedaster
- \o \l{qws/dbscreen}{Double Buffered Graphics Driver}\raisedaster
- \o \l{qws/mousecalibration}{Mouse Calibration}\raisedaster
- \o \l{qws/ahigl}{OpenGL for Embedded Systems}\raisedaster
- \o \l{qws/simpledecoration}{Simple Decoration}\raisedaster
- \endlist
-
- \section1 Qt Script
-
- \list
- \o \l{script/calculator}{Calculator}\raisedaster
- \o \l{script/context2d}{Context2D}\raisedaster
- \o \l{script/defaultprototypes}{Default Prototypes}\raisedaster
- \o \l{script/helloscript}{Hello Script}\raisedaster
- \o \l{script/qstetrix}{Qt Script Tetrix}\raisedaster
- \o \l{script/customclass}{Custom Script Class}\raisedaster
- \endlist
-
- \section1 Rich Text
-
- \list
- \o \l{richtext/calendar}{Calendar}\raisedaster
- \o \l{richtext/orderform}{Order Form}\raisedaster
- \o \l{richtext/syntaxhighlighter}{Syntax Highlighter}\raisedaster
- \o \l{richtext/textobject}{Text Object}\raisedaster
- \endlist
-
- \section1 SQL
-
- \list
- \o \l{sql/cachedtable}{Cached Table}\raisedaster
- \o \l{sql/drilldown}{Drill Down}\raisedaster
- \o \l{sql/querymodel}{Query Model}
- \o \l{sql/relationaltablemodel}{Relational Table Model}
- \o \l{sql/tablemodel}{Table Model}
- \o \l{sql/sqlwidgetmapper}{SQL Widget Mapper}\raisedaster
- \endlist
-
- \section1 State Machine
-
- \list
- \o \l{statemachine/eventtransitions}{Event Transitions}\raisedaster
- \o \l{statemachine/factorial}{Factorial States}\raisedaster
- \o \l{statemachine/pingpong}{Ping Pong States}\raisedaster
- \o \l{statemachine/rogue}{Rogue}\raisedaster
- \o \l{statemachine/trafficlight}{Traffic Light}\raisedaster
- \o \l{statemachine/twowaybutton}{Two-way Button}\raisedaster
- \endlist
-
- \section1 Threads
-
- \list
- \o \l{threads/queuedcustomtype}{Queued Custom Type}\raisedaster
- \o \l{threads/mandelbrot}{Mandelbrot}\raisedaster
- \o \l{threads/semaphores}{Semaphores}\raisedaster
- \o \l{threads/waitconditions}{Wait Conditions}\raisedaster
- \endlist
-
- \section1 Tools
-
- \list
- \o \l{tools/codecs}{Codecs}
- \o \l{tools/completer}{Completer}\raisedaster
- \o \l{tools/customcompleter}{Custom Completer}\raisedaster
- \o \l{tools/customtype}{Custom Type}\raisedaster
- \o \l{tools/customtypesending}{Custom Type Sending}\raisedaster
- \o \l{tools/echoplugin}{Echo Plugin}\raisedaster
- \o \l{tools/i18n}{I18N}
- \o \l{tools/plugandpaint}{Plug & Paint}\raisedaster
- \o Plug & Paint Plugins: \l{tools/plugandpaintplugins/basictools}{Basic Tools}\raisedaster
- and \l{tools/plugandpaintplugins/extrafilters}{Extra Filters}\raisedaster
- \o \l{tools/regexp}{RegExp}
- \o \l{tools/settingseditor}{Settings Editor}
- \o \l{tools/styleplugin}{Style Plugin}\raisedaster
- \o \l{tools/treemodelcompleter}{Tree Model Completer}\raisedaster
- \o \l{tools/undoframework}{Undo Framework}\raisedaster
- \endlist
-
- \section1 UiTools
-
- \list
- \o \l{uitools/multipleinheritance}{Multiple Inheritance}\raisedaster
- \o \l{uitools/textfinder}{Text Finder}\raisedaster
- \endlist
-
- \section1 WebKit
-
- \list
- \o \l{webkit/previewer}{Previewer}\raisedaster
- \o \l{webkit/formextractor}{Form Extractor}
- \o \l{webkit/googlechat}{Google Chat}
- \o \l{webkit/fancybrowser}{Fancy Browser}
- \endlist
-
- \section1 Widgets
-
- \list
- \o \l{widgets/analogclock}{Analog Clock}\raisedaster
- \o \l{widgets/calculator}{Calculator}\raisedaster
- \o \l{widgets/calendarwidget}{Calendar Widget}\raisedaster
- \o \l{widgets/charactermap}{Character Map}\raisedaster
- \o \l{widgets/codeeditor}{Code Editor}\raisedaster
- \o \l{widgets/digitalclock}{Digital Clock}\raisedaster
- \o \l{widgets/groupbox}{Group Box}\raisedaster
- \o \l{widgets/icons}{Icons}\raisedaster
- \o \l{widgets/imageviewer}{Image Viewer}\raisedaster
- \o \l{widgets/lineedits}{Line Edits}\raisedaster
- \o \l{widgets/movie}{Movie}
- \o \l{widgets/scribble}{Scribble}\raisedaster
- \o \l{widgets/shapedclock}{Shaped Clock}\raisedaster
- \o \l{widgets/sliders}{Sliders}\raisedaster
- \o \l{widgets/spinboxes}{Spin Boxes}\raisedaster
- \o \l{widgets/styles}{Styles}\raisedaster
- \o \l{widgets/stylesheet}{Style Sheet}\raisedaster
- \o \l{widgets/tablet}{Tablet}\raisedaster
- \o \l{widgets/tetrix}{Tetrix}\raisedaster
- \o \l{widgets/tooltips}{Tooltips}\raisedaster
- \o \l{widgets/wiggly}{Wiggly}\raisedaster
- \o \l{widgets/windowflags}{Window Flags}\raisedaster
- \endlist
-
- \section1 XML
-
- \list
- \o \l{xml/dombookmarks}{DOM Bookmarks}
- \o \l{xml/saxbookmarks}{SAX Bookmarks}
- \o \l{xml/streambookmarks}{QXmlStream Bookmarks}\raisedaster
- \o \l{xml/rsslisting}{RSS-Listing}
- \o \l{xml/xmlstreamlint}{XML Stream Lint Example}\raisedaster
- \endlist
-
- \section1 XQuery, XPath
-
- \list
- \o \l{xmlpatterns/recipes}{Recipes}
- \o \l{xmlpatterns/filetree}{File System Example}
- \o \l{xmlpatterns/qobjectxmlmodel}{QObject XML Model Example}
- \o \l{xmlpatterns/xquery/globalVariables}{C++ Source Code Analyzer Example}
- \o \l{xmlpatterns/trafficinfo}{Traffic Info}\raisedaster
- \o \l{xmlpatterns/schema}{XML Schema Validation}\raisedaster
- \endlist
-
- \section1 Inter-Process Communication
- \list
- \o \l{ipc/localfortuneclient}{Local Fortune Client}\raisedaster
- \o \l{ipc/localfortuneserver}{Local Fortune Server}\raisedaster
- \o \l{ipc/sharedmemory}{Shared Memory}\raisedaster
- \endlist
-*/
diff --git a/doc/src/examples/application.qdoc b/doc/src/examples/application.qdoc
index 7b7b881..dcab9e7 100644
--- a/doc/src/examples/application.qdoc
+++ b/doc/src/examples/application.qdoc
@@ -289,7 +289,7 @@
When restoring the position and size of a window, it's important
to call QWidget::resize() before QWidget::move(). The reason why
- is given in the \l{geometry.html}{Window Geometry} overview.
+ is given in the \l{Window Geometry} overview.
\snippet examples/mainwindows/application/mainwindow.cpp 37
\snippet examples/mainwindows/application/mainwindow.cpp 39
diff --git a/doc/src/examples/drilldown.qdoc b/doc/src/examples/drilldown.qdoc
index fff3b60..b62ecc5 100644
--- a/doc/src/examples/drilldown.qdoc
+++ b/doc/src/examples/drilldown.qdoc
@@ -389,9 +389,7 @@
the item's hover events, animating the item when the mouse cursor
is hovering over the image (by default, no items accept hover
events). Please see the \l{The Graphics View Framework}
- documentation and the
- \l{Qt Examples#Graphics View}{Graphics View examples} for more
- details.
+ documentation and the \l{Graphics View Examples} for more details.
\snippet examples/sql/drilldown/view.cpp 5
diff --git a/doc/src/examples/qtscriptcalculator.qdoc b/doc/src/examples/qtscriptcalculator.qdoc
index e9156b3..0e6e153 100644
--- a/doc/src/examples/qtscriptcalculator.qdoc
+++ b/doc/src/examples/qtscriptcalculator.qdoc
@@ -42,7 +42,6 @@
/*!
\example script/calculator
\title QtScript Calculator Example
- \ingroup scripting
In this simple QtScript example, we show how to implement the
functionality of a calculator widget.
diff --git a/doc/src/examples/trafficinfo.qdoc b/doc/src/examples/trafficinfo.qdoc
index 76d0810..500cf31 100644
--- a/doc/src/examples/trafficinfo.qdoc
+++ b/doc/src/examples/trafficinfo.qdoc
@@ -159,5 +159,5 @@
The rest of the code in this example is just for representing the time and
station information to the user, and uses techniques described in the
- \l{Qt Examples#Widgets}{Widgets examples}.
+ \l{Widgets Examples}.
*/
diff --git a/doc/src/datastreamformat.qdoc b/doc/src/files-and-resources/datastreamformat.qdoc
index eac550c..4226d0b 100644
--- a/doc/src/datastreamformat.qdoc
+++ b/doc/src/files-and-resources/datastreamformat.qdoc
@@ -39,22 +39,9 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Documentation of the Format of the QDataStream operators.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page datastreamformat.html
\title Format of the QDataStream Operators
- \ingroup architecture
\brief Representations of data types that can be serialized by QDataStream.
The \l QDataStream allows you to serialize some of the Qt data types.
diff --git a/doc/src/resources.qdoc b/doc/src/files-and-resources/resources.qdoc
index f8e9124..a799646 100644
--- a/doc/src/resources.qdoc
+++ b/doc/src/files-and-resources/resources.qdoc
@@ -40,9 +40,20 @@
****************************************************************************/
/*!
+ \group io
+ \title Input/Output and Networking
+ \ingroup groups
+
+ \brief Classes providing file input and output along with directory and
+ network handling.
+
+ These classes are used to handle input and output to and from external
+ devices, processes, files etc. as well as manipulating files and directories.
+*/
+
+/*!
\page resources.html
\title The Qt Resource System
- \ingroup buildsystem
\keyword resource system
diff --git a/doc/src/accessible.qdoc b/doc/src/frameworks-technologies/accessible.qdoc
index 8daff5a..7f1a2b1 100644
--- a/doc/src/accessible.qdoc
+++ b/doc/src/frameworks-technologies/accessible.qdoc
@@ -40,9 +40,15 @@
****************************************************************************/
/*!
+ \group accessibility
+ \title Accessibility Classes
+*/
+
+/*!
\page accessible.html
\title Accessibility
- \ingroup accessibility
+
+ \ingroup frameworks-technologies
\tableofcontents
@@ -90,6 +96,10 @@
accessibility.
\section2 Accessibility in Qt
+
+ These classes provide support for accessible applications.
+
+ \annotatedlist accessibility
When we communicate with the assistive technologies, we need to
describe Qt's user interface in a way that they can understand. Qt
@@ -249,6 +259,19 @@
produce interfaces. We will give examples of both approaches
later.
+ \section2 Enabling Accessibility Support
+
+ By default, Qt applications are run with accessibility support
+ enabled on Windows and Mac OS X. On Unix/X11 platforms, applications
+ must be launched in an environment with the \c QT_ACCESSIBILITY
+ variable set to 1. For example, this is set in the following way with
+ the bash shell:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc environment
+
+ Accessibility features are built into Qt by default when the libraries
+ are configured and built.
+
\section1 Implementing Accessibility
To provide accessibility support for a widget or other user
@@ -274,9 +297,10 @@
\endlist
In general, it is recommended that you are somewhat familiar with
- MSAA, which Qt originally was built for. You should also study
- the enum values of QAccessible, which describe the roles, actions,
- relationships, and events that you need to consider.
+ MSAA, which Qt's accessibility support originally was built for.
+ You should also study the enum values of QAccessible, which
+ describe the roles, actions, relationships, and events that you
+ need to consider.
Note that you can examine how Qt's widgets implement their
accessibility. One major problem with the MSAA standard is that
diff --git a/doc/src/qaxcontainer.qdoc b/doc/src/frameworks-technologies/activeqt-container.qdoc
index 59f059f..47be4be 100644
--- a/doc/src/qaxcontainer.qdoc
+++ b/doc/src/frameworks-technologies/activeqt-container.qdoc
@@ -40,12 +40,8 @@
****************************************************************************/
/*!
- \module QAxContainer
- \title QAxContainer Module
- \contentspage Qt's Modules
- \previouspage QtTest
- \nextpage QAxServer
- \ingroup modules
+ \page activeqt-container.html
+ \title Using ActiveX controls and COM objects in Qt
\brief The QAxContainer module is a Windows-only extension for
accessing ActiveX controls and COM objects.
@@ -69,7 +65,7 @@
interface to the Windows Script Host.
\endlist
- Some \l{Qt Examples#ActiveQt}{example applications} that use
+ Some \l{ActiveQt Examples}{example applications} that use
standard ActiveX controls to provide high-level user interface
functionality are provided.
@@ -219,42 +215,4 @@
that doesn't provide introspection (ie. ActivePython or
ActivePerl). You need to call the function directly on the
respective QAxScript object.
-
- \section1 License Information
-
- The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
- the \l{GNU Lesser General Public License (LGPL)}, or the
- \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
- the following license.
-
- \legalese
- Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
- All rights reserved.
-
- Contact: Nokia Corporation (qt-info@nokia.com)\br
-
- You may use this file under the terms of the BSD license as follows:\br
-
- "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.\br
- * 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.\br
- * Neither the name of Nokia Corporation 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."
- \endlegalese
*/
diff --git a/doc/src/qaxserver.qdoc b/doc/src/frameworks-technologies/activeqt-server.qdoc
index 63c1e13..4491be3 100644
--- a/doc/src/qaxserver.qdoc
+++ b/doc/src/frameworks-technologies/activeqt-server.qdoc
@@ -40,15 +40,11 @@
****************************************************************************/
/*!
- \module QAxServer
- \title QAxServer Module
- \contentspage Qt's Modules
- \previouspage QAxContainer
- \nextpage QtDBus module
- \ingroup modules
+ \page activeqt-server.html
+ \title Building ActiveX servers and controls with Qt
\brief The QAxServer module is a Windows-only static library that
- you can use to turn a standard Qt binary into a COM server.
+ you can use to turn a standard Qt binary into a COM server.
The QAxServer module is part of the \l ActiveQt framework. It
consists of three classes:
@@ -60,7 +56,7 @@
\o QAxAggregated can be subclassed to implement additional COM interfaces.
\endlist
- Some \l{Qt Examples#ActiveQt}{example implementations} of ActiveX
+ Some \l{ActiveQt Examples}{example implementations} of ActiveX
controls and COM objects are provided.
\sa {ActiveQt Framework}
@@ -625,8 +621,8 @@
If the web browser supports scripting use JavaScript, VBScript
and forms to script the control. The
- \l{Qt Examples#ActiveQt}{ActiveQt examples} include demonstration
- HTML pages for the example controls.
+ \l{ActiveQt Examples} include demonstration HTML pages for the example
+ controls.
\section2 Supported and Unsupported ActiveX Clients
@@ -857,42 +853,4 @@
QAxAggregated subclass.
\snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 20
-
- \section1 License Information
-
- The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
- the \l{GNU Lesser General Public License (LGPL)}, or the
- \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
- the following license.
-
- \legalese
- Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
- All rights reserved.
-
- Contact: Nokia Corporation (qt-info@nokia.com)\br
-
- You may use this file under the terms of the BSD license as follows:\br
-
- "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.\br
- * 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.\br
- * Neither the name of Nokia Corporation 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."
- \endlegalese
*/
diff --git a/doc/src/activeqt.qdoc b/doc/src/frameworks-technologies/activeqt.qdoc
index b3f0856..75c598a 100644
--- a/doc/src/activeqt.qdoc
+++ b/doc/src/frameworks-technologies/activeqt.qdoc
@@ -40,11 +40,23 @@
****************************************************************************/
/*!
+ \group activeqt-tools
+ \title Tools for ActiveQt
+ \brief Tools to help integrate Qt applications with ActiveX components.
+
+ These tools provide support for integrating Qt with ActiveX components.
+
+ \generatelist{related}
+
+ \sa {ActiveQt Framework}
+*/
+
+/*!
\page activeqt.html
\title ActiveQt Framework
\brief An overview of Qt's ActiveX and COM integration on Windows.
- \ingroup platform-notes
+ \ingroup platform-specific
\keyword ActiveQt
Qt's ActiveX and COM support allows Qt for Windows developers to:
diff --git a/doc/src/animation.qdoc b/doc/src/frameworks-technologies/animation.qdoc
index 7fd7850..d495aeb 100644
--- a/doc/src/animation.qdoc
+++ b/doc/src/frameworks-technologies/animation.qdoc
@@ -40,12 +40,18 @@
****************************************************************************/
/*!
+ \group animation
+ \title Animation Framework
+*/
+
+/*!
\page animation-overview.html
\title The Animation Framework
- \ingroup architecture
- \ingroup animation
+
\brief An overview of the Animation Framework
+ \ingroup frameworks-technologies
+
\keyword Animation
The animation framework is part of the Kinetic project, and aims
@@ -108,6 +114,13 @@
For detailed descriptions of the classes' function and roles in
the framework, please look up their class descriptions.
+ \section1 Classes in the Animation Framework
+
+ These classes provide a framework for creating both simple and complex
+ animations.
+
+ \annotatedlist animation
+
\section1 Animating Qt Properties
As mentioned in the previous section, the QPropertyAnimation class
diff --git a/doc/src/containers.qdoc b/doc/src/frameworks-technologies/containers.qdoc
index 49dae63..2d19b7e 100644
--- a/doc/src/containers.qdoc
+++ b/doc/src/frameworks-technologies/containers.qdoc
@@ -40,9 +40,25 @@
****************************************************************************/
/*!
- \group containers
+ \group tools
+ \title Non-GUI Classes
+ \ingroup groups
+
+ \brief Collection classes such as list, queue, stack and string, along
+ with other classes that can be used without needing QApplication.
+
+ The non-GUI classes are general-purpose collection and string classes
+ that may be used independently of the GUI classes.
+
+ In particular, these classes do not depend on QApplication at all,
+ and so can be used in non-GUI programs.
+
+*/
+
+/*!
+ \page containers.html
\title Generic Containers
- \ingroup architecture
+ \ingroup frameworks-technologies
\ingroup groups
\keyword container class
\keyword container classes
@@ -82,7 +98,23 @@
\section1 The Container Classes
- Qt provides the following container classes:
+ Qt provides the following sequential containers: QList,
+ QLinkedList, QVector, QStack, and QQueue. For most
+ applications, QList is the best type to use. Although it is
+ implemented as an array-list, it provides very fast prepends and
+ appends. If you really need a linked-list, use QLinkedList; if you
+ want your items to occupy consecutive memory locations, use QVector.
+ QStack and QQueue are convenience classes that provide LIFO and
+ FIFO semantics.
+
+ Qt also provides these associative containers: QMap,
+ QMultiMap, QHash, QMultiHash, and QSet. The "Multi" containers
+ conveniently support multiple values associated with a single
+ key. The "Hash" containers provide faster lookup by using a hash
+ function instead of a binary search on a sorted set.
+
+ As special cases, the QCache and QContiguousCache classes provide
+ efficient hash-lookup of objects in a limited cache storage.
\table
\header \o Class \o Summary
@@ -607,6 +639,9 @@
\o QCache<Key, T> provides a cache to store objects of a certain
type T associated with keys of type Key.
+ \o QContiguousCache<T> provides an efficient way of caching data
+ that is typically accessed in a contiguous way.
+
\o QPair<T1, T2> stores a pair of elements.
\endlist
diff --git a/doc/src/qdbusadaptors.qdoc b/doc/src/frameworks-technologies/dbus-adaptors.qdoc
index 92a618d..0a4dea7 100644
--- a/doc/src/qdbusadaptors.qdoc
+++ b/doc/src/frameworks-technologies/dbus-adaptors.qdoc
@@ -39,50 +39,12 @@
**
****************************************************************************/
-/** -*- mode: C++ -*-
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
/*!
\page usingadaptors.html
\title Using QtDBus Adaptors
+ \ingroup best-practices
+
Adaptors are special classes that are attached to any QObject-derived class
and provide the interface to the external world using D-Bus. Adaptors are
intended to be lightweight classes whose main purpose is to relay calls to
@@ -129,6 +91,9 @@
\page qdbusadaptorexample.html
\title D-Bus Adaptor Example
+ \previouspage The QtDBus Type System
+ \contentspage Using QtDBus Adaptors
+
The following example code shows how a D-Bus interface can be implemented
using an adaptor.
@@ -246,6 +211,9 @@
\page qdbusdeclaringslots.html
\title Declaring Slots in D-Bus Adaptors
+ \contentspage Using QtDBus Adaptors
+ \nextpage Declaring Signals in D-Bus Adaptors
+
Slots in D-Bus adaptors are declared just like normal, public slots, but their
parameters must follow certain rules (see \l{The QtDBus Type System} for more
information). Slots whose parameters do not follow those rules or that are not
@@ -374,6 +342,10 @@
\page qdbusdeclaringsignals.html
\title Declaring Signals in D-Bus Adaptors
+ \previouspage Declaring Slots in D-Bus Adaptors
+ \contentspage Using QtDBus Adaptors
+ \nextpage The QtDBus Type System
+
Any signal in a class derived from QDBusAbstractAdaptor will be automatically
relayed into D-Bus, provided that the signal's parameters conform to certain
rules (see \l{The QtDBus Type System} for more information). No special code
@@ -399,6 +371,10 @@
\page qdbustypesystem.html
\title The QtDBus Type System
+ \previouspage Declaring Signals in D-Bus Adaptors
+ \contentspage Using QtDBus Adaptors
+ \nextpage D-Bus Adaptor Example
+
D-Bus has an extensible type system based on a few primitives and
composition of the primitives in arrays and structures. QtDBus
implements the interface to that type system through the
diff --git a/doc/src/introtodbus.qdoc b/doc/src/frameworks-technologies/dbus-intro.qdoc
index bd1aefc..b1fcc44 100644
--- a/doc/src/introtodbus.qdoc
+++ b/doc/src/frameworks-technologies/dbus-intro.qdoc
@@ -42,10 +42,10 @@
/*!
\page intro-to-dbus.html
\title Introduction to D-Bus
+ \brief An introduction to Inter-Process Communication and Remote Procedure Calling with D-Bus.
\keyword QtDBus
- \ingroup architecture
- \brief An introduction to Inter-Process Communication and Remote Procedure Calling with D-Bus.
+ \ingroup frameworks-technologies
\section1 Introduction
diff --git a/doc/src/frameworks-technologies/desktop-integration.qdoc b/doc/src/frameworks-technologies/desktop-integration.qdoc
new file mode 100644
index 0000000..73a810f
--- /dev/null
+++ b/doc/src/frameworks-technologies/desktop-integration.qdoc
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \group desktop
+ \title Desktop Integration Classes
+*/
+
+/*!
+ \page desktop-integration.html
+ \title Desktop Integration
+ \brief Integrating with the user's desktop environment.
+
+ \ingroup best-practices
+
+ Qt applications behave well in the user's desktop environment, but certain
+ integrations require additional, and sometimes platform specific, techniques.
+
+ \tableofcontents
+
+ \section1 Useful Classes
+
+ Various classes in Qt are designed to help developers integrate applications into
+ users' desktop environments. These classes enable developers to take advantage
+ of native services while still using a cross-platform API.
+
+ \annotatedlist desktop
+
+ \section1 Setting the Application Icon
+
+ In order to change the icon of the executable application file
+ itself, as it is presented on the desktop (i.e., prior to
+ application execution), it is necessary to employ another,
+ platform-dependent technique.
+
+ \tableofcontents {1 Setting the Application Icon}
+
+ \section1 Opening External Resources
+
+ Although Qt provides facilities to handle and display resources, such as
+ \l{QImageIOHandler}{common image formats} and \l{QTextDocument}{HTML},
+ it is sometimes necessary to open files and external resources using external
+ applications.
+
+ QDesktopServices provides an interface to services offered by the user's desktop
+ environment. In particular, the \l{QDesktopServices::}{openUrl()} function is
+ used to open resources using the appropriate application, which may have been
+ specifically configured by the user.
+
+ \section1 System Tray Icons
+
+ Many modern desktop environments feature docks or panels with \e{system trays}
+ in which applications can install icons. Applications often use system tray icons
+ to display status information, either by updating the icon itself or by showing
+ information in "balloon messages". Additionally, many applications provide
+ pop-up menus that can be accessed via their system tray icons.
+
+ The QSystemTrayIcon class exposes all of the above features via an intuitive
+ Qt-style API that can be used on all desktop platforms.
+
+ \section1 Desktop Widgets
+
+ On systems where the user's desktop is displayed using more than one screen,
+ certain types of applications may need to obtain information about the
+ configuration of the user's workspace to ensure that new windows and dialogs
+ are opened in appropriate locations.
+
+ The QDesktopWidget class can be used to monitor the positions of widgets and
+ notify applications about changes to the way the desktop is split over the
+ available screens. This enables applications to implement policies for
+ positioning new windows so that, for example, they do not distract a user
+ who is working on a specific task.
+*/
diff --git a/doc/src/dnd.qdoc b/doc/src/frameworks-technologies/dnd.qdoc
index 661c621..5815a1d 100644
--- a/doc/src/dnd.qdoc
+++ b/doc/src/frameworks-technologies/dnd.qdoc
@@ -40,11 +40,19 @@
****************************************************************************/
/*!
+ \group draganddrop
+ \title Drag And Drop Classes
+
+ \brief Classes dealing with drag and drop and mime type encoding and decoding.
+*/
+
+/*!
\page dnd.html
\title Drag and Drop
- \ingroup architecture
\brief An overview of the drag and drop system provided by Qt.
+ \ingroup frameworks-technologies
+
Drag and drop provides a simple visual mechanism which users can use
to transfer information between and within applications. (In the
literature this is referred to as a "direct manipulation model".) Drag
@@ -60,6 +68,13 @@
\l{Using Drag and Drop with Item Views} and \l{The Graphics View
Framework} documents.
+ \section1 Drag and Drop Classes
+
+ These classes deal with drag and drop and the necessary mime type
+ encoding and decoding.
+
+ \annotatedlist draganddrop
+
\section1 Configuration
The QApplication object provides some properties that are related
@@ -432,115 +447,3 @@
request data in response to e.g. a QDragMoveEvent, an empty
QByteArray is returned.
*/
-
-/*!
- \page porting4-dnd.html
- \title Porting to Qt 4 - Drag and Drop
- \contentspage {Porting Guides}{Contents}
- \previouspage Porting to Qt 4 - Virtual Functions
- \nextpage Porting UI Files to Qt 4
- \ingroup porting
- \brief An overview of the porting process for applications that use drag and drop.
-
- Qt 4 introduces a new set of classes to handle drag and drop operations
- that aim to be easier to use than their counterparts in Qt 3. As a result,
- the way that drag and drop is performed is quite different to the way
- developers of Qt 3 applications have come to expect. In this guide, we
- show the differences between the old and new APIs and indicate where
- applications need to be changed when they are ported to Qt 4.
-
- \tableofcontents
-
- \section1 Dragging
-
- In Qt 3, drag operations are encapsulated by \c QDragObject (see Q3DragObject)
- and its subclasses. These objects are typically constructed on the heap in
- response to mouse click or mouse move events, and ownership of them is
- transferred to Qt so that they can be deleted when the corresponding drag and
- drop operations have been completed. The drag source has no control over how
- the drag and drop operation is performed once the object's
- \l{Q3DragObject::}{drag()} function is called, and it receives no information
- about how the operation ended.
-
- \snippet doc/src/snippets/code/doc_src_dnd.qdoc 0
-
- Similarly, in Qt 4, drag operations are also initiated when a QDrag object
- is constructed and its \l{QDrag::}{exec()} function is called. In contrast,
- these objects are typically constructed on the stack rather than the heap
- since each drag and drop operation is performed synchronously as far as the
- drag source is concerned. One key benefit of this is that the drag source
- can receive information about how the operation ended from the value returned
- by \l{QDrag::}{exec()}.
-
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 2
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 3
- \dots 8
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 4
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 5
-
- A key difference in the above code is the use of the QMimeData class to hold
- information about the data that is transferred. Qt 3 relies on subclasses
- of \c QDragObject to provide support for specific MIME types; in Qt 4, the
- use of QMimeData as a generic container for data makes the relationship
- between MIME type and data more tranparent. QMimeData is described in more
- detail later in this document.
-
- \section1 Dropping
-
- In both Qt 3 and Qt 4, it is possible to prepare a custom widget to accept
- dropped data by enabling the \l{QWidget::}{acceptDrops} property of a widget,
- usually in the widget's constructor. As a result, the widget will receive
- drag enter events that can be handled by its \l{QWidget::}{dragEnterEvent()}
- function.
- As in Qt 3, custom widgets in Qt 4 handle these events by determining
- whether the data supplied by the drag and drop operation can be dropped onto
- the widget. Since the classes used to encapsulate MIME data are different in
- Qt 3 and Qt 4, the exact implementations differ.
-
- In Qt 3, the drag enter event is handled by checking whether each of the
- standard \c QDragObject subclasses can decode the data supplied, and
- indicating success or failure of these checks via the event's
- \l{QDragEnterEvent::}{accept()} function, as shown in this simple example:
-
- \snippet doc/src/snippets/code/doc_src_dnd.qdoc 1
-
- In Qt 4, you can examine the MIME type describing the data to determine
- whether the widget should accept the event or, for common data types, you
- can use convenience functions:
-
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 0
-
- The widget has some control over the type of drag and drop operation to be
- performed. In the above code, the action proposed by the drag source is
- accepted, but
- \l{Drag and Drop#Overriding Proposed Actions}{this can be overridden} if
- required.
-
- In both Qt 3 and Qt 4, it is necessary to accept a given drag event in order
- to receive the corresponding drop event. A custom widget in Qt 3 that can
- accept dropped data in the form of text or images might provide an
- implementation of \l{QWidget::}{dropEvent()} that looks like the following:
-
- \snippet doc/src/snippets/code/doc_src_dnd.qdoc 2
-
- In Qt 4, the event is handled in a similar way:
-
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 1
-
- It is also possible to extract data stored for a particular MIME type if it
- was specified by the drag source.
-
- \section1 MIME Types and Data
-
- In Qt 3, data to be transferred in drag and drop operations is encapsulated
- in instances of \c QDragObject and its subclasses, representing specific
- data formats related to common MIME type and subtypes.
-
- In Qt 4, only the QMimeData class is used to represent data, providing a
- container for data stored in multiple formats, each associated with
- a relevant MIME type. Since arbitrary MIME types can be specified, there is
- no need for an extensive class hierarchy to represent different kinds of
- information. Additionally, QMimeData it provides some convenience functions
- to allow the most common data formats to be stored and retrieved with less
- effort than for arbitrary MIME types.
-*/
diff --git a/doc/src/eventsandfilters.qdoc b/doc/src/frameworks-technologies/eventsandfilters.qdoc
index a67e523..0430bcd 100644
--- a/doc/src/eventsandfilters.qdoc
+++ b/doc/src/frameworks-technologies/eventsandfilters.qdoc
@@ -40,11 +40,25 @@
****************************************************************************/
/*!
+ \group events
+ \title Event Classes
+ \ingroup groups
+
+ \brief Classes used to create and handle events.
+
+ These classes are used to create and handle events.
+
+ For more information see the \link object.html Object model\endlink
+ and \link signalsandslots.html Signals and Slots\endlink.
+*/
+
+/*!
\page eventsandfilters.html
\title Events and Event Filters
- \ingroup architecture
\brief A guide to event handling in Qt.
+ \ingroup frameworks-technologies
+
In Qt, events are objects, derived from the abstract QEvent class,
that represent things that have happened either within an application
or as a result of outside activity that the application needs to know
diff --git a/doc/src/gestures.qdoc b/doc/src/frameworks-technologies/gestures.qdoc
index 49a9ae3..49a9ae3 100644
--- a/doc/src/gestures.qdoc
+++ b/doc/src/frameworks-technologies/gestures.qdoc
diff --git a/doc/src/graphicsview.qdoc b/doc/src/frameworks-technologies/graphicsview.qdoc
index b1c6b6c..8d7ea2c 100644
--- a/doc/src/graphicsview.qdoc
+++ b/doc/src/frameworks-technologies/graphicsview.qdoc
@@ -40,13 +40,18 @@
****************************************************************************/
/*!
+ \group graphicsview-api
+ \title Graphics View Classes
+*/
+
+/*!
\page graphicsview.html
\title The Graphics View Framework
- \ingroup architecture
- \ingroup multimedia
\brief An overview of the Graphics View framework for interactive 2D
graphics.
+ \ingroup frameworks-technologies
+
\keyword Graphics View
\keyword GraphicsView
\keyword Graphics
@@ -193,6 +198,12 @@
\img graphicsview-items.png
+ \section1 Classes in the Graphics View Framework
+
+ These classes provide a framework for creating interactive applications.
+
+ \annotatedlist graphicsview-api
+
\section1 The Graphics View Coordinate System
Graphics View is based on the Cartesian coordinate system; items'
diff --git a/doc/src/implicit-sharing.qdoc b/doc/src/frameworks-technologies/implicit-sharing.qdoc
index cc0b28b..4eb9443 100644
--- a/doc/src/implicit-sharing.qdoc
+++ b/doc/src/frameworks-technologies/implicit-sharing.qdoc
@@ -45,10 +45,14 @@
/*!
\group shared
\title Implicitly Shared Classes
- \ingroup architecture
- \ingroup groups
+*/
+
+/*!
+ \page implicit-sharing.html
+ \title Implicit Sharing
+ \ingroup frameworks-technologies
- \brief Classes that use reference counting for fast copying.
+ \brief Reference counting for fast copying.
\keyword implicit data sharing
\keyword implicit sharing
@@ -98,7 +102,8 @@
Implicit sharing takes place behind the scenes; the programmer
does not need to worry about it. Even in multithreaded
applications, implicit sharing takes place, as explained in
- \l{Threads and Implicit Sharing}.
+ \l{Thread-Support in Qt Modules#Threads and Implicitly Shared Classes}
+ {Threads and Implicitly Shared Classes}.
When implementing your own implicitly shared classes, use the
QSharedData and QSharedDataPointer classes.
@@ -141,4 +146,7 @@
\warning Do not copy an implicitly shared container (QMap,
QVector, etc.) while you are iterating over it using an non-const
\l{STL-style iterator}.
+
+ \keyword implicitly shared classes
+ \annotatedlist shared
*/
diff --git a/doc/src/ipc.qdoc b/doc/src/frameworks-technologies/ipc.qdoc
index 9ca8a0d..f253643 100644
--- a/doc/src/ipc.qdoc
+++ b/doc/src/frameworks-technologies/ipc.qdoc
@@ -40,25 +40,15 @@
****************************************************************************/
/*!
- \group ipc
+ \page ipc.html
\title Inter-Process Communication in Qt
- \ingroup groups
- \ingroup architecture
\brief Inter-Process communication in Qt applications.
+ \ingroup frameworks-technologies
+
Qt provides several ways to implement Inter-Process Communication
(IPC) in Qt applications.
- \section1 D-Bus
-
- The \l{QtDBus} module is a Unix-only library
- you can use to implement IPC using the D-Bus protocol. It extends
- Qt's \l{signalsandslots.html} {Signals and Slots} mechanism to the
- IPC level, allowing a signal emitted by one process to be
- connected to a slot in another process. This \l {Introduction to
- D-Bus} page has detailed information on how to use the \l{QtDBus}
- module.
-
\section1 TCP/IP
The cross-platform \l{QtNetwork} module provides classes that make
@@ -77,6 +67,16 @@
access to resources shared by the system, as well as to communicate
between processes.
+ \section1 D-Bus
+
+ The \l{QtDBus} module is a Unix-only library
+ you can use to implement IPC using the D-Bus protocol. It extends
+ Qt's \l{signalsandslots.html} {Signals and Slots} mechanism to the
+ IPC level, allowing a signal emitted by one process to be
+ connected to a slot in another process. This \l {Introduction to
+ D-Bus} page has detailed information on how to use the \l{QtDBus}
+ module.
+
\section1 Qt COmmunications Protocol (QCOP)
The QCopChannel class implements a protocol for transferring messages
@@ -86,6 +86,4 @@
IPC level, allowing a signal emitted by one process to be
connected to a slot in another process, but unlike QtDBus, QCOP
does not depend on a third party library.
-
*/
-
diff --git a/doc/src/model-view-programming.qdoc b/doc/src/frameworks-technologies/model-view-programming.qdoc
index 13f5e5a..b38edd8 100644
--- a/doc/src/model-view-programming.qdoc
+++ b/doc/src/frameworks-technologies/model-view-programming.qdoc
@@ -40,15 +40,21 @@
****************************************************************************/
/*!
+ \group model-view
+ \title Model/View Classes
+*/
+
+/*!
\page model-view-programming.html
\nextpage An Introduction to Model/View Programming
\startpage index.html Qt Reference Documentation
\title Model/View Programming
- \ingroup architecture
\brief A guide to the extensible model/view architecture used by Qt's
item view classes.
+ \ingroup frameworks-technologies
+
\list
\o \l{An Introduction to Model/View Programming}
\tableofcontents{1 An Introduction to Model/View Programming}
@@ -74,7 +80,14 @@
\tableofcontents{1 Model Subclassing Reference}
\endlist
- See also the list of \l{Model/View Classes}.
+ \keyword Model/View Classes
+ \section1 All Model/View Classes
+
+ These classes use the model/view design pattern in which the
+ underlying data (in the model) is kept separate from the way the data
+ is presented and manipulated by the user (in the view).
+
+ \annotatedlist model-view
\section1 Related Examples
diff --git a/doc/src/phonon.qdoc b/doc/src/frameworks-technologies/phonon.qdoc
index 610ad30..48c09b8 100644
--- a/doc/src/phonon.qdoc
+++ b/doc/src/frameworks-technologies/phonon.qdoc
@@ -42,7 +42,7 @@
/*!
\page phonon-overview.html
\title Phonon Overview
- \ingroup multimedia
+ \ingroup frameworks-technologies
\tableofcontents
@@ -556,88 +556,3 @@
output as a single audio stream.
*/
-/*!
- \namespace Phonon
- \brief The Phonon namespace contains classes and functions for multimedia applications.
- \since 4.4
-
- This namespace contains classes to access multimedia functions for
- audio and video playback. Those classes are not dependent on any specific
- framework, but rather use exchangeable backends to do the work.
-
- See the \l{Phonon Module} page for general information about the
- framework and the \l{Phonon Overview} for an introductory tour of its
- features.
-*/
-
-/*!
- \page phonon-module.html
- \module Phonon
- \title Phonon Module
- \contentspage Qt's Modules
- \previouspage QtXmlPatterns
- \nextpage Qt3Support
- \ingroup modules
-
- \brief The Phonon module contains namespaces and classes for multimedia functionality.
-
- \generatelist{classesbymodule Phonon}
-
- Phonon is a cross-platform multimedia framework that enables the use of
- audio and video content in Qt applications. The \l{Phonon Overview}
- document provides an introduction to the architecture and features included
- in Phonon. The \l{Phonon} namespace contains a list of all classes, functions
- and namespaces provided by the module.
-
- Applications that use Phonon's classes need to
- be configured to be built against the Phonon module.
- The following declaration in a \c qmake project file ensures that
- an application is compiled and linked appropriately:
-
- \snippet doc/src/snippets/code/doc_src_phonon.qdoc 1
-
- The Phonon module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- \section1 Qt Backends
-
- Qt Backends are currently developed for Phonon version 4.1. The Phonon
- project has moved on and introduced new features that the Qt Backends do not
- implement. We have chosen not to document the part of Phonon that we do not
- support. Any class or function not appearing in our documentation can be
- considered unsupported.
-
- \section1 License Information
-
- Qt Commercial Edition licensees that wish to distribute applications that
- use the Phonon module need to be aware of their obligations under the
- GNU Lesser General Public License (LGPL).
-
- Developers using the Open Source Edition can choose to redistribute
- the module under the appropriate version of the GNU LGPL; version 2.1
- for applications and libraries licensed under the GNU GPL version 2,
- or version 3 for applications and libraries licensed under the GNU
- GPL version 2.
-
- \legalese
- This file is part of the KDE project
-
- Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org> \BR
- Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- Contact: Nokia Corporation (qt-info@nokia.com)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License version 2 as published by the Free Software Foundation.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
- \endlegalese
-*/
diff --git a/doc/src/plugins-howto.qdoc b/doc/src/frameworks-technologies/plugins-howto.qdoc
index 2a099bc..4d6896c 100644
--- a/doc/src/plugins-howto.qdoc
+++ b/doc/src/frameworks-technologies/plugins-howto.qdoc
@@ -40,10 +40,27 @@
****************************************************************************/
/*!
+ \group plugins
+ \title Plugin Classes
+ \ingroup groups
+
+ \brief Plugin related classes.
+
+ These classes deal with shared libraries, (e.g. .so and DLL files),
+ and with Qt plugins.
+
+ See the \link plugins-howto.html plugins documentation\endlink.
+
+ See also the \l{ActiveQt framework} for Windows.
+*/
+
+/*!
\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 howto
+ \brief A guide to creating plugins to extend Qt applications and
+ functionality provided by Qt.
+
+ \ingroup frameworks-technologies
\keyword QT_DEBUG_PLUGINS
\keyword QT_NO_PLUGIN_CHECK
@@ -99,27 +116,6 @@
\row \o QTextCodecPlugin \o \c codecs \o Case Sensitive
\endtable
- But where is the \c{plugins} directory? When the application
- is run, Qt will first treat the application's executable directory
- as the \c{pluginsbase}. For example if the application is in
- \c{C:\Program Files\MyApp} and has a style plugin, Qt will look in
- \c{C:\Program Files\MyApp\styles}. (See
- QCoreApplication::applicationDirPath() for how to find out where
- the application's executable is.) Qt will also look in the
- directory specified by
- QLibraryInfo::location(QLibraryInfo::PluginsPath), which typically
- is located in \c QTDIR/plugins (where \c QTDIR is the directory
- where Qt is installed). If you want Qt to look in additional
- places you can add as many paths as you need with calls to
- QCoreApplication::addLibraryPath(). And if you want to set your
- own path or paths you can use QCoreApplication::setLibraryPaths().
- You can also use a \c qt.conf file to override the hard-coded
- paths that are compiled into the Qt library. For more information,
- see the \l {Using qt.conf} documentation. Yet another possibility
- is to set the \c QT_PLUGIN_PATH environment variable before running
- the application. If set, Qt will look for plugins in the
- paths (separated by the system path separator) specified in the variable.
-
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
@@ -150,39 +146,6 @@
virtual functions that must be reimplemented for each type of
plugin.
- 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.
-
- The default 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.
-
- The normal way to include a plugin with an application is either
- to \l{Static Plugins}{compile it in with the application} or to
- compile it into a dynamic library and use it like any other
- library.
-
- 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} documentation.
-
The \l{Style Plugin Example} shows how to implement a plugin
that extends the QStylePlugin base class.
@@ -236,110 +199,49 @@
that extends Qt applications. Please note that a QCoreApplication
must have been initialized before plugins can be loaded.
- \section1 Loading and Verifying Plugins Dynamically
-
- When loading plugins, the Qt library does some sanity checking to
- determine whether or not the plugin can be loaded and used. This
- provides the ability to have multiple versions and configurations of
- the Qt library installed side by side.
-
- \list
- \o Plugins linked with a Qt library that has a higher version number
- will not be loaded by a library with a lower version number.
-
- \br
- \bold{Example:} Qt 4.3.0 will \e{not} load a plugin built with Qt 4.3.1.
-
- \o Plugins linked with a Qt library that has a lower major version
- number will not be loaded by a library with a higher major version
- number.
-
- \br
- \bold{Example:} Qt 4.3.1 will \e{not} load a plugin built with Qt 3.3.1.
- \br
- \bold{Example:} Qt 4.3.1 will load plugins built with Qt 4.3.0 and Qt 4.2.3.
-
- \o The Qt library and all plugins are built using a \e {build
- key}. The build key in the Qt library is examined against the build
- key in the plugin, and if they match, the plugin is loaded. If the
- build keys do not match, then the Qt library refuses to load the
- plugin.
-
- \br \bold{Rationale:} See the \l{#The Build Key}{The Build Key} section below.
- \endlist
-
- When building plugins to extend an application, it is important to ensure
- that the plugin is configured in the same way as the application. This means
- that if the application was built in release mode, plugins should be built
- in release mode, too.
-
- If you configure Qt to be built in both debug and release modes,
- but only build applications in release mode, you need to ensure that your
- plugins are also built in release mode. By default, if a debug build of Qt is
- available, plugins will \e only be built in debug mode. To force the
- plugins to be built in release mode, add the following line to the plugin's
- project file:
+ \section1 Locating Plugins
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 3
-
- This will ensure that the plugin is compatible with the version of the library
- used in the application.
-
- \section2 The Build Key
+ 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.
- When loading plugins, Qt checks the build key of each plugin against its
- own configuration to ensure that only compatible plugins are loaded; any
- plugins that are configured differently are not loaded.
+ 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.
- The build key contains the following information:
- \list
- \o Architecture, operating system and compiler.
-
- \e {Rationale:}
- In cases where different versions of the same compiler do not
- produce binary compatible code, the version of the compiler is
- also present in the build key.
-
- \o Configuration of the Qt library. The configuration is a list
- of the missing features that affect the available API in the
- library.
-
- \e {Rationale:}
- Two different configurations of the same version of
- the Qt library are not binary compatible. The Qt library that
- loads the plugin uses the list of (missing) features to
- determine if the plugin is binary compatible.
-
- \e {Note:} There are cases where a plugin can use features that are
- available in two different configurations. However, the
- developer writing plugins would need to know which features are
- in use, both in their plugin and internally by the utility
- classes in Qt. The Qt library would require complex feature
- and dependency queries and verification when loading plugins.
- Requiring this would place an unnecessary burden on the developer, and
- increase the overhead of loading a plugin. To reduce both
- development time and application runtime costs, a simple string
- comparision of the build keys is used.
-
- \o Optionally, an extra string may be specified on the configure
- script command line.
-
- \e {Rationale:}
- When distributing binaries of the Qt library with an
- application, this provides a way for developers to write
- plugins that can only be loaded by the library with which the
- plugins were linked.
- \endlist
+ 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 debugging purposes, it is possible to override the run-time build key
- checks by configuring Qt with the \c QT_NO_PLUGIN_CHECK preprocessor macro
- defined.
+ 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 against your application. If you
build the static version of Qt, this is the only option for
- including Qt's predefined plugins.
+ 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:
@@ -406,65 +308,4 @@
defined.
\sa QPluginLoader, QLibrary, {Plug & Paint Example}
-
- \section1 The Plugin Cache
-
- In order to speed up loading and validation of plugins, some of
- the information that is collected when plugins are loaded is cached
- through QSettings. This includes information about whether or not
- a plugin was successfully loaded, so that subsequent load operations
- don't try to load an invalid plugin. However, if the "last modified"
- timestamp of a plugin has changed, the plugin's cache entry is
- invalidated and the plugin is reloaded regardless of the values in
- the cache entry, and the cache entry itself is updated with the new
- result.
-
- This also means that the timestamp must be updated each time the
- plugin or any dependent resources (such as a shared library) is
- updated, since the dependent resources might influence the result
- of loading a plugin.
-
- Sometimes, when developing plugins, it is necessary to remove entries
- from the plugin cache. Since Qt uses QSettings to manage the plugin
- cache, the locations of plugins are platform-dependent; see
- \l{QSettings#Platform-Specific Notes}{the QSettings documentation}
- for more information about each platform.
-
- For example, on Windows the entries are stored in the registry, and the
- paths for each plugin will typically begin with either of these two strings:
-
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 6
-
- \section1 Debugging Plugins
-
- There are a number of issues that may prevent correctly-written plugins from
- working with the applications that are designed to use them. Many of these
- are related to differences in the way that plugins and applications have been
- built, often arising from separate build systems and processes.
-
- The following table contains descriptions of the common causes of problems
- developers experience when creating plugins:
-
- \table
- \header \o Problem \o Cause \o Solution
- \row \o Plugins sliently fail to load even when opened directly by the
- application. \QD shows the plugin libraries in its
- \gui{Help|About Plugins} dialog, but no plugins are listed under each
- of them.
- \o The application and its plugins are built in different modes.
- \o Either share the same build information or build the plugins in both
- debug and release modes by appending the \c debug_and_release to
- the \l{qmake Variable Reference#CONFIG}{CONFIG} variable in each of
- their project files.
- \row \o A valid plugin that replaces an invalid (or broken) plugin fails to load.
- \o The entry for the plugin in the plugin cache indicates that the original
- plugin could not be loaded, causing Qt to ignore the replacement.
- \o Either ensure that the plugin's timestamp is updated, or delete the
- entry in the \l{#The Plugin Cache}{plugin cache}.
- \endtable
-
- You can also use the \c QT_DEBUG_PLUGINS environment variable to obtain
- diagnostic information from Qt about each plugin it tries to load. Set this
- variable to a non-zero value in the environment from which your application is
- launched.
*/
diff --git a/doc/src/qthelp.qdoc b/doc/src/frameworks-technologies/qthelp.qdoc
index 3cffa39..2529631 100644
--- a/doc/src/qthelp.qdoc
+++ b/doc/src/frameworks-technologies/qthelp.qdoc
@@ -40,29 +40,36 @@
****************************************************************************/
/*!
- \module QtHelp
- \title QtHelp Module
- \contentspage Qt's Modules
- \previouspage QtUiTools
- \nextpage QtAssistant
- \ingroup modules
+ \group helpsystem
+ \title Help System
+ \ingroup groups
- \brief The QtHelp module provides classes for integrating
- online documentation in applications.
+ \brief Classes used to provide online-help for applications.
- To include the definitions of the module's classes, use the
- following directive:
+ \keyword help system
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 0
+ These classes provide for all forms of online-help in your application,
+ with three levels of detail:
- To link against the module, add this line to your \l qmake \c
- .pro file:
+ \list 1
+ \o Tool Tips and Status Bar message - flyweight help, extremely brief,
+ entirely integrated in the user interface, requiring little
+ or no user interaction to invoke.
+ \o What's This? - lightweight, but can be
+ a three-paragraph explanation.
+ \o Online Help - can encompass any amount of information,
+ but is typically slower to call up, somewhat separated
+ from the user's work, and often users feel that using online
+ help is a digression from their real task.
+ \endlist
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 1
+*/
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
- users.
+/*!
+ \page qthelp-framework.html
+ \title The Qt Help Framework
+ \brief Integrating Documentation in Applications
+ \ingroup frameworks-technologies
\section1 Topics
@@ -229,41 +236,6 @@
For further information on how to use the API, have a look at
the QHelpEngine class reference.
-
- \section1 License Information
-
- The QtHelp module uses the CLucene indexing library to provide full-text
- searching capabilities for Qt Assistant and applications that use the
- features of QtHelp.
-
- Qt Commercial Edition licensees that wish to distribute applications that
- use these features of the QtHelp module need to be aware of their
- obligations under the GNU Lesser General Public License (LGPL).
-
- Developers using the Open Source Edition can choose to redistribute
- the module under the appropriate version of the GNU LGPL; version 2.1
- for applications and libraries licensed under the GNU GPL version 2,
- or version 3 for applications and libraries licensed under the GNU
- GPL version 3.
-
- \legalese
- Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team \BR
- Changes are Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- \endlegalese
*/
/*!
diff --git a/doc/src/frameworks-technologies/qundo.qdoc b/doc/src/frameworks-technologies/qundo.qdoc
new file mode 100644
index 0000000..7b6cae7
--- /dev/null
+++ b/doc/src/frameworks-technologies/qundo.qdoc
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page qundo.html
+ \title Overview of Qt's Undo Framework
+ \keyword Undo framework
+ \ingroup frameworks-technologies
+
+ \section1 Introduction
+
+ Qt's Undo Framework is an implementation of the Command pattern, for
+ implementing undo/redo functionality in applications.
+
+ The Command pattern is based on the idea that all editing in
+ an application is done by creating instances of command objects.
+ Command objects apply changes to the document and are stored
+ on a command stack. Furthermore, each command knows how to undo its
+ changes to bring the document back to its previous state. As long
+ as the application only uses command objects to change the state of
+ the document, it is possible to undo a sequence of commands by
+ traversing the stack downwards and calling undo
+ on each command in turn. It is also possible to redo a sequence of
+ commands by traversing the stack upwards and calling
+ redo on each command.
+
+ \section1 Classes
+
+ The framework consists of four classes:
+
+ \list
+ \i \l QUndoCommand is the base class of all commands stored on an
+ undo stack. It can apply (redo) or undo a single change in the document.
+ \i \l QUndoStack is a list of QUndoCommand objects. It contains all the
+ commands executed on the document and can roll the document's state
+ backwards or forwards by undoing or redoing them.
+ \i \l QUndoGroup is a group of undo stacks. It is useful when an application
+ contains more than one undo stack, typically one for each opened
+ document. QUndoGroup provides a single pair of undo/redo slots for all
+ the stacks in the group. It forwards undo and redo requests to
+ the active stack, which is the stack associated with the document that
+ is currently being edited by the user.
+ \i \l QUndoView is a widget which shows the contents of an undo stack. Clicking
+ on a command in the view rolls the document's state backwards or
+ forwards to that command.
+ \endlist
+
+ \section1 Concepts
+
+ The following concepts are supported by the framework:
+
+ \list
+ \i \bold{Clean state:} Used to signal when the document enters and leaves a
+ state that has been saved to disk. This is typically used to disable or
+ enable the save actions, and to update the document's title bar.
+ \i \bold{Command compression:} Used to compress sequences of commands into a
+ single command.
+ For example: In a text editor, the commands that insert individual
+ characters into the document can be compressed into a single command that
+ inserts whole sections of text. These bigger changes are more convenient
+ for the user to undo and redo.
+ \i \bold{Command macros:} A sequence of commands, all of which are undone or
+ redone in one step.
+ These simplify the task of writing an application, since a set of simpler
+ commands can be composed into more complex commands. For example, a command
+ that moves a set of selected objects in a document can be created by
+ combining a set of commands, each of which moves a single object.
+ \endlist
+
+ QUndoStack provides convenient undo and redo QAction objects that
+ can be inserted into a menu or a toolbar. The text properties of these
+ actions always reflect what command will be undone or redone when
+ they are triggered. Similarly, QUndoGroup provides undo and redo actions
+ that always behave like the undo and redo actions of the active stack.
+*/
diff --git a/doc/src/frameworks-technologies/richtext.qdoc b/doc/src/frameworks-technologies/richtext.qdoc
new file mode 100644
index 0000000..7125b81
--- /dev/null
+++ b/doc/src/frameworks-technologies/richtext.qdoc
@@ -0,0 +1,1226 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \group richtext-processing
+ \title Rich Text Processing APIs
+*/
+
+/*!
+ \page richtext.html
+ \title Rich Text Processing
+ \brief An overview of Qt's rich text processing, editing and display features.
+
+ \ingroup frameworks-technologies
+
+ \nextpage Rich Text Document Structure
+
+ The Scribe framework provides a set of classes for reading and manipulating
+ structured rich text documents. Unlike previous rich text support in Qt, the
+ new classes are centered around the QTextDocument class rather than raw
+ textual information. This enables the developer to create and modify
+ structured rich text documents without having to prepare content in an
+ intermediate markup format.
+
+ The information within a document can be accessed via two complementary
+ interfaces: A cursor-based interface is used for editing, and a read-only
+ hierarchical interface provides a high level overview of the document
+ structure. The main advantage of the cursor-based interface is that the
+ text can be edited using operations that mimic a user's interaction with
+ an editor, without losing the underlying structure of the document. The
+ read-only hierarchical interface is most useful when performing operations
+ such as searching and document export.
+
+ This document is divided up into chapters for convenient reference:
+
+ \list
+ \i \l{Rich Text Document Structure} outlines
+ the different kinds of elements in a QTextDocument, and describes how
+ they are arranged in a document structure.
+ \i \l{The QTextCursor Interface} explains how rich
+ text documents can be edited using the cursor-based interface.
+ \i \l{Document Layouts} briefly explains the role of document layouts.
+ \i \l{Common Rich Text Editing Tasks} examines some
+ common tasks that involve reading or manipulating rich text documents.
+ \i \l{Advanced Rich Text Processing} examines advanced rich text editing tasks.
+ \i \l{Supported HTML Subset} lists the HTML tags supported by QTextDocument.
+ \endlist
+
+ \section1 Rich Text Processing APIs
+
+ Qt provides an extensive collection of classes for parsing, rendering
+ manipulating and editing rich text.
+
+ \annotatedlist richtext-processing
+*/
+
+/*!
+ \page richtext-structure.html
+ \contentspage richtext.html Contents
+ \previouspage Rich Text Processing
+ \nextpage The QTextCursor Interface
+
+ \title Rich Text Document Structure
+
+ \tableofcontents
+
+ Text documents are represented by the QTextDocument class, which
+ contains information about the document's internal representation, its
+ structure, and keeps track of modifications to provide undo/redo
+ facilities.
+
+ The structured representation of a text document presents its contents as
+ a hierarchy of text blocks, frames, tables, and other objects. These provide
+ a logical structure to the document and describe how their contents will be
+ displayed. Generally, frames and tables are used to group other
+ structures while text blocks contain the actual textual information.
+
+ New elements are created and inserted into the document programmatically
+ \l{richtext-cursor.html}{with a QTextCursor} or by using an editor
+ widget, such as QTextEdit. Elements can be given a particular format when
+ they are created; otherwise they take the cursor's current format for the
+ element.
+
+ \table
+ \row
+ \i \inlineimage richtext-document.png
+ \i \bold{Basic structure}
+
+ The "top level" of a document might be populated in the way shown.
+ Each document always contains a root frame, and this always contains
+ at least one text block.
+
+ For documents with some textual content, the root
+ frame usually contains a sequence of blocks and other elements.
+
+ Sequences of frames and tables are always separated by text blocks in a
+ document, even if the text blocks contain no information. This ensures that
+ new elements can always be inserted between existing structures.
+ \endtable
+
+ In this chapter, we look at each of the structural elements
+ used in a rich text document, outline their features and uses, and show
+ how to examine their contents. Document editing is described in
+ \l{richtext-cursor.html}{The QTextCursor Interface}.
+
+ \section1 Rich Text Documents
+
+ QTextDocument objects contain all the information required to construct
+ rich text documents.
+ Text documents can be accessed in two complementary ways: as a linear
+ buffer for editors to use, and as an object hierarchy that is useful to
+ layout engines.
+ In the hierarchical document model, objects generally correspond to
+ visual elements such as frames, tables, and lists. At a lower level,
+ these elements describe properties such as the text style and alignment.
+ The linear representation of the document is used for editing and
+ manipulation of the document's contents.
+
+ Although QTextEdit makes it easy to display and edit rich text, documents
+ can also be used independently of any editor widget, for example:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 0
+
+ Alternatively, they can be extracted from an existing editor:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 1
+
+ This flexibility enables applications to handle multiple rich text
+ documents without the overhead of multiple editor widgets, or requiring
+ documents to be stored in some intermediate format.
+
+ An empty document contains a root frame which itself contains a single
+ empty text block. Frames provide logical separation between parts of the document, but
+ also have properties that determine how they will appear when rendered.
+ A table is a specialized type of frame that consists of a number of
+ cells, arranged into rows and columns, each of which can contain
+ further structure and text. Tables provide management and layout
+ features that allow flexible configurations of cells to be created.
+
+ Text blocks contain text fragments, each of which specifies text and
+ character format information. Textual properties are defined both at
+ the character level and at the block level. At the character level,
+ properties such as font family, text color, and font weight can be
+ specified. The block level properties control the higher level
+ appearance and behavior of the text, such as the direction of text
+ flow, alignment, and background color.
+
+ The document structure is not manipulated directly. Editing is
+ performed through a cursor-based interface.
+ The \l{richtext-cursor.html}{text cursor interface}
+ automatically inserts new document elements into the root frame, and
+ ensures that it is padded with empty blocks where necessary.
+
+ We obtain the root frame in the following manner:
+
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.h 0
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 0
+
+ When navigating the document structure, it is useful to begin at the
+ root frame because it provides access to the entire document structure.
+
+
+ \section1 Document Elements
+
+ Rich text documents usually consist of common elements such as paragraphs,
+ frames, tables, and lists. These are represented in a QTextDocument
+ by the QTextBlock, QTextFrame, QTextTable, and QTextList classes.
+ Unlike the other elements in a document, images are represented by
+ specially formatted text fragments. This enables them to be placed
+ formatted inline with the surrounding text.
+
+ The basic structural building blocks in documents are QTextBlock and
+ QTextFrame. Blocks themselves contain fragments of rich text
+ (QTextFragment), but these do not directly influence the high level
+ structure of a document.
+
+ Elements which can group together other document elements are typically
+ subclasses of QTextObject, and fall into two categories: Elements that
+ group together text blocks are subclasses of QTextBlockGroup, and those
+ that group together frames and other elements are subclasses of QTextFrame.
+
+ \section2 Text Blocks
+
+ Text blocks are provided by the QTextBlock class.
+
+ Text blocks group together fragments of text with different character formats,
+ and are used to represent paragraphs in the document. Each block
+ typically contains a number of text fragments with different styles.
+ Fragments are created when text is inserted into the document, and more
+ of them are added when the document is edited. The document splits, merges,
+ and removes fragments to efficiently represent the different styles
+ of text in the block.
+
+ The fragments within a given block can be examined by using a
+ QTextBlock::iterator to traverse the block's internal structure:
+
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 3
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 5
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 6
+
+ Blocks are also used to represent list items. As a result, blocks can
+ define their own character formats which contain information about
+ block-level decoration, such as the type of bullet points used for
+ list items. The formatting for the block itself is described by the
+ QTextBlockFormat class, and describes properties such as text alignment,
+ indentation, and background color.
+
+ Although a given document may contain complex structures, once we have a
+ reference to a valid block in the document, we can navigate between each
+ of the text blocks in the order in which they were written:
+
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 0
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 1
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 2
+
+ This method is useful for when you want to extract just the rich text from a
+ document because it ignores frames, tables, and other types of structure.
+
+ QTextBlock provides comparison operators that make it easier to manipulate
+ blocks: \l{QTextBlock::operator==()}{operator==()} and
+ \l{QTextBlock::operator!=()}{operator!=()} are used to test whether two
+ blocks are the same, and \l{QTextBlock::operator<()}{operator<()} is used
+ to determine which one occurs first in a document.
+
+ \section2 Frames
+
+ Frames are provided by the QTextFrame class.
+
+ Text frames group together blocks of text and child frames, creating
+ document structures that are larger than paragraphs. The format of a frame
+ specifies how it is rendered and positioned on the page. Frames are
+ either inserted into the text flow, or they float on the left or right
+ hand side of the page.
+ Each document contains a root frame that contains all the other document
+ elements. As a result, all frames except the root frame have a parent
+ frame.
+
+ Since text blocks are used to separate other document elements, each
+ frame will always contain at least one text block, and zero or more
+ child frames. We can inspect the contents of a frame by using a
+ QTextFrame::iterator to traverse the frame's child elements:
+
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 1
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 2
+
+ Note that the iterator selects both frames and blocks, so it is necessary
+ to check which it is referring to. This allows us to navigate the document
+ structure on a frame-by-frame basis yet still access text blocks if
+ required. Both the QTextBlock::iterator and QTextFrame::iterator classes
+ can be used in complementary ways to extract the required structure from
+ a document.
+
+ \section2 Tables
+
+ Tables are provided by the QTextTable class.
+
+ Tables are collections of cells that are arranged in rows and columns.
+ Each table cell is a document element with its own character format, but it
+ can also contain other elements, such as frames and text blocks. Table cells
+ are automatically created when the table is constructed, or when extra rows
+ or columns are added. They can also be moved between tables.
+
+ QTextTable is a subclass of QTextFrame, so tables are treated like frames
+ in the document structure. For each frame that we encounter in the
+ document, we can test whether it represents a table, and deal with it in a
+ different way:
+
+ \snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 0
+ \snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 1
+
+ The cells within an existing table can be examined by iterating through
+ the rows and columns.
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 9
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 10
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 11
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 12
+
+
+ \section2 Lists
+
+ Lists are provided by the QTextList class.
+
+ Lists are sequences of text blocks that are formatted in the usual way, but
+ which also provide the standard list decorations such as bullet points and
+ enumerated items. Lists can be nested, and will be indented if the list's
+ format specifies a non-zero indentation.
+
+ We can refer to each list item by its index in the list:
+
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 0
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 1
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 2
+
+ Since QTextList is a subclass of QTextBlockGroup, it does not group the
+ list items as child elements, but instead provides various functions for
+ managing them. This means that any text block we find when traversing a
+ document may actually be a list item. We can ensure that list items are
+ correctly identified by using the following code:
+
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 3
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 4
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 5
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 6
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 7
+
+
+ \section2 Images
+
+ Images in QTextDocument are represented by text fragments that reference
+ external images via the resource mechanism. Images are created using the
+ cursor interface, and can be modified later by changing the character
+ format of the image's text fragment:
+
+ \snippet doc/src/snippets/textdocument-imageformat/main.cpp 0
+ \snippet doc/src/snippets/textdocument-imageformat/main.cpp 1
+ \snippet doc/src/snippets/textdocument-imageformat/main.cpp 2
+
+ The fragment that represents the image can be found by iterating over
+ the fragments in the text block that contains the image.
+*/
+
+/*!
+ \page richtext-cursor.html
+ \contentspage richtext.html Contents
+ \previouspage Rich Text Document Structure
+ \nextpage Document Layouts
+
+ \title The QTextCursor Interface
+
+ \tableofcontents
+
+ Documents can be edited via the interface provided by the QTextCursor
+ class; cursors are either created using a constructor or obtained from
+ an editor widget. The cursor is used to perform editing operations that
+ correspond exactly to those the user is able to make themselves in an
+ editor. As a result, information about the document structure is also
+ available through the cursor, and this allows the structure to be
+ modified. The use of a cursor-oriented interface for editing makes the
+ process of writing a custom editor simpler for developers, since the
+ editing operations can be easily visualized.
+
+ The QTextCursor class also maintains information about any text it
+ has selected in the document, again following a model that is
+ conceptually similar to the actions made by the user to select text
+ in an editor.
+
+ Rich text documents can have multiple cursors
+ associated with them, and each of these contains information about their
+ position in the document and any selections that they may hold. This
+ cursor-based paradigm makes common operations, such as cutting and pasting
+ text, simple to implement programmatically, yet it also allows more complex
+ editing operations to be performed on the document.
+
+ This chapter describes most of the common editing operations that you
+ will need to perform using a cursor, from basic insertion of text and
+ document elements to more complex manipulation of document structures.
+
+ \section1 Cursor-Based Editing
+
+ At the simplest level, text documents are made up of a string of characters,
+ marked up in some way to represent the block structure of the text within the
+ document. QTextCursor provides a cursor-based interface that allows the
+ contents of a QTextDocument to be manipulated at the character level. Since
+ the elements (blocks, frames, tables, etc.) are also encoded in the character
+ stream, the document structure can itself be changed by the cursor.
+
+ The cursor keeps track of its location within its parent document, and can
+ report information about the surrounding structure, such as the enclosing
+ text block, frame, table, or list. The formats of the enclosing structures
+ can also be directly obtained through the cursor.
+
+ \section2 Using a Cursor
+
+ The main use of a cursor is to insert or modify text within a block.
+ We can use a text editor's cursor to do this:
+
+ \snippet doc/src/snippets/textblock-formats/main.cpp 0
+
+ Alternatively, we can obtain a cursor directly from a document:
+
+ \snippet doc/src/snippets/textdocument-images/main.cpp 0
+
+ The cursor is positioned at the start of the document so that we can write
+ into the first (empty) block in the document.
+
+ \section2 Grouping Cursor Operations
+
+ A series of editing operations can be packaged together so that they can
+ be replayed, or undone together in a single action. This is achieved by
+ using the \c beginEditBlock() and \c endEditBlock() functions in the
+ following way, as in the following example where we select the word that
+ contains the cursor:
+
+ \snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 0
+
+ If editing operations are not grouped, the document automatically records
+ the individual operations so that they can be undone later. Grouping
+ operations into larger packages can make editing more efficient both for
+ the user and for the application, but care has to be taken not to group too
+ many operations together as the user may want find-grained control over the
+ undo process.
+
+ \section2 Multiple Cursors
+
+ Multiple cursors can be used to simultaneously edit the same document,
+ although only one will be visible to the user in a QTextEdit widget.
+ The QTextDocument ensures that each cursor writes text correctly and
+ does not interfere with any of the others.
+
+ \omit
+ \snippet doc/src/snippets/textdocument-cursors/main.cpp 0
+ \snippet doc/src/snippets/textdocument-cursors/main.cpp 1
+ \endomit
+
+ \section1 Inserting Document Elements
+
+ QTextCursor provides several functions that can be used to change the
+ structure of a rich text document. Generally, these functions allow
+ document elements to be created with relevant formatting information,
+ and they are inserted into the document at the cursor's position.
+
+ The first group of functions insert block-level elements, and update the
+ cursor position, but they do not return the element that was inserted:
+
+ \list
+ \i \l{QTextCursor::insertBlock()}{insertBlock()} inserts a new text block
+ (paragraph) into a document at the cursor's position, and moves the
+ cursor to the start of the new block.
+ \i \l{QTextCursor::insertFragment()}{insertFragment()} inserts an existing
+ text fragment into a document at the cursor's position.
+ \i \l{QTextCursor::insertImage()}{insertImage()} inserts an image into a
+ document at the cursor's position.
+ \i \l{QTextCursor::insertText()}{insertText()} inserts text into the
+ document at the cursor's position.
+ \endlist
+
+ You can examine the contents of the element that was inserted through the
+ cursor interface.
+
+ The second group of functions insert elements that provide structure to
+ the document, and return the structure that was inserted:
+
+ \list
+ \i \l{QTextCursor::insertFrame()}{insertFrame()} inserts a frame into the
+ document \e after the cursor's current block, and moves the cursor to
+ the start of the empty block in the new frame.
+ \i \l{QTextCursor::insertList()}{insertList()} inserts a list into the
+ document at the cursor's position, and moves the cursor to the start
+ of the first item in the list.
+ \i \l{QTextCursor::insertTable()}{insertTable()} inserts a table into
+ the document \e after the cursor's current block, and moves the cursor
+ to the start of the block following the table.
+ \endlist
+
+ These elements either contain or group together other elements in the
+ document.
+
+ \section2 Text and Text Fragments
+
+ Text can be inserted into the current block in the current character
+ format, or in a custom format that is specified with the text:
+
+ \snippet doc/src/snippets/textdocument-charformats/main.cpp 0
+
+ Once the character format has been used with a cursor, that format becomes
+ the default format for any text inserted with that cursor until another
+ character format is specified.
+
+ If a cursor is used to insert text without specifying a character format,
+ the text will be given the character format used at that position in the
+ document.
+
+ \section2 Blocks
+
+ Text blocks are inserted into the document with the
+ \l{QTextCursor::insertBlock()}{insertBlock()} function.
+
+ \snippet doc/src/snippets/textblock-formats/main.cpp 1
+
+ The cursor is positioned at the start of the new block.
+
+ \section2 Frames
+
+ Frames are inserted into a document using the cursor, and will be placed
+ within the cursor's current frame \e after the current block.
+ The following code shows how a frame can be inserted between two text
+ blocks in a document's root frame. We begin by finding the cursor's
+ current frame:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 0
+
+ We insert some text in this frame then set up a frame format for the
+ child frame:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 1
+
+ The frame format will give the frame an external margin of 32 pixels,
+ internal padding of 8 pixels, and a border that is 4 pixels wide.
+ See the QTextFrameFormat documentation for more information about
+ frame formats.
+
+ The frame is inserted into the document after the preceding text:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 2
+
+ We add some text to the document immediately after we insert the frame.
+ Since the text cursor is positioned \e{inside the frame} when it is inserted
+ into the document, this text will also be inserted inside the frame.
+
+ Finally, we position the cursor outside the frame by taking the last
+ available cursor position inside the frame we recorded earlier:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 3
+
+ The text that we add last is inserted after the child frame in the
+ document. Since each frame is padded with text blocks, this ensures that
+ more elements can always be inserted with a cursor.
+
+ \section2 Tables
+
+ Tables are inserted into the document using the cursor, and will be
+ placed within the cursor's current frame \e after the current block:
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 0
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 3
+
+ Tables can be created with a specific format that defines the overall
+ properties of the table, such as its alignment, background color, and
+ the cell spacing used. It can also determine the constraints on each
+ column, allowing each of them to have a fixed width, or resize according
+ to the available space.
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 2
+
+ The columns in the table created above will each take up a certain
+ percentage of the available width. Note that the table format is
+ optional; if you insert a table without a format, some sensible
+ default values will be used for the table's properties.
+
+ Since cells can contain other document elements, they too can be
+ formatted and styled as necessary.
+
+ Text can be added to the table by navigating to each cell with the cursor
+ and inserting text.
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 4
+
+ We can create a simple timetable by following this approach:
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 5
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 6
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 7
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 8
+
+ \section2 Lists
+
+ Lists of block elements can be automatically created and inserted into the
+ document at the current cursor position. Each list that is created in this
+ way requires a list format to be specified:
+
+ \snippet doc/src/snippets/textdocument-lists/mainwindow.cpp 0
+
+ The above code first checks whether the cursor is within an existing list
+ and, if so, gives the list format for the new list a suitable level of
+ indentation. This allows nested lists to be created with increasing
+ levels of indentation. A more sophisticated implementation would also use
+ different kinds of symbol for the bullet points in each level of the list.
+
+ \section2 Images
+
+ Inline images are added to documents through the cursor in the usual manner.
+ Unlike many other elements, all of the image properties are specified by the
+ image's format. This means that a QTextImageFormat object has to be
+ created before an image can be inserted:
+
+ \snippet doc/src/snippets/textdocument-images/main.cpp 1
+
+ The image name refers to an entry in the application's resource file.
+ The method used to derive this name is described in
+ \l{resources.html}{The Qt Resource System}.
+
+ \section1 Examples
+
+ Rich text is stored in text documents that can either be created by
+ importing HTML from an external source, or generated using a QTextCursor.
+
+ \section2 Manipulating Rich Text
+
+ The easiest way to use a rich text document is through
+ the QTextEdit class, providing an editable view onto a document. The code
+ below imports HTML into a document, and displays the document using a
+ text edit widget.
+
+ \snippet doc/src/snippets/scribe-overview/main.cpp 1
+
+ You can retrieve the document from the text edit using the
+ document() function. The document can then be edited programmatically
+ using the QTextCursor class. This class is modeled after a screen
+ cursor, and editing operations follow the same semantics. The following
+ code changes the first line of the document to a bold font, leaving all
+ other font properties untouched. The editor will be automatically
+ updated to reflect the changes made to the underlying document data.
+
+ \snippet doc/src/snippets/scribe-overview/main.cpp 0
+
+ Note that the cursor was moved from the start of the first line to the
+ end, but that it retained an anchor at the start of the line. This
+ demonstrates the cursor-based selection facilities of the
+ QTextCursor class.
+
+ \section2 Generating a Calendar
+
+ Rich text can be generated very quickly using the cursor-based
+ approach. The following example shows a simple calendar in a
+ QTextEdit widget with bold headers for the days of the week:
+
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 0
+ \codeline
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 1
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 2
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 3
+
+ The above example demonstrates how simple it is to quickly generate new
+ rich text documents using a minimum amount of code. Although we have
+ generated a crude fixed-pitch calendar to avoid quoting too much code,
+ Scribe provides much more sophisticated layout and formatting features.
+*/
+
+/*!
+ \page richtext-layouts.html
+ \contentspage richtext.html Contents
+ \previouspage The QTextCursor Interface
+ \nextpage Common Rich Text Editing Tasks
+
+ \title Document Layouts
+
+ \tableofcontents
+
+ The layout of a document is only relevant when it is to be displayed on
+ a device, or when some information is requested that requires a visual
+ representation of the document. Until this occurs, the document does
+ not need to be formatted and prepared for a device.
+
+ \section1 Overview
+
+ Each document's layout is managed by a subclass of the
+ QAbstractTextDocumentLayout class. This class provides a common
+ interface for layout and rendering engines. The default rendering
+ behavior is currently implemented in a private class. This approach
+ makes it possible to create custom layouts, and provides the
+ mechanism used when preparing pages for printing or exporting to
+ Portable Document Format (PDF) files.
+
+ \section1 Example - Shaped Text Layout
+
+ Sometimes it is important to be able to format plain text within an
+ irregularly-shaped region, perhaps when rendering a custom widget, for
+ example. Scribe provides generic features, such as those provided by
+ the QTextLayout class, to help developers perform word-wrapping and
+ layout tasks without the need to create a document first.
+
+ \img plaintext-layout.png
+
+ Formatting and drawing a paragraph of plain text is straightforward.
+ The example below will lay out a paragraph of text, using a single
+ font, around the right hand edge of a circle.
+
+ \snippet doc/src/snippets/plaintextlayout/window.cpp 0
+
+ We create a text layout, specifying the text string we want to display
+ and the font to use. We ensure that the text we supplied is formatted
+ correctly by obtaining text lines from the text format, and wrapping
+ the remaining text using the available space. The lines are positioned
+ as we move down the page.
+
+ The formatted text can be drawn onto a paint device; in the above code,
+ the text is drawn directly onto a widget.
+ */
+
+ /*!
+ \page richtext-common-tasks.html
+ \contentspage richtext.html Contents
+ \previouspage Document Layouts
+ \nextpage Advanced Rich Text Processing
+
+ \title Common Rich Text Editing Tasks
+
+ \tableofcontents
+
+ There are a number of tasks that are often performed by developers
+ when editing and processing text documents using Qt. These include the use
+ of display widgets such as QTextBrowser and QTextEdit, creation of
+ documents with QTextDocument, editing using a QTextCursor, and
+ exporting the document structure.
+ This document outlines some of the more common ways of using the rich
+ text classes to perform these tasks, showing convenient patterns that can
+ be reused in your own applications.
+
+ \section1 Using QTextEdit
+
+ A text editor widget can be constructed and used to display HTML in the
+ following way:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 2
+
+ By default, the text editor contains a document with a root frame, inside
+ which is an empty text block. This document can be obtained so that it can
+ be modified directly by the application:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 3
+
+ The text editor's cursor may also be used to edit a document:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 4
+
+ Although a document can be edited using many cursors at once, a QTextEdit
+ only displays a single cursor at a time. Therefore, if we want to update the
+ editor to display a particular cursor or its selection, we need to set the
+ editor's cursor after we have modified the document:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 5
+
+ \section1 Selecting Text
+
+ Text is selected by moving the cursor using operations that are similar to
+ those performed by a user in a text editor. To select text between two
+ points in the document, we need to position the cursor at the first point
+ then move it using a special mode (\l{QTextCursor::MoveMode}) with a
+ move operation (\l{QTextCursor::MoveOperation}).
+ When we select the text, we leave the selection anchor at the old cursor
+ position just as the user might do by holding down the Shift key when
+ selecting text:
+
+ \snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 1
+
+ In the above code, a whole word is selected using this method. QTextCursor
+ provides a number of common move operations for selecting individual
+ characters, words, lines, and whole blocks.
+
+ \section1 Finding Text
+
+ QTextDocument provides a cursor-based interface for searching, making
+ it easy to find and modify text in the style of a text editor. The following
+ code finds all the instances of a particular word in a document, and changes
+ the color of each:
+
+ \snippet doc/src/snippets/textdocument-find/main.cpp 0
+ \snippet doc/src/snippets/textdocument-find/main.cpp 1
+
+ Note that the cursor does not have to be moved after each search and replace
+ operation; it is always positioned at the end of the word that was just
+ replaced.
+
+ \section1 Printing Documents
+
+ QTextEdit is designed for the display of large rich text documents that are
+ read on screen, rendering them in the same way as a web browser. As a result,
+ it does not automatically break the contents of the document into page-sized
+ pieces that are suitable for printing.
+
+ QTextDocument provides a \l{QTextDocument::print()}{print()} function to
+ allow documents to be printed using the QPrinter class. The following code
+ shows how to prepare a document in a QTextEdit for printing with a QPrinter:
+
+ \snippet doc/src/snippets/textdocument-printing/mainwindow.cpp 0
+
+ The document is obtained from the text editor, and a QPrinter is constructed
+ then configured using a QPrintDialog. If the user accepts the printer's
+ configuration then the document is formatted and printed using the
+ \l{QTextDocument::print()}{print()} function.
+*/
+
+/*!
+ \page richtext-advanced-processing.html
+ \contentspage richtext.html Contents
+ \previouspage Common Rich Text Editing Tasks
+ \nextpage Supported HTML Subset
+
+ \title Advanced Rich Text Processing
+
+ \section1 Handling Large Files
+
+ Qt does not limit the size of files that are used for text
+ processing. In most cases, this will not present a problem. For
+ especially large files, however, you might experience that your
+ application will become unresponsive or that you will run out of
+ memory. The size of the files you can load depends on your
+ hardware and on Qt's and your own application's implementation.
+
+ If you are faced with this problem, we recommend that you address the
+ following issues:
+
+ \list
+ \o You should consider breaking up large paragraphs into smaller
+ ones as Qt handles small paragraphs better. You could also
+ insert line breaks at regular intervals, which will look the
+ same as one large paragraph in a QTextEdit.
+ \o You can reduce the amount of blocks in a QTextDocument with
+ \l{QTextDocument::}{maximumBlockCount()}. The document is only
+ as large as the number of blocks as far as QTextEdit is concerned.
+ \o When adding text to a text edit, it is an advantage to add it
+ in an edit block (see example below). The result is that the
+ text edit does not need to build the entire document structure at once.
+ \endlist
+
+ We give an example of the latter technique from the list. We assume that
+ the text edit is visible.
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 6
+
+ \omit
+ Ideas for other sections:
+
+ * Hiding QTextBlock elements.
+ * Changing the word wrapping mode in QTextEdit. Custom word wrapping?
+ \endomit
+*/
+
+/*!
+ \page richtext-html-subset.html
+ \title Supported HTML Subset
+ \brief Describes the support for HTML markup in text widgets.
+
+ \contentspage richtext.html Contents
+ \previouspage Common Rich Text Editing Tasks
+
+ Qt's text widgets are able to display rich text, specified using a subset of \l{HTML 4}
+ markup. Widgets that use QTextDocument, such as QLabel and QTextEdit, are able to display
+ rich text specified in this way.
+
+ \tableofcontents
+
+ \section1 Using HTML Markup in Text Widgets
+
+ Widgets automatically detect HTML markup and display rich text accordingly. For example,
+ setting a label's \l{QLabel::}{text} property with the string \c{"<b>Hello</b> <i>Qt!</i>"}
+ will result in the label displaying text like this: \bold{Hello} \e{Qt!}
+
+ When HTML markup is used for text, Qt follows the rules defined by the \l{HTML 4}
+ specification. This includes default properties for text layout, such as the
+ direction of the text flow (left-to-right) which can be changed by applying the
+ \l{#Block Attributes}{\c dir} attribute to blocks of text.
+
+ \section1 Supported Tags
+
+ The following table lists the HTML tags supported by Qt's
+ \l{Rich Text Processing}{rich text} engine:
+
+ \table
+ \header \o Tag
+ \o Description
+ \o Comment
+ \row \o \c a
+ \o Anchor or link
+ \o Supports the \c href and \c name attributes.
+ \row \o \c address
+ \o Address
+ \o
+ \row \o \c b
+ \o Bold
+ \o
+ \row \o \c big
+ \o Larger font
+ \o
+ \row \o \c blockquote
+ \o Indented paragraph
+ \o
+ \row \o \c body
+ \o Document body
+ \o Supports the \c bgcolor attribute, which
+ can be a Qt \l{QColor::setNamedColor()}{color name}
+ or a \c #RRGGBB color specification.
+ \row \o \c br
+ \o Line break
+ \o
+ \row \o \c center
+ \o Centered paragraph
+ \o
+ \row \o \c cite
+ \o Inline citation
+ \o Same as \c i.
+ \row \o \c code
+ \o Code
+ \o Same as \c tt.
+ \row \o \c dd
+ \o Definition data
+ \o
+ \row \o \c dfn
+ \o Definition
+ \o Same as \c i.
+ \row \o \c div
+ \o Document division
+ \o Supports the standard \l{block attributes}.
+ \row \o \c dl
+ \o Definition list
+ \o Supports the standard \l{block attributes}.
+ \row \o \c dt
+ \o Definition term
+ \o Supports the standard \l{block attributes}.
+ \row \o \c em
+ \o Emphasized
+ \o Same as \c i.
+ \row \o \c font
+ \o Font size, family, and/or color
+ \o Supports the following attributes:
+ \c size, \c face, and \c color (Qt
+ \l{QColor::setNamedColor()}{color names} or
+ \c #RRGGBB).
+ \row \o \c h1
+ \o Level 1 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h2
+ \o Level 2 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h3
+ \o Level 3 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h4
+ \o Level 4 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h5
+ \o Level 5 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h6
+ \o Level 6 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c head
+ \o Document header
+ \o
+ \row \o \c hr
+ \o Horizontal line
+ \o Supports the \c width attribute, which can
+ be specified as an absolute or relative (\c %) value.
+ \row \o \c html
+ \o HTML document
+ \o
+ \row \o \c i
+ \o Italic
+ \o
+ \row \o \c img
+ \o Image
+ \o Supports the \c src, \c source
+ (for Qt 3 compatibility), \c width, and \c height
+ attributes.
+ \row \o \c kbd
+ \o User-entered text
+ \o
+ \row \o \c meta
+ \o Meta-information
+ \o If a text encoding is specified using the \c{meta} tag,
+ it is picked up by Qt::codecForHtml().
+ Likewise, if an encoding is specified to
+ QTextDocument::toHtml(), the encoding is stored using
+ a \c meta tag, for example:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 7
+
+ \row \o \c li
+ \o List item
+ \o
+ \row \o \c nobr
+ \o Non-breakable text
+ \o
+ \row \o \c ol
+ \o Ordered list
+ \o Supports the standard \l{list attributes}.
+ \row \o \c p
+ \o Paragraph
+ \o Left-aligned by default. Supports the standard
+ \l{block attributes}.
+ \row \o \c pre
+ \o Preformated text
+ \o
+ \row \o \c qt
+ \o Qt rich-text document
+ \o Synonym for \c html. Provided for compatibility with
+ earlier versions of Qt.
+ \row \o \c s
+ \o Strikethrough
+ \o
+ \row \o \c samp
+ \o Sample code
+ \o Same as \c tt.
+ \row \o \c small
+ \o Small font
+ \o
+ \row \o \c span
+ \o Grouped elements
+ \o
+ \row \o \c strong
+ \o Strong
+ \o Same as \c b.
+ \row \o \c sub
+ \o Subscript
+ \o
+ \row \o \c sup
+ \o Superscript
+ \o
+ \row \o \c table
+ \o Table
+ \o Supports the following attributes: \c border,
+ \c bgcolor (Qt \l{QColor::setNamedColor()}{color names}
+ or \c #RRGGBB), \c cellspacing, \c cellpadding,
+ \c width (absolute or relative), and \c height.
+ \row \o \c tbody
+ \o Table body
+ \o Does nothing.
+ \row \o \c td
+ \o Table data cell
+ \o Supports the standard \l{table cell attributes}.
+ \row \o \c tfoot
+ \o Table footer
+ \o Does nothing.
+ \row \o \c th
+ \o Table header cell
+ \o Supports the standard \l{table cell attributes}.
+ \row \o \c thead
+ \o Table header
+ \o If the \c thead tag is specified, it is used when printing tables
+ that span multiple pages.
+ \row \o \c title
+ \o Document title
+ \o The value specified using the \c
+ title tag is available through
+ QTextDocument::metaInformation().
+ \row \o \c tr
+ \o Table row
+ \o Supports the \c bgcolor attribute, which
+ can be a Qt \l{QColor::setNamedColor()}{color name}
+ or a \c #RRGGBB color specification.
+ \row \o \c tt
+ \o Typewrite font
+ \o
+ \row \o \c u
+ \o Underlined
+ \o
+ \row \o \c ul
+ \o Unordered list
+ \o Supports the standard \l{list attributes}.
+ \row \o \c var
+ \o Variable
+ \o Same as \c i.
+ \endtable
+
+ \section1 Block Attributes
+
+ The following attributes are supported by the \c div, \c dl, \c
+ dt, \c h1, \c h2, \c h3, \c h4, \c h5, \c h6, \c p tags:
+
+ \list
+ \o \c align (\c left, \c right, \c center, \c justify)
+ \o \c dir (\c ltr, \c rtl)
+ \endlist
+
+ \section1 List Attributes
+
+ The following attribute is supported by the \c ol and \c ul tags:
+
+ \list
+ \o \c type (\c 1, \c a, \c A, \c square, \c disc, \c circle)
+ \endlist
+
+ \section1 Table Cell Attributes
+
+ The following attributes are supported by the \c td and \c th
+ tags:
+
+ \list
+ \o \c width (absolute, relative, or no-value)
+ \o \c bgcolor (Qt \l{QColor::setNamedColor()}{color names} or \c #RRGGBB)
+ \o \c colspan
+ \o \c rowspan
+ \o \c align (\c left, \c right, \c center, \c justify)
+ \o \c valign (\c top, \c middle, \c bottom)
+ \endlist
+
+ \section1 CSS Properties
+ The following table lists the CSS properties supported by Qt's
+ \l{Rich Text Processing}{rich text} engine:
+
+ \table
+ \header \o Property
+ \o Values
+ \o Description
+ \row
+ \o \c background-color
+ \o <color>
+ \o Background color for elements
+ \row
+ \o \c background-image
+ \o <uri>
+ \o Background image for elements
+ \row \o \c color
+ \o <color>
+ \o Text foreground color
+ \row \o \c font-family
+ \o <family name>
+ \o Font family name
+ \row \o \c font-size
+ \o [ small | medium | large | x-large | xx-large ] | <size>pt | <size>px
+ \o Font size relative to the document font, or specified in points or pixels
+ \row \o \c font-style
+ \o [ normal | italic | oblique ]
+ \o
+ \row \o \c font-weight
+ \o [ normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 ]
+ \o Specifies the font weight used for text, where \c normal and \c bold
+ are mapped to the corresponding QFont weights. Numeric values are
+ 8 times the equivalent QFont weight values.
+ \row \o \c text-decoration
+ \o none | [ underline || overline || line-through ]
+ \o Additional text effects
+ \row \o \c font
+ \o [ [ <'font-style'> || <'font-weight'> ]? <'font-size'> <'font-family'> ]
+ \o Font shorthand property
+ \row \o \c text-indent
+ \o <length>px
+ \o First line text indentation in pixels
+ \row \o \c white-space
+ \o normal | pre | nowrap | pre-wrap
+ \o Declares how whitespace in HTML is handled.
+ \row \o \c margin-top
+ \o <length>px
+ \o Top paragraph margin in pixels
+ \row \o \c margin-bottom
+ \o <length>px
+ \o Bottom paragraph margin in pixels
+ \row \o \c margin-left
+ \o <length>px
+ \o Left paragraph margin in pixels
+ \row \o \c margin-right
+ \o <length>px
+ \o Right paragraph margin in pixels
+ \row \o \c padding-top
+ \o <length>px
+ \o Top table cell padding in pixels
+ \row \o \c padding-bottom
+ \o <length>px
+ \o Bottom table cell padding in pixels
+ \row \o \c padding-left
+ \o <length>px
+ \o Left table cell padding in pixels
+ \row \o \c padding-right
+ \o <length>px
+ \o Right table cell padding in pixels
+ \row \o \c padding
+ \o <length>px
+ \o Shorthand for setting all the padding properties at once.
+ \row \o \c vertical-align
+ \o baseline | sub | super | middle | top | bottom
+ \o Vertical text alignment. For vertical alignment in text table cells only middle, top, and bottom apply.
+ \row \o \c border-color
+ \o <color>
+ \o Border color for text tables.
+ \row \o \c border-style
+ \o none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset
+ \o Border style for text tables.
+ \row \o \c background
+ \o [ <'background-color'> || <'background-image'> ]
+ \o Background shorthand property
+ \row \o \c page-break-before
+ \o [ auto | always ]
+ \o Make it possible to enforce a page break before the paragraph/table
+ \row \o \c page-break-after
+ \o [ auto | always ]
+ \o Make it possible to enforce a page break after the paragraph/table
+ \row \o float
+ \o [ left | right | none ]
+ \o Specifies where an image or a text will be placed in another element. Note that the \c float property is
+ only supported for tables and images.
+ \row \o \c text-transform
+ \o [ uppercase | lowercase ]
+ \o Select the transformation that will be performed on the text prior to displaying it.
+ \row \o \c font-variant
+ \o small-caps
+ \o Perform the smallcaps transformation on the text prior to displaying it.
+ \row \o \c word-spacing
+ \o <width>px
+ \o Specifies an alternate spacing between each word.
+ \endtable
+
+ \section1 Supported CSS Selectors
+
+ All CSS 2.1 selector classes are supported except pseudo-class selectors such
+ as \c{:first-child}, \c{:visited} and \c{:hover}.
+
+*/
diff --git a/doc/src/statemachine.qdoc b/doc/src/frameworks-technologies/statemachine.qdoc
index f479c77..3513199 100644
--- a/doc/src/statemachine.qdoc
+++ b/doc/src/frameworks-technologies/statemachine.qdoc
@@ -40,10 +40,16 @@
****************************************************************************/
/*!
+ \group statemachine
+ \title State Machine Classes
+*/
+
+/*!
\page statemachine-api.html
\title The State Machine Framework
\brief An overview of the State Machine framework for constructing and executing state graphs.
- \ingroup architecture
+
+ \ingroup frameworks-technologies
\tableofcontents
@@ -69,6 +75,12 @@
states can be configured to set properties and invoke methods on QObjects.
Qt's event system is used to drive the state machines.
+ \section1 Classes in the State Machine Framework
+
+ These classes are provided by qt for creating event-driven state machines.
+
+ \annotatedlist statemachine
+
\section1 A Simple State Machine
To demonstrate the core functionality of the State Machine API, let's look
diff --git a/doc/src/templates.qdoc b/doc/src/frameworks-technologies/templates.qdoc
index 4705d09..39d76ee 100644
--- a/doc/src/templates.qdoc
+++ b/doc/src/frameworks-technologies/templates.qdoc
@@ -42,7 +42,6 @@
/*!
\page templates.html
\title Why Doesn't Qt Use Templates for Signals and Slots?
- \ingroup architecture
\brief The reasoning behind Qt's implementation of signals and slots.
Templates are a builtin mechanism in C++ that allows the compiler to
diff --git a/doc/src/threads.qdoc b/doc/src/frameworks-technologies/threads.qdoc
index 351113a..bc65daf 100644
--- a/doc/src/threads.qdoc
+++ b/doc/src/frameworks-technologies/threads.qdoc
@@ -40,11 +40,19 @@
****************************************************************************/
/*!
+ \group thread
+ \title Threading Classes
+*/
+
+/*!
\page threads.html
\title Thread Support in Qt
- \ingroup architecture
\brief A detailed discussion of thread handling in Qt.
+ \ingroup frameworks-technologies
+
+ \nextpage Starting Threads with QThread
+
Qt provides thread support in the form of platform-independent
threading classes, a thread-safe way of posting events, and
signal-slot connections across threads. This makes it easy to
@@ -56,18 +64,39 @@
Earlier versions of Qt offered an option to build the library
without thread support. Since Qt 4.0, threads are always enabled.
+ \section1 Topics:
+
+ \list
+ \o \l{Recommended Reading}
+ \o \l{The Threading Classes}
+ \o \l{Starting Threads with QThread}
+ \o \l{Synchronizing Threads}
+ \o \l{Reentrancy and Thread-Safety}
+ \o \l{Threads and QObjects}
+ \o \l{Concurrent Programming}
+ \o \l{Thread-Support in Qt Modules}
+ \endlist
+
+ \section1 Recommended Reading
+
This document is intended for an audience that has knowledge of,
and experience with, multithreaded applications. If you are new
- to threading see our \l{#reading}{Recommended Reading} list.
+ to threading see our Recommended Reading list:
- Topics:
-
- \tableofcontents
+ \list
+ \o \l{Threads Primer: A Guide to Multithreaded Programming}
+ \o \l{Thread Time: The Multithreaded Programming Guide}
+ \o \l{Pthreads Programming: A POSIX Standard for Better Multiprocessing}
+ \o \l{Win32 Multithreaded Programming}
+ \endlist
\section1 The Threading Classes
- Qt includes the following thread classes:
+ These classes are relevant to threaded applications.
+
+ \annotatedlist thread
+\omit
\list
\o QThread provides the means to start a new thread.
\o QThreadStorage provides per-thread data storage.
@@ -85,12 +114,30 @@
\o QAtomicInt provides atomic operations on integers.
\o QAtomicPointer provides atomic operations on pointers.
\endlist
+\endomit
\note Qt's threading classes are implemented with native threading APIs;
e.g., Win32 and pthreads. Therefore, they can be used with threads of the
same native API.
+*/
- \section2 Creating a Thread
+/*!
+ \page threads-starting.html
+ \title Starting Threads with QThread
+
+ \contentspage Thread Support in Qt
+ \nextpage Synchronizing Threads
+
+ A QThread instance represents a thread and provides the means to
+ \l{QThread::start()}{start()} a thread, which will then execute the
+ reimplementation of QThread::run(). The \c run() implementation is for a
+ thread what the \c main() entry point is for the application. All code
+ executed in a call stack that starts in the \c run() function is executed
+ by the new thread, and the thread finishes when the function returns.
+ QThread emits signals to indicate that the thread started or finished
+ executing.
+
+ \section1 Creating a Thread
To create a thread, subclass QThread and reimplement its
\l{QThread::run()}{run()} function. For example:
@@ -102,22 +149,34 @@
\dots
\snippet doc/src/snippets/threads/threads.cpp 2
+ \section1 Starting a Thread
+
Then, create an instance of the thread object and call
- QThread::start(). The code that appears in the
+ QThread::start(). Note that you must create the QApplication (or
+ QCoreApplication) object before you can create a QThread.
+
+ The function will return immediately and the
+ main thread will continue. The code that appears in the
\l{QThread::run()}{run()} reimplementation will then be executed
- in a separate thread. Creating threads is explained in more
- detail in the QThread documentation.
+ in a separate thread.
+
+ Creating threads is explained in more detail in the QThread
+ documentation.
Note that QCoreApplication::exec() must always be called from the
main thread (the thread that executes \c{main()}), not from a
QThread. In GUI applications, the main thread is also called the
GUI thread because it's the only thread that is allowed to
perform GUI-related operations.
+*/
- In addition, you must create the QApplication (or
- QCoreApplication) object before you can create a QThread.
-
- \section2 Synchronizing Threads
+/*!
+ \page threads-synchronizing.html
+ \title Synchronizing Threads
+
+ \previouspage Starting Threads with QThread
+ \contentspage Thread Support in Qt
+ \nextpage Reentrancy and Thread-Safety
The QMutex, QReadWriteLock, QSemaphore, and QWaitCondition
classes provide means to synchronize threads. While the main idea
@@ -162,105 +221,18 @@
Note that Qt's synchronization classes rely on the use of properly
aligned pointers. For instance, you cannot use packed classes with
MSVC.
+*/
- \target qtconcurrent intro
- \section1 QtConcurrent
-
- The QtConcurrent namespace provides high-level APIs that make it
- possible to write multi-threaded programs without using low-level
- threading primitives such as mutexes, read-write locks, wait
- conditions, or semaphores. Programs written with QtConcurrent
- automatically adjust the number of threads used according to the
- number of processor cores available. This means that applications
- written today will continue to scale when deployed on multi-core
- systems in the future.
-
- QtConcurrent includes functional programming style APIs for
- parallel list processing, including a MapReduce and FilterReduce
- implementation for shared-memory (non-distributed) systems, and
- classes for managing asynchronous computations in GUI
- applications:
-
- \list
-
- \o QtConcurrent::map() applies a function to every item in a container,
- modifying the items in-place.
-
- \o QtConcurrent::mapped() is like map(), except that it returns a new
- container with the modifications.
-
- \o QtConcurrent::mappedReduced() is like mapped(), except that the
- modified results are reduced or folded into a single result.
-
- \o QtConcurrent::filter() removes all items from a container based on the
- result of a filter function.
-
- \o QtConcurrent::filtered() is like filter(), except that it returns a new
- container with the filtered results.
-
- \o QtConcurrent::filteredReduced() is like filtered(), except that the
- filtered results are reduced or folded into a single result.
-
- \o QtConcurrent::run() runs a function in another thread.
-
- \o QFuture represents the result of an asynchronous computation.
-
- \o QFutureIterator allows iterating through results available via QFuture.
-
- \o QFutureWatcher allows monitoring a QFuture using signals-and-slots.
-
- \o QFutureSynchronizer is a convenience class that automatically
- synchronizes several QFutures.
-
- \endlist
-
- Qt Concurrent supports several STL-compatible container and iterator types,
- but works best with Qt containers that have random-access iterators, such as
- QList or QVector. The map and filter functions accept both containers and begin/end iterators.
-
- STL Iterator support overview:
-
- \table
- \header
- \o Iterator Type
- \o Example classes
- \o Support status
- \row
- \o Input Iterator
- \o
- \o Not Supported
- \row
- \o Output Iterator
- \o
- \o Not Supported
- \row
- \o Forward Iterator
- \o std::slist
- \o Supported
- \row
- \o Bidirectional Iterator
- \o QLinkedList, std::list
- \o Supported
- \row
- \o Random Access Iterator
- \o QList, QVector, std::vector
- \o Supported and Recommended
- \endtable
+/*!
+ \page threads-reentrancy.html
+ \title Reentrancy and Thread-Safety
- Random access iterators can be faster in cases where Qt Concurrent is iterating
- over a large number of lightweight items, since they allow skipping to any point
- in the container. In addition, using random access iterators allows Qt Concurrent
- to provide progress information trough QFuture::progressValue() and QFutureWatcher::
- progressValueChanged().
-
- The non in-place modifying functions such as mapped() and filtered() makes a
- copy of the container when called. If you are using STL containers this copy operation
- might take some time, in this case we recommend specifying the begin and end iterators
- for the container instead.
-
\keyword reentrant
\keyword thread-safe
- \section1 Reentrancy and Thread-Safety
+
+ \previouspage Synchronizing Threads
+ \contentspage Thread Support in Qt
+ \nextpage Threads and QObjects
Throughout the documentation, the terms \e{reentrant} and
\e{thread-safe} are used to mark classes and functions to indicate
@@ -346,8 +318,15 @@
that are somewhat different for its C APIs. When using other
object-oriented C++ class libraries with Qt, be sure the
definitions are understood.
+*/
+
+/*!
+ \page threads-qobject.html
+ \title Threads and QObjects
- \section1 Threads and QObjects
+ \previouspage Reentrancy and Thread Safety
+ \contentspage Thread Support in Qt
+ \nextpage Concurrent Programming
QThread inherits QObject. It emits signals to indicate that the
thread started or finished executing, and provides a few slots as
@@ -358,8 +337,12 @@
post events to objects that "live" in other threads. This is
possible because each thread is allowed to have its own event
loop.
+
+ Topics:
+
+ \tableofcontents
- \section2 QObject Reentrancy
+ \section1 QObject Reentrancy
QObject is reentrant. Most of its non-GUI subclasses, such as
QTimer, QTcpSocket, QUdpSocket, QFtp, and QProcess, are also
@@ -402,7 +385,7 @@
the \l{network/blockingfortuneclient}{Blocking Fortune Client}
example.
- \section2 Per-Thread Event Loop
+ \section1 Per-Thread Event Loop
Each thread can have its own event loop. The initial thread
starts its event loops using QCoreApplication::exec(); other
@@ -463,7 +446,7 @@
be used to dispatch events to objects living in the thread from
which the function is called.
- \section2 Accessing QObject Subclasses from Other Threads
+ \section1 Accessing QObject Subclasses from Other Threads
QObject and all of its subclasses are not thread-safe. This
includes the entire event delivery system. It is important to keep
@@ -487,7 +470,7 @@
QThread::run() implementation, because signal emission is
thread-safe.
- \section2 Signals and Slots Across Threads
+ \section1 Signals and Slots Across Threads
Qt supports three types of signal-slot connections:
@@ -529,37 +512,117 @@
Similarly, the \l{network/blockingfortuneclient}{Blocking Fortune
Client} example uses a separate thread for communicating with
a TCP server asynchronously.
+*/
- \section1 Threads and Implicit Sharing
+/*!
+ \page threads-qtconcurrent.html
+ \title Concurrent Programming
- Qt uses an optimization called \l{implicit sharing} for many of
- its value class, notably QImage and QString. Beginning with Qt 4,
- implicit shared classes can safely be copied across threads, like
- any other value classes. They are fully
- \l{#reentrant}{reentrant}. The implicit sharing is really
- \e implicit.
+ \previouspage Threads and QObjects
+ \contentspage Thread Support in Qt
+ \nextpage Thread-Support in Qt Modules
- In many people's minds, implicit sharing and multithreading are
- incompatible concepts, because of the way the reference counting
- is typically done. Qt, however, uses atomic reference counting to
- ensure the integrity of the shared data, avoiding potential
- corruption of the reference counter.
+ \target qtconcurrent intro
- Note that atomic reference counting does not guarantee
- \l{#thread-safe}{thread-safety}. Proper locking should be used
- when sharing an instance of an implicitly shared class between
- threads. This is the same requirement placed on all
- \l{#reentrant}{reentrant} classes, shared or not. Atomic reference
- counting does, however, guarantee that a thread working on its
- own, local instance of an implicitly shared class is safe. We
- recommend using \l{Signals and Slots Across Threads}{signals and
- slots} to pass data between threads, as this can be done without
- the need for any explicit locking.
+ The QtConcurrent namespace provides high-level APIs that make it
+ possible to write multi-threaded programs without using low-level
+ threading primitives such as mutexes, read-write locks, wait
+ conditions, or semaphores. Programs written with QtConcurrent
+ automatically adjust the number of threads used according to the
+ number of processor cores available. This means that applications
+ written today will continue to scale when deployed on multi-core
+ systems in the future.
- To sum it up, implicitly shared classes in Qt 4 are really \e
- implicitly shared. Even in multithreaded applications, you can
- safely use them as if they were plain, non-shared, reentrant
- value-based classes.
+ QtConcurrent includes functional programming style APIs for
+ parallel list processing, including a MapReduce and FilterReduce
+ implementation for shared-memory (non-distributed) systems, and
+ classes for managing asynchronous computations in GUI
+ applications:
+
+ \list
+
+ \o QtConcurrent::map() applies a function to every item in a container,
+ modifying the items in-place.
+
+ \o QtConcurrent::mapped() is like map(), except that it returns a new
+ container with the modifications.
+
+ \o QtConcurrent::mappedReduced() is like mapped(), except that the
+ modified results are reduced or folded into a single result.
+
+ \o QtConcurrent::filter() removes all items from a container based on the
+ result of a filter function.
+
+ \o QtConcurrent::filtered() is like filter(), except that it returns a new
+ container with the filtered results.
+
+ \o QtConcurrent::filteredReduced() is like filtered(), except that the
+ filtered results are reduced or folded into a single result.
+
+ \o QtConcurrent::run() runs a function in another thread.
+
+ \o QFuture represents the result of an asynchronous computation.
+
+ \o QFutureIterator allows iterating through results available via QFuture.
+
+ \o QFutureWatcher allows monitoring a QFuture using signals-and-slots.
+
+ \o QFutureSynchronizer is a convenience class that automatically
+ synchronizes several QFutures.
+
+ \endlist
+
+ Qt Concurrent supports several STL-compatible container and iterator types,
+ but works best with Qt containers that have random-access iterators, such as
+ QList or QVector. The map and filter functions accept both containers and begin/end iterators.
+
+ STL Iterator support overview:
+
+ \table
+ \header
+ \o Iterator Type
+ \o Example classes
+ \o Support status
+ \row
+ \o Input Iterator
+ \o
+ \o Not Supported
+ \row
+ \o Output Iterator
+ \o
+ \o Not Supported
+ \row
+ \o Forward Iterator
+ \o std::slist
+ \o Supported
+ \row
+ \o Bidirectional Iterator
+ \o QLinkedList, std::list
+ \o Supported
+ \row
+ \o Random Access Iterator
+ \o QList, QVector, std::vector
+ \o Supported and Recommended
+ \endtable
+
+ Random access iterators can be faster in cases where Qt Concurrent is iterating
+ over a large number of lightweight items, since they allow skipping to any point
+ in the container. In addition, using random access iterators allows Qt Concurrent
+ to provide progress information trough QFuture::progressValue() and QFutureWatcher::
+ progressValueChanged().
+
+ The non in-place modifying functions such as mapped() and filtered() makes a
+ copy of the container when called. If you are using STL containers this copy operation
+ might take some time, in this case we recommend specifying the begin and end iterators
+ for the container instead.
+*/
+
+/*!
+ \page threads-modules.html
+ \title Thread-Support in Qt Modules
+
+ \previouspage Concurrent Programming
+ \contentspage Thread Support in Qt
\section1 Threads and the SQL Module
@@ -573,8 +636,8 @@
\section1 Painting in Threads
- QPainter can be used to paint onto QImage, QPrinter, and QPicture
- paint devices. Painting onto QPixmaps and QWidgets is \e not
+ QPainter can be used in a thread to paint onto QImage, QPrinter, and
+ QPicture paint devices. Painting onto QPixmaps and QWidgets is \e not
supported. On Mac OS X the automatic progress dialog will not be
displayed if you are printing from outside the GUI thread.
@@ -601,16 +664,37 @@
\section1 Threads and the SVG module
- The QSvgGenerator and QSvgRenderer classes in the QtSvg module
- are reentrant.
+ The QSvgGenerator and QSvgRenderer classes in the QtSvg module
+ are reentrant.
- \target reading
- \section1 Recommended Reading
+ \section1 Threads and Implicitly Shared Classes
- \list
- \o \l{Threads Primer: A Guide to Multithreaded Programming}
- \o \l{Thread Time: The Multithreaded Programming Guide}
- \o \l{Pthreads Programming: A POSIX Standard for Better Multiprocessing}
- \o \l{Win32 Multithreaded Programming}
- \endlist
+ Qt uses an optimization called \l{implicit sharing} for many of
+ its value class, notably QImage and QString. Beginning with Qt 4,
+ implicit shared classes can safely be copied across threads, like
+ any other value classes. They are fully
+ \l{Reentrancy and Thread-Safety}{reentrant}. The implicit sharing
+ is really \e implicit.
+
+ In many people's minds, implicit sharing and multithreading are
+ incompatible concepts, because of the way the reference counting
+ is typically done. Qt, however, uses atomic reference counting to
+ ensure the integrity of the shared data, avoiding potential
+ corruption of the reference counter.
+
+ Note that atomic reference counting does not guarantee
+ \l{Reentrancy and Thread-Safety}{thread-safety}. Proper locking should be used
+ when sharing an instance of an implicitly shared class between
+ threads. This is the same requirement placed on all
+ \l{Reentrancy and Thread-Safety}{reentrant} classes, shared or not. Atomic reference
+ counting does, however, guarantee that a thread working on its
+ own, local instance of an implicitly shared class is safe. We
+ recommend using \l{Signals and Slots Across Threads}{signals and
+ slots} to pass data between threads, as this can be done without
+ the need for any explicit locking.
+
+ To sum it up, implicitly shared classes in Qt 4 are really \e
+ implicitly shared. Even in multithreaded applications, you can
+ safely use them as if they were plain, non-shared, reentrant
+ value-based classes.
*/
diff --git a/doc/src/unicode.qdoc b/doc/src/frameworks-technologies/unicode.qdoc
index b4ba26a..2daefc5 100644
--- a/doc/src/unicode.qdoc
+++ b/doc/src/frameworks-technologies/unicode.qdoc
@@ -39,20 +39,41 @@
**
****************************************************************************/
+/*!
+ \group string-processing
+ \title Classes for String Data
+
+ \brief Classes for working with string data.
+
+ These classes are relevant when working with string data. See the
+ \l{Unicode in Qt}{information about support for Unicode in Qt} for
+ more information.
+*/
+
+
/*!
\page unicode.html
- \title Unicode
- \ingroup architecture
- \ingroup text-processing
+ \title Unicode in Qt
\brief Information about support for Unicode in Qt.
+ \keyword Unicode
+
+ \ingroup frameworks-technologies
+
Unicode is a multi-byte character set, portable across all major
computing platforms and with decent coverage over most of the world.
It is also single-locale; it includes no code pages or other
complexities that make software harder to write and test. There is no
competing character set that's reasonably cross-platform. For these
reasons, Unicode 4.0 is used as the native character set for Qt.
+
+ \section1 Qt's Classes for Working with Strings
+
+ These classes are relevant when working with string data. For information
+ about rendering text, see the \l{Rich Text Processing} overview, and if
+ your string data is in XML, see the \l{XML Processing} overview.
+ \annotatedlist string-processing
\section1 Information about Unicode on the Web
diff --git a/doc/src/geometry.qdoc b/doc/src/geometry.qdoc
deleted file mode 100644
index 9143548..0000000
--- a/doc/src/geometry.qdoc
+++ /dev/null
@@ -1,150 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page geometry.html
- \title Window Geometry
- \ingroup architecture
- \brief An overview of window geometry handling and management.
-
- QWidget provides several functions that deal with a widget's
- geometry. Some of these functions operate on the pure client area
- (i.e. the window excluding the window frame), others include the
- window frame. The differentiation is done in a way that covers the
- most common usage transparently.
-
- \list
- \o \bold{Including the window frame:}
- \l{QWidget::x()}{x()},
- \l{QWidget::y()}{y()},
- \l{QWidget::frameGeometry()}{frameGeometry()},
- \l{QWidget::pos()}{pos()}, and
- \l{QWidget::move()}{move()}.
- \o \bold{Excluding the window frame:}
- \l{QWidget::geometry()}{geometry()},
- \l{QWidget::width()}{width()},
- \l{QWidget::height()}{height()},
- \l{QWidget::rect()}{rect()}, and
- \l{QWidget::size()}{size()}.
- \endlist
-
- Note that the distinction only matters for decorated top-level
- widgets. For all child widgets, the frame geometry is equal to the
- widget's client geometry.
-
- This diagram shows most of the functions in use:
- \img geometry.png Geometry diagram
-
- Topics:
-
- \tableofcontents
-
- \section1 X11 Peculiarities
-
- On X11, a window does not have a frame until the window manager
- decorates it. This happens asynchronously at some point in time
- after calling QWidget::show() and the first paint event the
- window receives, or it does not happen at all. Bear in mind that
- X11 is policy-free (others call it flexible). Thus you cannot
- make any safe assumption about the decoration frame your window
- will get. Basic rule: There's always one user who uses a window
- manager that breaks your assumption, and who will complain to
- you.
-
- Furthermore, a toolkit cannot simply place windows on the screen. All
- Qt can do is to send certain hints to the window manager. The window
- manager, a separate process, may either obey, ignore or misunderstand
- them. Due to the partially unclear Inter-Client Communication
- Conventions Manual (ICCCM), window placement is handled quite
- differently in existing window managers.
-
- X11 provides no standard or easy way to get the frame geometry
- once the window is decorated. Qt solves this problem with nifty
- heuristics and clever code that works on a wide range of window
- managers that exist today. Don't be surprised if you find one
- where QWidget::frameGeometry() returns wrong results though.
-
- Nor does X11 provide a way to maximize a window.
- QWidget::showMaximized() has to emulate the feature. Its result
- depends on the result of QWidget::frameGeometry() and the
- capability of the window manager to do proper window placement,
- neither of which can be guaranteed.
-
- \section1 Restoring a Window's Geometry
-
- Since version 4.2, Qt provides functions that saves and restores a
- window's geometry and state for you. QWidget::saveGeometry()
- saves the window geometry and maximized/fullscreen state, while
- QWidget::restoreGeometry() restores it. The restore function also
- checks if the restored geometry is outside the available screen
- geometry, and modifies it as appropriate if it is.
-
- The rest of this document describes how to save and restore the
- geometry using the geometry properties. On Windows, this is
- basically storing the result of QWidget::geometry() and calling
- QWidget::setGeometry() in the next session before calling
- \l{QWidget::show()}{show()}. On X11, this won't work because an
- invisible window doesn't have a frame yet. The window manager
- will decorate the window later. When this happens, the window
- shifts towards the bottom/right corner of the screen depending on
- the size of the decoration frame. Although X provides a way to
- avoid this shift, most window managers fail to implement this
- feature.
-
- A workaround is to call \l{QWidget::setGeometry()}{setGeometry()}
- after \l{QWidget::show()}{show()}. This has the two disadvantages
- that the widget appears at a wrong place for a millisecond
- (results in flashing) and that currently only every second window
- manager gets it right. A safer solution is to store both
- \l{QWidget::pos()}{pos()} and \l{QWidget::size()}{size()} and to
- restore the geometry using \l{QWidget::resize()} and
- \l{QWidget::move()}{move()} before calling
- \l{QWidget::show()}{show()}, as demonstrated in the following
- code snippets (from the \l{mainwindows/application}{Application}
- example):
-
- \snippet examples/mainwindows/application/mainwindow.cpp 35
- \codeline
- \snippet examples/mainwindows/application/mainwindow.cpp 38
-
- This method works on Windows, Mac OS X, and most X11 window
- managers.
-*/
diff --git a/doc/src/demos.qdoc b/doc/src/getting-started/demos.qdoc
index 69a943a..1eac06f 100644
--- a/doc/src/demos.qdoc
+++ b/doc/src/getting-started/demos.qdoc
@@ -43,13 +43,28 @@
\page demos.html
\title Qt Demonstrations
\brief Information about the demonstration programs provided with Qt.
- \ingroup howto
+
+ \previouspage Qt Examples
+ \contentspage How to Learn Qt
+ \nextpage What's New in Qt 4.5
This is the list of demonstrations in Qt's \c demos directory.
These are larger and more complicated programs than the
\l{Qt Examples} and are used to highlight certain features of
- Qt. You can launch any of these programs from the
- \l{Examples and Demos Launcher} application.
+ Qt.
+
+ \table 50%
+ \header
+ \o {2,1} Getting an Overview
+ \row
+ \o \inlineimage qtdemo-small.png
+ \o
+ If you run the \l{Examples and Demos Launcher}, you'll see many of Qt's
+ widgets in action.
+
+ The \l{Qt Widget Gallery} also provides overviews of selected Qt
+ widgets in each of the styles used on various supported platforms.
+ \endtable
If you are new to Qt, and want to start developing applications,
you should probably start by going through the \l{Tutorials}.
diff --git a/doc/src/getting-started/examples.qdoc b/doc/src/getting-started/examples.qdoc
new file mode 100644
index 0000000..253a4e4
--- /dev/null
+++ b/doc/src/getting-started/examples.qdoc
@@ -0,0 +1,1108 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page examples-overview.html
+ \raw HTML
+ <script>
+ document.location.href = "examples.html";
+ </script>
+ \endraw
+ Click this \l{Qt Examples}{link} if you don't get redirected.
+*/
+
+/*!
+ \page examples.html
+ \title Qt Examples
+ \brief The example programs provided with Qt.
+
+ \previouspage Tutorials
+ \contentspage How to Learn Qt
+ \nextpage Qt Demonstrations
+
+ Qt is supplied with a variety of examples that cover almost every aspect
+ of development. They are not all designed to be impressive when you run
+ them, but their source code is carefully written to show good Qt
+ programming practices. You can launch any of these programs from the
+ \l{Examples and Demos Launcher} application.
+
+ These examples are ordered by functional area, but many examples often
+ use features from many parts of Qt to highlight one area in particular.
+ If you are new to Qt, you should probably start by going through the
+ \l{Tutorials} before you have a look at the
+ \l{mainwindows/application}{Application} example.
+
+ In addition to the examples and the tutorial, Qt includes a
+ \l{Qt Demonstrations}{selection of demos} that deliberately show off
+ Qt's features. You might want to look at these as well.
+
+ \table
+ \row
+ \o{2,1} \l{Widgets Examples}{\bold Widgets}
+ \o{2,1} \l{Dialog Examples}{\bold Dialogs}
+ \row
+ \i \image widget-examples.png
+ \i
+ Qt comes with a large range of standard widgets that users of modern
+ applications have come to expect. You can also develop your own custom
+ widgets and controls, and use them alongside standard widgets.
+
+ It is even possible to provide custom styles and themes for widgets that can
+ be used to change the appearance of standard widgets and appropriately
+ written custom widgets.
+
+ \i \image dialog-examples.png Dialogs
+ \i
+ Qt includes standard dialogs for many common operations, such as file
+ selection, printing, and color selection.
+
+ Custom dialogs can also be created for specialized modal or modeless
+ interactions with users.
+
+ \row
+ \o{2,1} \l{Main Window Examples}{\bold{Main Windows}}
+ \o{2,1} \l{Layout Examples}{\bold Layouts}
+
+ \row
+ \i \image mainwindow-examples.png MainWindows
+ \i All the standard features of application main windows are provided by Qt.
+
+ Main windows can have pull down menus, tool bars, and dock windows. These
+ separate forms of user input are unified in an integrated action system that
+ also supports keyboard shortcuts and accelerator keys in menu items.
+
+ \i \image layout-examples.png Layouts
+ \i
+ Qt uses a layout-based approach to widget management. Widgets are arranged in
+ the optimal positions in windows based on simple layout rules, leading to a
+ consistent look and feel.
+
+ Custom layouts can be used to provide more control over the positions and
+ sizes of child widgets.
+
+ \row
+ \o{2,1} \l{Item Views Examples}{\bold{Item Views}}
+ \o{2,1} \l{Graphics View Examples}{\bold{Graphics View}}
+ \row
+ \o \image itemview-examples.png ItemViews
+ \o
+ Item views are widgets that typically display data sets. Qt 4's model/view
+ framework lets you handle large data sets by separating the underlying data
+ from the way it is represented to the user, and provides support for
+ customized rendering through the use of delegates.
+
+ \o \image graphicsview-examples.png GraphicsView
+ \o
+ Qt is provided with a comprehensive canvas through the GraphicsView
+ classes.
+
+ \row
+ \o{2,1} \l{Painting Examples}{\bold{Painting}}
+ \o{2,1} \l{Rich Text Examples}{\bold{Rich Text}}
+ \row
+ \o \image painting-examples.png Painting
+ \o
+ Qt's painting system is able to render vector graphics, images, and outline
+ font-based text with sub-pixel accuracy accuracy using anti-aliasing to
+ improve rendering quality.
+
+ \o \image richtext-examples.png RichText
+ \o
+ Qt provides powerful document-oriented rich text engine that supports Unicode
+ and right-to-left scripts. Documents can be manipulated using a cursor-based
+ API, and their contents can be imported and exported as both HTML and in a
+ custom XML format.
+
+ \row
+ \o{2,1} \l{Desktop Examples}{\bold Desktop}
+ \o{2,1} \l{Drag and Drop Examples}{\bold{Drag and Drop}}
+ \row
+ \o \image desktop-examples.png
+ \o
+ Qt provides features to enable applications to integrate with the user's
+ preferred desktop environment.
+
+ Features such as system tray icons, access to the desktop widget, and
+ support for desktop services can be used to improve the appearance of
+ applications and take advantage of underlying desktop facilities.
+
+ \o \image draganddrop-examples.png DragAndDrop
+ \o
+ Qt supports native drag and drop on all platforms via an extensible
+ MIME-based system that enables applications to send data to each other in the
+ most appropriate formats.
+
+ Drag and drop can also be implemented for internal use by applications.
+
+ \row
+ \o{2,1} \l{Threading and Concurrent Programming Examples}{\bold{Threading and Concurrent Programming}}
+ \o{2,1} \l{Tools Examples}{\bold{Tools}}
+ \row
+ \o \image thread-examples.png
+ \o
+ Qt 4 makes it easier than ever to write multithreaded applications. More
+ classes have been made usable from non-GUI threads, and the signals and slots
+ mechanism can now be used to communicate between threads.
+
+ The QtConcurrent namespace includes a collection of classes and functions
+ for straightforward concurrent programming.
+
+ \o \image tool-examples.png Tools
+ \o
+ Qt is equipped with a range of capable tool classes, from containers and
+ iterators to classes for string handling and manipulation.
+
+ Other classes provide application infrastructure support, handling plugin
+ loading and managing configuration files.
+
+ \row
+ \o{2,1} \l{Network Examples}{\bold{Network}}
+ \o{2,1} \l{Inter-Process Communication Examples}{\bold{Inter-Process Communication}}
+ \row
+ \o \image network-examples.png Network
+ \o
+ Qt is provided with an extensive set of network classes to support both
+ client-based and server side network programming.
+
+ \o \image ipc-examples.png IPC
+ \o
+
+ \row
+ \o{2,1} \l{OpenGL Examples}{\bold OpenGL}
+ \o{2,1} \l{Multimedia Examples}{\bold{Multimedia Framework}}
+ \row
+ \o \image opengl-examples.png OpenGL
+ \o
+ Qt provides support for integration with OpenGL implementations on all
+ platforms, giving developers the opportunity to display hardware accelerated
+ 3D graphics alongside a more conventional user interface.
+
+ \o \image phonon-examples.png
+ \o
+ Qt provides low-level audio support on linux,windows and mac platforms by default and
+ an audio plugin API to allow developers to implement there own audio support for
+ custom devices and platforms.
+
+ The Phonon Multimedia Framework brings multimedia support to Qt applications.
+
+ \row
+ \o{2,1} \l{SQL Examples}{\bold{SQL}}
+ \o{2,1} \l{XML Examples}{\bold{XML}}
+ \row
+ \o \image sql-examples.png SQL
+ \o
+ Qt provides extensive database interoperability, with support for products
+ from both open source and proprietary vendors.
+
+ SQL support is integrated with Qt's model/view architecture, making it easier
+ to provide GUI integration for your database applications.
+
+ \o \image xml-examples.png XML
+ \o
+ XML parsing and handling is supported through SAX and DOM compliant APIs
+ as well as streaming classes.
+
+ The XQuery/XPath and XML Schema engines in the QtXmlPatterns modules
+ provide classes for querying XML files and custom data models.
+
+ \row
+ \o{2,1} \l{Qt Designer Examples}{\bold{Qt Designer}}
+ \o{2,1} \l{UiTools Examples}{\bold UiTools}
+ \row
+ \o \image designer-examples.png Designer
+ \o
+ Qt Designer is a capable graphical user interface designer that lets you
+ create and configure forms without writing code. GUIs created with
+ Qt Designer can be compiled into an application or created at run-time.
+
+ \o \image uitools-examples.png UiTools
+ \o
+
+ \row
+ \o{2,1} \l{Qt Linguist Examples}{\bold{Qt Linguist}}
+ \o{2,1} \l{Qt Script Examples}{\bold{Qt Script}}
+ \row
+ \o \image linguist-examples.png QtLinguist
+ \o
+ Internationalization is a core feature of Qt.
+
+ \o \image qtscript-examples.png
+ \o
+ Qt is provided with a powerful embedded scripting environment through the QtScript
+ classes.
+
+ \row
+ \o{2,1} \l{WebKit Examples}{\bold WebKit}
+ \o{2,1} \l{Help System Examples}{\bold{Help System}}
+ \row
+ \o \image webkit-examples.png
+ \o
+ Qt provides an integrated Web browser component based on WebKit, the popular
+ open source browser engine.
+
+ \o \image assistant-examples.png HelpSystem
+ \o
+ Support for interactive help is provided by the Qt Assistant application.
+ Developers can take advantages of the facilities it offers to display
+ specially-prepared documentation to users of their applications.
+
+ \row
+ \o{2,1} \l{State Machine Examples}{\bold{State Machine}}
+ \o{2,1} \l{Animation Framework Examples}{\bold{Animation Framework}}
+ \row
+ \o \image statemachine-examples.png
+ \o
+ Qt provides a powerful hierarchical finite state machine through the Qt State
+ Machine classes.
+
+ \o \image animation-examples.png
+ \o
+
+ \row
+ \o{2,1} \l{Qt for Embedded Linux Examples}{\bold{Qt for Embedded Linux}}
+ \o{2,1} \l{ActiveQt Examples}{\bold ActiveQt}
+ \row
+ \o \image qt-embedded-examples.png
+ \o
+ Systems with limited resources, specialized hardware, and small
+ screens require special attention.
+
+ \o \image activeqt-examples.png ActiveQt
+ \o
+
+ \row
+ \o{2,1} \l{D-Bus Examples}{\bold{D-Bus}}
+ \o{2,1} \l{Qt Quarterly}{\bold{Qt Quarterly}}
+ \row
+ \o \image dbus-examples.png D-Bus
+ \o
+
+ \o \image qq-thumbnail.png QtQuarterly
+ \o
+ One more valuable source for examples and explanations of Qt
+ features is the archive of the \l {Qt Quarterly}.
+
+ \endtable
+
+\omit
+ In the list below, examples marked with an asterisk (*) are fully
+ documented. Eventually, all the examples will be fully documented,
+ but sometimes we include an example before we have time to write
+ about it.
+\endomit
+*/
+
+/*!
+ \page examples-widgets.html
+ \title Widgets Examples
+
+ \contentspage Qt Examples
+ \nextpage Dialog Examples
+
+ \image widget-examples.png
+
+ Qt comes with a large range of standard widgets that users of modern
+ applications have come to expect.
+
+ You can also develop your own custom widgets and controls, and use them
+ alongside standard widgets.
+
+ It is even possible to provide custom styles and themes for widgets that can
+ be used to change the appearance of standard widgets and appropriately
+ written custom widgets.
+
+ \list
+ \o \l{widgets/analogclock}{Analog Clock}\raisedaster
+ \o \l{widgets/calculator}{Calculator}\raisedaster
+ \o \l{widgets/calendarwidget}{Calendar Widget}\raisedaster
+ \o \l{widgets/charactermap}{Character Map}\raisedaster
+ \o \l{widgets/codeeditor}{Code Editor}\raisedaster
+ \o \l{widgets/digitalclock}{Digital Clock}\raisedaster
+ \o \l{widgets/groupbox}{Group Box}\raisedaster
+ \o \l{widgets/icons}{Icons}\raisedaster
+ \o \l{widgets/imageviewer}{Image Viewer}\raisedaster
+ \o \l{widgets/lineedits}{Line Edits}\raisedaster
+ \o \l{widgets/movie}{Movie}
+ \o \l{widgets/scribble}{Scribble}\raisedaster
+ \o \l{widgets/shapedclock}{Shaped Clock}\raisedaster
+ \o \l{widgets/sliders}{Sliders}\raisedaster
+ \o \l{widgets/spinboxes}{Spin Boxes}\raisedaster
+ \o \l{widgets/styles}{Styles}\raisedaster
+ \o \l{widgets/stylesheet}{Style Sheet}\raisedaster
+ \o \l{widgets/tablet}{Tablet}\raisedaster
+ \o \l{widgets/tetrix}{Tetrix}\raisedaster
+ \o \l{widgets/tooltips}{Tooltips}\raisedaster
+ \o \l{widgets/wiggly}{Wiggly}\raisedaster
+ \o \l{widgets/windowflags}{Window Flags}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-dialogs.html
+ \title Dialog Examples
+
+ \previouspage Widgets Examples
+ \contentspage Qt Examples
+ \nextpage Main Window Examples
+
+ \image dialog-examples.png
+
+ Qt includes standard dialogs for many common operations, such as file
+ selection, printing, and color selection.
+
+ Custom dialogs can also be created for specialized modal or modeless
+ interactions with users.
+
+ \list
+ \o \l{dialogs/classwizard}{Class Wizard}\raisedaster
+ \o \l{dialogs/configdialog}{Config Dialog}
+ \o \l{dialogs/extension}{Extension}\raisedaster
+ \o \l{dialogs/findfiles}{Find Files}\raisedaster
+ \o \l{dialogs/licensewizard}{License Wizard}\raisedaster
+ \o \l{dialogs/standarddialogs}{Standard Dialogs}
+ \o \l{dialogs/tabdialog}{Tab Dialog}\raisedaster
+ \o \l{dialogs/trivialwizard}{Trivial Wizard}
+ \endlist
+*/
+
+/*!
+ \page examples-mainwindow.html
+ \title Main Window Examples
+
+ \previouspage Dialog Examples
+ \contentspage Qt Examples
+ \nextpage Layout Examples
+
+ \image mainwindow-examples.png
+
+ All the standard features of application main windows are provided by Qt.
+
+ Main windows can have pull down menus, tool bars, and dock windows. These
+ separate forms of user input are unified in an integrated action system that
+ also supports keyboard shortcuts and accelerator keys in menu items.
+
+ \list
+ \o \l{mainwindows/application}{Application}\raisedaster
+ \o \l{mainwindows/dockwidgets}{Dock Widgets}\raisedaster
+ \o \l{mainwindows/mdi}{MDI}
+ \o \l{mainwindows/menus}{Menus}\raisedaster
+ \o \l{mainwindows/recentfiles}{Recent Files}
+ \o \l{mainwindows/sdi}{SDI}
+ \endlist
+*/
+
+/*!
+ \page examples-layouts.html
+ \title Layout Examples
+
+ \previouspage Main Window Examples
+ \contentspage Qt Examples
+ \nextpage Item Views Examples
+
+ \image layout-examples.png
+
+ Qt uses a layout-based approach to widget management. Widgets are arranged in
+ the optimal positions in windows based on simple layout rules, leading to a
+ consistent look and feel.
+
+ Custom layouts can be used to provide more control over the positions and
+ sizes of child widgets.
+
+ \list
+ \o \l{layouts/basiclayouts}{Basic Layouts}\raisedaster
+ \o \l{layouts/borderlayout}{Border Layout}
+ \o \l{layouts/dynamiclayouts}{Dynamic Layouts}
+ \o \l{layouts/flowlayout}{Flow Layout}
+ \endlist
+*/
+
+/*!
+ \page examples-itemviews.html
+ \title Item Views Examples
+
+ \previouspage Layout Examples
+ \contentspage Qt Examples
+ \nextpage Graphics View Examples
+
+ \image itemview-examples.png
+
+ Item views are widgets that typically display data sets. Qt 4's model/view
+ framework lets you handle large data sets by separating the underlying data
+ from the way it is represented to the user, and provides support for
+ customized rendering through the use of delegates.
+
+ \list
+ \o \l{itemviews/addressbook}{Address Book}\raisedaster
+ \o \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model}
+ \o \l{itemviews/chart}{Chart}
+ \o \l{itemviews/coloreditorfactory}{Color Editor Factory}\raisedaster
+ \o \l{itemviews/combowidgetmapper}{Combo Widget Mapper}\raisedaster
+ \o \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model}\raisedaster
+ \o \l{itemviews/dirview}{Dir View}
+ \o \l{itemviews/editabletreemodel}{Editable Tree Model}\raisedaster
+ \o \l{itemviews/fetchmore}{Fetch More}\raisedaster
+ \o \l{itemviews/frozencolumn}{Frozen Column}\raisedaster
+ \o \l{itemviews/pixelator}{Pixelator}\raisedaster
+ \o \l{itemviews/puzzle}{Puzzle}
+ \o \l{itemviews/simpledommodel}{Simple DOM Model}\raisedaster
+ \o \l{itemviews/simpletreemodel}{Simple Tree Model}\raisedaster
+ \o \l{itemviews/simplewidgetmapper}{Simple Widget Mapper}\raisedaster
+ \o \l{itemviews/spinboxdelegate}{Spin Box Delegate}\raisedaster
+ \o \l{itemviews/stardelegate}{Star Delegate}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-graphicsview.html
+ \title Graphics View Examples
+
+ \previouspage Item Views Examples
+ \contentspage Qt Examples
+ \nextpage Painting Examples
+
+ \image graphicsview-examples.png
+
+ Qt is provided with a comprehensive canvas through the GraphicsView
+ classes.
+
+ These examples demonstrate the fundamental aspects of canvas programming
+ with Qt.
+
+ \list
+ \o \l{graphicsview/collidingmice}{Colliding Mice}\raisedaster
+ \o \l{graphicsview/diagramscene}{Diagram Scene}\raisedaster
+ \o \l{graphicsview/dragdroprobot}{Drag and Drop Robot}
+ \o \l{graphicsview/elasticnodes}{Elastic Nodes}
+ \o \l{graphicsview/portedasteroids}{Ported Asteroids}
+ \o \l{graphicsview/portedcanvas}{Ported Canvas}
+ \endlist
+*/
+
+/*!
+ \page examples-painting.html
+ \title Painting Examples
+
+ \previouspage Graphics View Examples
+ \contentspage Qt Examples
+ \nextpage Rich Text Examples
+
+ \image painting-examples.png
+
+ Qt's painting system is able to render vector graphics, images, and outline
+ font-based text with sub-pixel accuracy accuracy using anti-aliasing to
+ improve rendering quality.
+
+ These examples show the most common techniques that are used when painting
+ with Qt, from basic concepts such as drawing simple primitives to the use of
+ transformations.
+
+ \list
+ \o \l{painting/basicdrawing}{Basic Drawing}\raisedaster
+ \o \l{painting/concentriccircles}{Concentric Circles}\raisedaster
+ \o \l{painting/fontsampler}{Font Sampler}
+ \o \l{painting/imagecomposition}{Image Composition}\raisedaster
+ \o \l{painting/painterpaths}{Painter Paths}\raisedaster
+ \o \l{painting/svggenerator}{SVG Generator}\raisedaster
+ \o \l{painting/svgviewer}{SVG Viewer}
+ \o \l{painting/transformations}{Transformations}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-richtext.html
+ \title Rich Text Examples
+
+ \previouspage Painting Examples
+ \contentspage Qt Examples
+ \nextpage Desktop Examples
+
+ \image richtext-examples.png
+
+ Qt provides powerful document-oriented rich text engine that supports Unicode
+ and right-to-left scripts. Documents can be manipulated using a cursor-based
+ API, and their contents can be imported and exported as both HTML and in a
+ custom XML format.
+
+ \list
+ \o \l{richtext/calendar}{Calendar}\raisedaster
+ \o \l{richtext/orderform}{Order Form}\raisedaster
+ \o \l{richtext/syntaxhighlighter}{Syntax Highlighter}\raisedaster
+ \o \l{richtext/textobject}{Text Object}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-desktop.html
+ \title Desktop Examples
+
+ \previouspage Rich Text Examples
+ \contentspage Qt Examples
+ \nextpage Drag and Drop Examples
+
+ \image desktop-examples.png
+
+ Qt provides features to enable applications to integrate with the user's
+ preferred desktop environment.
+
+ Features such as system tray icons, access to the desktop widget, and
+ support for desktop services can be used to improve the appearance of
+ applications and take advantage of underlying desktop facilities.
+
+ \list
+ \o \l{desktop/screenshot}{Screenshot}\raisedaster
+ \o \l{desktop/systray}{System Tray}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-draganddrop.html
+ \title Drag and Drop Examples
+
+ \previouspage Desktop Examples
+ \contentspage Qt Examples
+ \nextpage Threading and Concurrent Programming Examples
+
+ \image draganddrop-examples.png
+
+ Qt supports native drag and drop on all platforms via an extensible
+ MIME-based system that enables applications to send data to each other in the
+ most appropriate formats.
+
+ Drag and drop can also be implemented for internal use by applications.
+
+ \list
+ \o \l{draganddrop/delayedencoding}{Delayed Encoding}\raisedaster
+ \o \l{draganddrop/draggableicons}{Draggable Icons}
+ \o \l{draganddrop/draggabletext}{Draggable Text}
+ \o \l{draganddrop/dropsite}{Drop Site}
+ \o \l{draganddrop/fridgemagnets}{Fridge Magnets}\raisedaster
+ \o \l{draganddrop/puzzle}{Drag and Drop Puzzle}
+ \endlist
+*/
+
+/*!
+ \page examples-threadandconcurrent.html
+ \title Threading and Concurrent Programming Examples
+
+ \previouspage Drag and Drop Examples
+ \contentspage Qt Examples
+ \nextpage Tools Examples
+
+ \image thread-examples.png
+
+ Qt 4 makes it easier than ever to write multithreaded applications. More
+ classes have been made usable from non-GUI threads, and the signals and slots
+ mechanism can now be used to communicate between threads.
+
+ Additionally, it is now possible to move objects between threads.
+
+ \list
+ \o \l{threads/queuedcustomtype}{Queued Custom Type}\raisedaster
+ \o \l{threads/mandelbrot}{Mandelbrot}\raisedaster
+ \o \l{threads/semaphores}{Semaphores}\raisedaster
+ \o \l{threads/waitconditions}{Wait Conditions}\raisedaster
+ \endlist
+
+ The QtConcurrent namespace includes a collection of classes and functions
+ for straightforward concurrent programming.
+
+ These examples show how to apply the basic techniques of concurrent
+ programming to simple problems.
+
+ \list
+ \o \l{qtconcurrent/imagescaling}{QtConcurrent Asynchronous Image Scaling}
+ \o \l{qtconcurrent/map}{QtConcurrent Map}
+ \o \l{qtconcurrent/progressdialog}{QtConcurrent Progress Dialog}
+ \o \l{qtconcurrent/runfunction}{QtConcurrent Run Function}
+ \o \l{qtconcurrent/wordcount}{QtConcurrent Word Count}
+ \endlist
+*/
+
+/*!
+ \page examples.tools.html
+ \title Tools Examples
+
+ \previouspage Threading and Concurrent Programming Examples
+ \contentspage Qt Examples
+ \nextpage Network Examples
+
+ \image tool-examples.png
+
+ Qt is equipped with a range of capable tool classes, from containers and
+ iterators to classes for string handling and manipulation.
+
+ Other classes provide application infrastructure support, handling plugin
+ loading and managing configuration files.
+
+ \list
+ \o \l{tools/codecs}{Codecs}
+ \o \l{tools/completer}{Completer}\raisedaster
+ \o \l{tools/customcompleter}{Custom Completer}\raisedaster
+ \o \l{tools/customtype}{Custom Type}\raisedaster
+ \o \l{tools/customtypesending}{Custom Type Sending}\raisedaster
+ \o \l{tools/echoplugin}{Echo Plugin}\raisedaster
+ \o \l{tools/i18n}{I18N}
+ \o \l{tools/plugandpaint}{Plug & Paint}\raisedaster
+ \o Plug & Paint Plugins: \l{tools/plugandpaintplugins/basictools}{Basic Tools}\raisedaster
+ and \l{tools/plugandpaintplugins/extrafilters}{Extra Filters}\raisedaster
+ \o \l{tools/regexp}{RegExp}
+ \o \l{tools/settingseditor}{Settings Editor}
+ \o \l{tools/styleplugin}{Style Plugin}\raisedaster
+ \o \l{tools/treemodelcompleter}{Tree Model Completer}\raisedaster
+ \o \l{tools/undoframework}{Undo Framework}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-network.html
+ \title Network Examples
+
+ \previouspage Tools Examples
+ \contentspage Qt Examples
+ \nextpage Inter-Process Communication Examples
+
+ \image network-examples.png
+
+ Qt is provided with an extensive set of network classes to support both
+ client-based and server side network programming.
+
+ These examples demonstrate the fundamental aspects of network programming
+ with Qt.
+
+ \list
+ \o \l{network/blockingfortuneclient}{Blocking Fortune Client}\raisedaster
+ \o \l{network/broadcastreceiver}{Broadcast Receiver}
+ \o \l{network/broadcastsender}{Broadcast Sender}
+ \o \l{network/network-chat}{Network Chat}
+ \o \l{network/fortuneclient}{Fortune Client}\raisedaster
+ \o \l{network/fortuneserver}{Fortune Server}\raisedaster
+ \o \l{network/ftp}{FTP}\raisedaster
+ \o \l{network/http}{HTTP}
+ \o \l{network/loopback}{Loopback}
+ \o \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster
+ \o \l{network/torrent}{Torrent}
+ \o \l{network/googlesuggest}{Google Suggest}
+ \endlist
+*/
+
+/*!
+ \page examples-ipc.html
+ \title Inter-Process Communication Examples
+
+ \previouspage Network Examples
+ \contentspage Qt Examples
+ \nextpage OpenGL Examples
+
+ \image ipc-examples.png
+
+ \list
+ \o \l{ipc/localfortuneclient}{Local Fortune Client}\raisedaster
+ \o \l{ipc/localfortuneserver}{Local Fortune Server}\raisedaster
+ \o \l{ipc/sharedmemory}{Shared Memory}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-opengl.html
+ \title OpenGL Examples
+
+ \previouspage Inter-Process Communication Examples
+ \contentspage Qt Examples
+ \nextpage Multimedia Examples
+
+ \image opengl-examples.png
+
+ Qt provides support for integration with OpenGL implementations on all
+ platforms, giving developers the opportunity to display hardware accelerated
+ 3D graphics alongside a more conventional user interface.
+
+ These examples demonstrate the basic techniques used to take advantage of
+ OpenGL in Qt applications.
+
+ \list
+ \o \l{opengl/2dpainting}{2D Painting}\raisedaster
+ \o \l{opengl/framebufferobject}{Framebuffer Object}
+ \o \l{opengl/framebufferobject2}{Framebuffer Object 2}
+ \o \l{opengl/grabber}{Grabber}
+ \o \l{opengl/hellogl}{Hello GL}\raisedaster
+ \o \l{opengl/overpainting}{Overpainting}\raisedaster
+ \o \l{opengl/pbuffers}{Pixel Buffers}
+ \o \l{opengl/pbuffers2}{Pixel Buffers 2}
+ \o \l{opengl/samplebuffers}{Sample Buffers}
+ \o \l{opengl/textures}{Textures}
+ \endlist
+*/
+
+/*!
+ \page examples-multimedia.html
+ \title Multimedia Examples
+
+ \previouspage OpenGL Examples
+ \contentspage Qt Examples
+ \nextpage SQL Examples
+
+ \image phonon-examples.png
+
+ \section1 Multimedia
+
+ Qt provides low-level audio support on linux,windows and mac platforms by default and
+ an audio plugin API to allow developers to implement there own audio support for
+ custom devices and platforms.
+
+ These examples demonstrate the basic techniques used to take advantage of
+ Audio API in Qt applications.
+
+ \list
+ \o \l{multimedia/audio/audiodevices}{Audio Devices}
+ \o \l{multimedia/audio/audiooutput}{Audio Output}
+ \o \l{multimedia/audio/audioinput}{Audio Input}
+ \endlist
+
+ \section1 Phonon
+
+ The Phonon Multimedia Framework brings multimedia support to Qt applications.
+
+ The examples and demonstrations provided show how to play music and movies
+ using the Phonon API.
+
+ \list
+ \o \l{phonon/capabilities}{Capabilities}\raisedaster
+ \o \l{phonon/musicplayer}{Music Player}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-sql.html
+ \title SQL Examples
+
+ \previouspage Multimedia Examples
+ \contentspage Qt Examples
+ \nextpage XML Examples
+
+ \image sql-examples.png
+
+ Qt provides extensive database interoperability, with support for products
+ from both open source and proprietary vendors.
+
+ SQL support is integrated with Qt's model/view architecture, making it easier
+ to provide GUI integration for your database applications.
+
+ \list
+ \o \l{sql/cachedtable}{Cached Table}\raisedaster
+ \o \l{sql/drilldown}{Drill Down}\raisedaster
+ \o \l{sql/querymodel}{Query Model}
+ \o \l{sql/relationaltablemodel}{Relational Table Model}
+ \o \l{sql/tablemodel}{Table Model}
+ \o \l{sql/sqlwidgetmapper}{SQL Widget Mapper}\raisedaster
+ \endlist
+*/
+
+
+/*!
+ \page examples-xml.html
+ \title XML Examples
+
+ \previouspage SQL Examples
+ \contentspage Qt Examples
+ \nextpage Qt Designer Examples
+
+ \image xml-examples.png XML
+
+ XML parsing and handling is supported through SAX and DOM compliant APIs
+ as well as streaming classes.
+
+ \list
+ \o \l{xml/dombookmarks}{DOM Bookmarks}
+ \o \l{xml/saxbookmarks}{SAX Bookmarks}
+ \o \l{xml/streambookmarks}{QXmlStream Bookmarks}\raisedaster
+ \o \l{xml/rsslisting}{RSS-Listing}
+ \o \l{xml/xmlstreamlint}{XML Stream Lint Example}\raisedaster
+ \endlist
+
+ The XQuery/XPath and XML Schema engines in the QtXmlPatterns modules
+ provide classes for querying XML files and custom data models.
+
+ \list
+ \o \l{xmlpatterns/recipes}{Recipes}
+ \o \l{xmlpatterns/filetree}{File System Example}
+ \o \l{xmlpatterns/qobjectxmlmodel}{QObject XML Model Example}
+ \o \l{xmlpatterns/xquery/globalVariables}{C++ Source Code Analyzer Example}
+ \o \l{xmlpatterns/trafficinfo}{Traffic Info}\raisedaster
+ \o \l{xmlpatterns/schema}{XML Schema Validation}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-designer.html
+ \title Qt Designer Examples
+
+ \previouspage XML Examples
+ \contentspage Qt Examples
+ \nextpage UiTools Examples
+
+ \image designer-examples.png QtDesigner
+
+ Qt Designer is a capable graphical user interface designer that lets you
+ create and configure forms without writing code. GUIs created with
+ Qt Designer can be compiled into an application or created at run-time.
+
+ \list
+ \o \l{designer/calculatorbuilder}{Calculator Builder}\raisedaster
+ \o \l{designer/calculatorform}{Calculator Form}\raisedaster
+ \o \l{designer/customwidgetplugin}{Custom Widget Plugin}\raisedaster
+ \o \l{designer/taskmenuextension}{Task Menu Extension}\raisedaster
+ \o \l{designer/containerextension}{Container Extension}\raisedaster
+ \o \l{designer/worldtimeclockbuilder}{World Time Clock Builder}\raisedaster
+ \o \l{designer/worldtimeclockplugin}{World Time Clock Plugin}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-uitools.html
+ \title UiTools Examples
+
+ \previouspage Qt Designer Examples
+ \contentspage Qt Examples
+ \nextpage Qt Linguist Examples
+
+ \image uitools-examples.png UiTools
+
+ \list
+ \o \l{uitools/multipleinheritance}{Multiple Inheritance}\raisedaster
+ \o \l{uitools/textfinder}{Text Finder}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-linguist.html
+ \title Qt Linguist Examples
+
+ \previouspage UiTools Examples
+ \contentspage Qt Examples
+ \nextpage Qt Script Examples
+
+ \image linguist-examples.png
+
+ Internationalization is a core feature of Qt. These examples show how to
+ access translation and localization facilities at run-time.
+
+ \list
+ \o \l{linguist/hellotr}{Hello tr()}\raisedaster
+ \o \l{linguist/arrowpad}{Arrow Pad}\raisedaster
+ \o \l{linguist/trollprint}{Troll Print}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-script.html
+ \title Qt Script Examples
+
+ \previouspage Qt Linguist Examples
+ \contentspage Qt Examples
+ \nextpage WebKit Examples
+
+ \image qtscript-examples.png QtScript
+
+ Qt is provided with a powerful embedded scripting environment through the QtScript
+ classes.
+
+ These examples demonstrate the fundamental aspects of scripting applications
+ with Qt.
+
+ \list
+ \o \l{script/calculator}{Calculator}\raisedaster
+ \o \l{script/context2d}{Context2D}\raisedaster
+ \o \l{script/defaultprototypes}{Default Prototypes}\raisedaster
+ \o \l{script/helloscript}{Hello Script}\raisedaster
+ \o \l{script/qstetrix}{Qt Script Tetrix}\raisedaster
+ \o \l{script/customclass}{Custom Script Class}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-webkit.html
+ \title WebKit Examples
+
+ \previouspage Qt Script Examples
+ \contentspage Qt Examples
+ \nextpage Help System Examples
+
+ \image webkit-examples.png WebKit
+
+ Qt provides an integrated Web browser component based on WebKit, the popular
+ open source browser engine.
+
+ These examples and demonstrations show a range of different uses for WebKit,
+ from displaying Web pages within a Qt user interface to an implementation of
+ a basic function Web browser.
+
+ \list
+ \o \l{webkit/previewer}{Previewer}\raisedaster
+ \o \l{webkit/formextractor}{Form Extractor}
+ \o \l{webkit/googlechat}{Google Chat}
+ \o \l{webkit/fancybrowser}{Fancy Browser}
+ \endlist
+*/
+
+/*!
+ \page examples-helpsystem.html
+ \title Help System Examples
+
+ \previouspage WebKit Examples
+ \contentspage Qt Examples
+ \nextpage State Machine Examples
+
+ \image assistant-examples.png HelpSystem
+
+ Support for interactive help is provided by the Qt Assistant application.
+ Developers can take advantages of the facilities it offers to display
+ specially-prepared documentation to users of their applications.
+
+ \list
+ \o \l{help/simpletextviewer}{Simple Text Viewer}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-statemachine.html
+ \title State Machine Examples
+
+ \previouspage Help System Examples
+ \contentspage Qt Examples
+ \nextpage Animation Framework Examples
+
+ \image statemachine-examples.png StateMachine
+
+ Qt provides a powerful hierarchical finite state machine through the Qt State
+ Machine classes.
+
+ These examples demonstrate the fundamental aspects of implementing
+ Statecharts with Qt.
+
+ \list
+ \o \l{statemachine/eventtransitions}{Event Transitions}\raisedaster
+ \o \l{statemachine/factorial}{Factorial States}\raisedaster
+ \o \l{statemachine/pingpong}{Ping Pong States}\raisedaster
+ \o \l{statemachine/rogue}{Rogue}\raisedaster
+ \o \l{statemachine/trafficlight}{Traffic Light}\raisedaster
+ \o \l{statemachine/twowaybutton}{Two-way Button}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-animation.html
+ \title Animation Framework Examples
+
+ \previouspage State Machine Examples
+ \contentspage Qt Examples
+ \nextpage Qt for Embedded Linux Examples
+
+ \image animation-examples.png Animation
+
+ \list
+ \o \l{animation/moveblocks}{Move Blocks}\raisedaster
+ \o \l{animation/stickman}{Stick man}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-embeddedlinux.html
+ \title Qt for Embedded Linux Examples
+
+ \previouspage Animation Framework Examples
+ \contentspage Qt Examples
+ \nextpage ActiveQt Examples
+
+ \image qt-embedded-examples.png QtEmbedded
+
+ These examples show how to take advantage of features specifically designed
+ for use on systems with limited resources, specialized hardware, and small
+ screens.
+
+ \list
+ \o \l{qws/svgalib}{Accelerated Graphics Driver}\raisedaster
+ \o \l{qws/dbscreen}{Double Buffered Graphics Driver}\raisedaster
+ \o \l{qws/mousecalibration}{Mouse Calibration}\raisedaster
+ \o \l{qws/ahigl}{OpenGL for Embedded Systems}\raisedaster
+ \o \l{qws/simpledecoration}{Simple Decoration}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-activeqt.html
+ \title ActiveQt Examples
+
+ \previouspage Qt for Embedded Linux Examples
+ \contentspage Qt Examples
+ \nextpage D-Bus Examples
+
+ \image activeqt-examples.png ActiveQt
+
+ \list
+ \o \l{activeqt/comapp}{COM App}\raisedaster
+ \o \l{Dot Net Example (ActiveQt)}{Dot Net}\raisedaster
+ \o \l{activeqt/hierarchy}{Hierarchy}\raisedaster
+ \o \l{activeqt/menus}{Menus}\raisedaster
+ \o \l{activeqt/multiple}{Multiple}\raisedaster
+ \o \l{activeqt/opengl}{OpenGL}\raisedaster
+ \o \l{activeqt/qutlook}{Qutlook}\raisedaster
+ \o \l{activeqt/simple}{Simple}\raisedaster
+ \o \l{activeqt/webbrowser}{Web Browser}\raisedaster
+ \o \l{activeqt/wrapper}{Wrapper}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-dbus.html
+ \title D-Bus Examples
+
+ \previouspage ActiveQt Examples
+ \contentspage Qt Examples
+ \nextpage Qt Quarterly
+
+ \list
+ \o \l{dbus/dbus-chat}{Chat}
+ \o \l{dbus/complexpingpong}{Complex Ping Pong}
+ \o \l{dbus/listnames}{List Names}
+ \o \l{dbus/pingpong}{Ping Pong}
+ \o \l{dbus/remotecontrolledcar}{Remote Controlled Car}
+ \endlist
+*/
diff --git a/doc/src/how-to-learn-qt.qdoc b/doc/src/getting-started/how-to-learn-qt.qdoc
index ee23509..2a1e383 100644
--- a/doc/src/how-to-learn-qt.qdoc
+++ b/doc/src/getting-started/how-to-learn-qt.qdoc
@@ -41,9 +41,10 @@
/*!
\page how-to-learn-qt.html
- \brief Links to guides and resources for learning Qt.
\title How to Learn Qt
- \ingroup howto
+ \brief Links to guides and resources for learning Qt.
+
+ \nextpage Tutorials
We assume that you already know C++ and will be using it for Qt
development. See the \l{Qt website} for more information about
@@ -79,10 +80,12 @@
common with your projects. You can also read Qt's source code since
this is supplied.
- \table
- \row \o \inlineimage qtdemo-small.png
- \o \bold{Getting an Overview}
-
+ \table 50%
+ \header
+ \o {2,1} Getting an Overview
+ \row
+ \o \inlineimage qtdemo-small.png
+ \o
If you run the \l{Examples and Demos Launcher}, you'll see many of Qt's
widgets in action.
diff --git a/doc/src/installation.qdoc b/doc/src/getting-started/installation.qdoc
index 139a3ce..10791d8 100644
--- a/doc/src/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -46,8 +46,6 @@
/*!
\group installation
\title Installation
-\ingroup buildsystem
-\ingroup topics
\brief Installing Qt on supported platforms.
The installation procedure is different on each Qt platform.
@@ -677,6 +675,20 @@ in the \l{Qt for Windows CE Requirements} document.
may cause others to be automatically installed. Other distributions may
provide system packages with similar names.
+ \section1 OpenGL Dependencies
+
+ The configure script will autodetect if OpenGL headers and libraries are
+ installed on your system, and if so, it will include the QtOpenGL module
+ in the Qt library.
+
+ If your OpenGL headers or libraries are placed in a non-standard directory,
+ you may need to change the \c QMAKE_INCDIR_OPENGL and/or
+ \c QMAKE_LIBDIR_OPENGL in the config file for your system.
+
+ The QGL documentation assumes that you are familiar with OpenGL
+ programming. If you're new to the subject a good starting point is
+ \l{http://www.opengl.org/}.
+
\section1 Phonon Dependencies
As described in the \l{Phonon Overview}, Phonon uses the GStreamer multimedia
diff --git a/doc/src/known-issues.qdoc b/doc/src/getting-started/known-issues.qdoc
index 87955bd..0a94d86 100644
--- a/doc/src/known-issues.qdoc
+++ b/doc/src/getting-started/known-issues.qdoc
@@ -42,7 +42,7 @@
/*!
\page known-issues.html
\title Known Issues in %VERSION%
- \ingroup platform-notes
+ \ingroup platform-specific
\brief A summary of known issues in Qt %VERSION% at the time of release.
An up-to-date list of known issues with Qt %VERSION% can be found via the
diff --git a/doc/src/getting-started/tutorials.qdoc b/doc/src/getting-started/tutorials.qdoc
new file mode 100644
index 0000000..525b6e4
--- /dev/null
+++ b/doc/src/getting-started/tutorials.qdoc
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page tutorials.html
+ \title Tutorials
+
+ \contentspage How to Learn Qt
+ \nextpage Qt Examples
+
+ \brief Tutorials, guides and overviews to help you learn Qt.
+
+ \nextpage Qt Examples
+
+ A collection of tutorials and "walkthrough" guides are provided with Qt to
+ help new users get started with Qt development. These documents cover a
+ range of topics, from basic use of widgets to step-by-step tutorials that
+ show how an application is put together.
+
+ \table
+ \row
+ \o{2,1} \l{Widgets Tutorial}{\bold Widgets}
+ \o{2,1} \l{Address Book Tutorial}{\bold {Address Book}}
+ \row
+ \o \image widget-examples.png Widgets
+ \o
+ A beginner's guide to getting started with widgets and layouts to create
+ GUI applications.
+
+ \o \image addressbook-tutorial.png AddressBook
+ \o
+ A seven part guide to creating a fully-functioning address book
+ application. This tutorial is also available with
+ \l{Tutoriel "Carnet d'adresses"}{French explanation}.
+
+ \row
+ \o{2,1} \l{A Quick Start to Qt Designer}{\bold{Qt Designer}}
+ \o{2,1} \l{Qt Linguist Manual: Programmers#Tutorials}{\bold {Qt Linguist}}
+ \row
+ \o \image designer-examples.png QtDesigner
+ \o
+ A quick guide through \QD showing the basic steps to create a
+ form with this interactive tool.
+
+ \o \image linguist-examples.png QtLinguist
+ \o
+ A guided tour through the translations process, explaining the
+ tools provided for developers, translators and release managers.
+
+ \row
+ \o{2,1} \l{QTestLib Tutorial}{\bold QTestLib}
+ \o{2,1} \l{qmake Tutorial}{\bold qmake}
+ \row
+ \o{2,1}
+ This tutorial gives a short introduction to how to use some of the
+ features of Qt's unit-testing framework, QTestLib. It is divided into
+ four chapters.
+
+ \o{2,1}
+ This tutorial teaches you how to use \c qmake. We recommend that
+ you read the \l{qmake Manual}{qmake user guide} after completing
+ this tutorial.
+
+ \endtable
+*/
diff --git a/doc/src/groups.qdoc b/doc/src/groups.qdoc
deleted file mode 100644
index 673eff5..0000000
--- a/doc/src/groups.qdoc
+++ /dev/null
@@ -1,487 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group advanced
- \title Advanced Widgets
- \ingroup groups
-
- \brief Advanced GUI widgets such as tab widgets and progress bars.
-
- These classes provide more complex user interface widgets (controls).
-
-*/
-
-/*!
- \group animation
- \ingroup groups
-
- \title Animation Framework
- \brief Classes for animations, states and transitions.
-
- These classes provide a framework for creating both simple and complex
- animations. \l{The Animation Framework} also provides states and animated
- transitions, making it easy to create animated stateful forms.
-*/
-
-/*!
- \group abstractwidgets
- \title Abstract Widget Classes
- \ingroup groups
-
- \brief Abstract widget classes usable through subclassing.
-
- These classes are abstract widgets; they are generally not usable in
- themselves, but provide functionality that can be used by inheriting
- these classes.
-
-*/
-
-/*!
- \group accessibility
- \title Accessibility Classes
- \ingroup groups
- \ingroup topics
-
- \brief Classes that provide support for accessibility.
-
- Accessible applications are able to be used by users who cannot use
- conventional means of interaction. These classes provide support for
- accessible applications.
-
-*/
-
-/*!
- \group appearance
- \title Widget Appearance and Style
- \ingroup groups
-
- \brief Appearance customization with styles, fonts, colors etc.
-
- These classes are used to customize an application's appearance and
- style.
-
-*/
-
-/*!
- \group application
- \title Main Window and Related Classes
- \ingroup groups
-
- \brief Everything you need for a typical modern main application window,
- including menus, toolbars, workspace, etc.
-
- These classes provide everything you need for a typical modern main
- application window, like the main window itself, menu and tool bars,
- a status bar, etc.
-
-*/
-
-
-/*!
- \group basicwidgets
- \title Basic Widgets
- \ingroup groups
-
- \brief Basic GUI widgets such as buttons, comboboxes and scroll bars.
-
- These basic widgets (controls) are designed for direct use.
- There are also some \l{Abstract Widget Classes} that are designed for
- subclassing, and some more complex \l{Advanced Widgets}.
-
-*/
-
-
-/*!
- \group database
- \title Database Classes
- \ingroup groups
-
- \brief Database related classes, e.g. for SQL databases.
-
- These classes provide access to SQL databases.
-*/
-
-
-/*!
- \group dialogs
- \title Standard Dialog Classes
- \ingroup groups
-
- \brief Ready-made dialogs for file, font, color selection and more.
-
- These classes are complex widgets, composed of simpler widgets; dialog
- boxes, generally.
-*/
-
-/*!
- \group desktop
- \title Desktop Environment Classes
- \ingroup groups
-
- \brief Classes for interacting with the user's desktop environment.
-
- These classes provide ways to interact with the user's desktop environment and
- take advantage of common services.
-*/
-
-/*!
- \group draganddrop
- \title Drag And Drop Classes
- \ingroup groups
-
- \brief Classes dealing with drag and drop and mime type encoding and decoding.
-
- These classes deal with drag and drop and the necessary mime type
- encoding and decoding. See also \link dnd.html Drag and Drop with
- Qt. \endlink
-*/
-
-/*!
- \group environment
- \title Environment Classes
- \ingroup groups
-
- \brief Classes providing various global services such as event handling,
- access to system settings and internationalization.
-
- These classes providing various global services to your application such as
- event handling, access to system settings, internationalization, etc.
-
-*/
-
-/*!
- \group events
- \title Event Classes
- \ingroup groups
-
- \brief Classes used to create and handle events.
-
- These classes are used to create and handle events.
-
- For more information see the \link object.html Object model\endlink
- and \link signalsandslots.html Signals and Slots\endlink.
-*/
-
-/*!
- \group geomanagement
- \title Layout Classes
- \ingroup groups
-
- \brief Classes handling automatic resizing and moving of widgets, for
- composing complex dialogs.
-
- These classes provide automatic geometry (layout) management of widgets.
-
-*/
-
-/*!
- \group graphicsview-api
- \title Graphics View Classes
- \ingroup groups
-
- \brief Classes in the Graphics View framework for interactive applications.
-
- These classes are provided by \l{The Graphics View Framework} for interactive
- applications and are part of a larger collection of classes related to
- \l{Multimedia, Graphics and Printing}.
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial users.
-*/
-
-/*!
- \group helpsystem
- \title Help System
- \ingroup groups
-
- \brief Classes used to provide online-help for applications.
-
- \keyword help system
-
- These classes provide for all forms of online-help in your application,
- with three levels of detail:
-
- \list 1
- \o Tool Tips and Status Bar message - flyweight help, extremely brief,
- entirely integrated in the user interface, requiring little
- or no user interaction to invoke.
- \o What's This? - lightweight, but can be
- a three-paragraph explanation.
- \o Online Help - can encompass any amount of information,
- but is typically slower to call up, somewhat separated
- from the user's work, and often users feel that using online
- help is a digression from their real task.
- \endlist
-
-*/
-
-
-/*!
- \group io
- \title Input/Output and Networking
- \ingroup groups
-
- \brief Classes providing file input and output along with directory and
- network handling.
-
- These classes are used to handle input and output to and from external
- devices, processes, files etc. as well as manipulating files and directories.
-*/
-
-/*!
- \group misc
- \title Miscellaneous Classes
- \ingroup groups
-
- \brief Various other useful classes.
-
- These classes are useful classes not fitting into any other category.
-
-*/
-
-
-/*!
- \group model-view
- \title Model/View Classes
- \ingroup groups
-
- \brief Classes that use the model/view design pattern.
-
- These classes use the model/view design pattern in which the
- underlying data (in the model) is kept separate from the way the data
- is presented and manipulated by the user (in the view). See also
- \link model-view-programming.html Model/View Programming\endlink.
-
-*/
-
-/*!
- \group multimedia
- \title Multimedia, Graphics and Printing
- \ingroup groups
-
- \brief Classes that provide support for graphics (2D, and with OpenGL, 3D),
- image encoding, decoding, and manipulation, sound, animation,
- printing, etc.
-
- These classes provide support for graphics (2D, and with OpenGL, 3D),
- image encoding, decoding, and manipulation, sound, animation, printing
- etc.
-
- See also this introduction to the \link coordsys.html Qt
- coordinate system. \endlink
-
-*/
-
-/*!
- \group objectmodel
- \title Object Model
- \ingroup groups
-
- \brief The Qt GUI toolkit's underlying object model.
-
- These classes form the basis of the \l{Qt Object Model}.
-
-*/
-
-/*!
- \group organizers
- \title Organizers
- \ingroup groups
-
- \brief User interface organizers such as splitters, tab bars, button groups, etc.
-
- These classes are used to organize and group GUI primitives into more
- complex applications or dialogs.
-
-*/
-
-
-/*!
- \group plugins
- \title Plugin Classes
- \ingroup groups
-
- \brief Plugin related classes.
-
- These classes deal with shared libraries, (e.g. .so and DLL files),
- and with Qt plugins.
-
- See the \link plugins-howto.html plugins documentation\endlink.
-
- See also the \l{ActiveQt framework} for Windows.
-
-*/
-
-/*!
- \group qws
- \title Qt for Embedded Linux Classes
- \ingroup groups
-
- \ingroup qt-embedded-linux
- \brief Classes that are specific to Qt for Embedded Linux.
-
- These classes are relevant to \l{Qt for Embedded Linux} users.
-*/
-
-/*!
- \group ssl
- \title Secure Sockets Layer (SSL) Classes
- \ingroup groups
-
- \brief Classes for secure communication over network sockets.
- \keyword SSL
-
- The classes below provide support for secure network communication using
- the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} to
- perform encryption and protocol handling.
-
- See the \l{General Qt Requirements} page for information about the
- versions of OpenSSL that are known to work with Qt.
-
- \note Due to import and export restrictions in some parts of the world, we
- are unable to supply the OpenSSL Toolkit with Qt packages. Developers wishing
- to use SSL communication in their deployed applications should either ensure
- that their users have the appropriate libraries installed, or they should
- consult a suitably qualified legal professional to ensure that applications
- using code from the OpenSSL project are correctly certified for import
- and export in relevant regions of the world.
-
- When the QtNetwork module is built with SSL support, the library is linked
- against OpenSSL in a way that requires OpenSSL license compliance.
-*/
-
-/*!
- \group text
- \title Text Processing Classes
- \ingroup groups
- \ingroup text-processing
-
- \brief Classes for text processing. (See also \l{XML Classes}.)
-
- These classes are relevant to text processing. See also the
- \l{Rich Text Processing} overview and the
- \l{XML classes}.
-*/
-
-/*!
- \group thread
- \title Threading Classes
- \ingroup groups
-
- \brief Classes that provide threading support.
-
- These classes are relevant to threaded applications. See
- \l{Thread Support in Qt} for an overview of the features
- Qt provides to help with multithreaded programming.
-*/
-
-
-/*!
- \group time
- \title Date and Time Classes
- \ingroup groups
-
- \brief Classes for handling date and time.
-
- These classes provide system-independent date and time abstractions.
-
-*/
-
-/*!
- \group tools
- \title Non-GUI Classes
- \ingroup groups
-
- \brief Collection classes such as list, queue, stack and string, along
- with other classes that can be used without needing QApplication.
-
- The non-GUI classes are general-purpose collection and string classes
- that may be used independently of the GUI classes.
-
- In particular, these classes do not depend on QApplication at all,
- and so can be used in non-GUI programs.
-
-*/
-
-/*!
- \group xml-tools
- \title XML Classes
- \ingroup groups
-
- \brief Classes that support XML, via, for example DOM and SAX.
-
- These classes are relevant to XML users.
-*/
-
-/*!
- \group script
- \title Scripting Classes
- \ingroup groups
- \ingroup scripting
-
- \brief Qt Script-related classes and overviews.
-
- These classes are relevant to Qt Script users.
-*/
-
-/*!
- \group scripttools
- \title Script Tools
- \ingroup groups
- \ingroup scripting
-
- \brief Classes for managing and debugging scripts.
-
- These classes are relevant to developers who are working with Qt Script's
- debugging features.
-*/
-
-/*!
- \group statemachine
- \ingroup groups
-
- \title State Machine Classes
- \brief Classes for constructing and executing state graphs.
-
- These classes are provided by \l{The State Machine Framework} for creating
- event-driven state machines.
-*/
diff --git a/doc/src/accelerators.qdoc b/doc/src/howtos/accelerators.qdoc
index 4376730..bb1b2d7 100644
--- a/doc/src/accelerators.qdoc
+++ b/doc/src/howtos/accelerators.qdoc
@@ -42,7 +42,8 @@
/*!
\page accelerators.html
\title Standard Accelerator Keys
- \ingroup gui-programming
+
+ \ingroup best-practices
Applications invariably need to define accelerator keys for actions.
Qt fully supports accelerators, for example with \l Q3Accel::shortcutKey().
diff --git a/doc/src/appicon.qdoc b/doc/src/howtos/appicon.qdoc
index 901b854..a664ade 100644
--- a/doc/src/appicon.qdoc
+++ b/doc/src/howtos/appicon.qdoc
@@ -39,22 +39,11 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Qt Application Icon Usage Documentation.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page appicon.html
\title Setting the Application Icon
- \ingroup gui-programming
+
+ \ingroup best-practices
The application icon, typically displayed in the top-left corner of an
application's top-level windows, is set by calling the
diff --git a/doc/src/custom-types.qdoc b/doc/src/howtos/custom-types.qdoc
index aa7d386..997c8bc 100644
--- a/doc/src/custom-types.qdoc
+++ b/doc/src/howtos/custom-types.qdoc
@@ -42,9 +42,10 @@
/*!
\page custom-types.html
\title Creating Custom Qt Types
- \ingroup architecture
\brief How to create and register new types with Qt.
+ \ingroup best-practices
+
\tableofcontents
\section1 Overview
diff --git a/doc/src/guibooks.qdoc b/doc/src/howtos/guibooks.qdoc
index 3e89738..0a7200e 100644
--- a/doc/src/guibooks.qdoc
+++ b/doc/src/howtos/guibooks.qdoc
@@ -41,9 +41,8 @@
/*!
\page guibooks.html
-
\title Books about GUI Design
- \ingroup gui-programming
+ \ingroup best-practices
This is not a comprehensive list -- there are many other books worth
buying. Here we mention just a few user interface books that don't
diff --git a/doc/src/qtopenvg.qdoc b/doc/src/howtos/openvg.qdoc
index 9f0df58..f2049ce 100644
--- a/doc/src/qtopenvg.qdoc
+++ b/doc/src/howtos/openvg.qdoc
@@ -40,28 +40,26 @@
****************************************************************************/
/*!
- \module QtOpenVG
- \title QtOpenVG Module
+ \page openvg.html
+ \title OpenVG Rendering in Qt
\since 4.6
- \contentspage Qt's Modules
- \previouspage QtOpenGL
- \nextpage QtScript
- \ingroup modules
+ \ingroup best-practices
- \brief The QtOpenVG module provides support classes for OpenVG painting.
-
- \tableofcontents
+ \brief Efficient rendering on embedded devices with OpenVG
OpenVG is a standard API from the
\l{http://www.khronos.org/openvg}{Khronos Group} for accelerated
2D vector graphics that is appearing in an increasing number of
- embedded devices.
+ embedded devices. The QtOpenVG plugin provides support for OpenVG
+ painting.
OpenVG is optimized for 2D vector operations, and closely matches
- the functionality in QPainter. It can therefore be an excellent
+ the functionality in QPainter. It can therefore be an excellent
substitute for the default raster-based QPaintEngine on hardware
that supports OpenVG.
+ \tableofcontents
+
\section1 Building Qt with OpenVG support
OpenVG support can be enabled by passing the \c{-openvg} option
@@ -319,6 +317,6 @@
QPixmap, and will not be accelerated. This issue may be addressed in
a future version of the engine.
- ShivaVG support is highly experimental and limited to Qt/X11. It is
+ ShivaVG support is highly experimental and limited to Qt/X11. It is
provided as an example of how to integrate a non-EGL engine.
- */
+*/
diff --git a/doc/src/qtdesigner.qdoc b/doc/src/howtos/qtdesigner.qdoc
index 00af297..ae84f93 100644
--- a/doc/src/qtdesigner.qdoc
+++ b/doc/src/howtos/qtdesigner.qdoc
@@ -40,33 +40,9 @@
****************************************************************************/
/*!
- \module QtDesigner
- \title QtDesigner Module
- \contentspage Qt's Modules
- \previouspage Qt3Support
- \nextpage QtUiTools
- \ingroup modules
-
- \brief The QtDesigner module provides classes that allow you to
- create your own custom widget plugins for Qt Designer, and classes
- that enable you to access Qt Designer's components.
-
- In addition, the QFormBuilder class provides the possibility of
- constructing user interfaces from UI files at run-time.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 0
-
- To link against the module, add this line to your \c qmake .pro
- file:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 1
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
- users.
+ \page qtdesigner-components.html
+ \title Creating and Using Components for Qt Designer
+ \ingroup best-practices
\tableofcontents
diff --git a/doc/src/howtos/restoring-geometry.qdoc b/doc/src/howtos/restoring-geometry.qdoc
new file mode 100644
index 0000000..c9e6f4f
--- /dev/null
+++ b/doc/src/howtos/restoring-geometry.qdoc
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page restoring-geometry.html
+ \title Restoring a Window's Geometry
+
+ \ingroup best-practices
+
+ This document describes how to save and restore a window's
+ geometry using the geometry properties. On Windows, this is
+ basically storing the result of QWidget::geometry() and calling
+ QWidget::setGeometry() in the next session before calling
+ \l{QWidget::show()}{show()}.
+
+ On X11, this won't work because an invisible window doesn't have
+ a frame yet. The window manager will decorate the window later.
+ When this happens, the window shifts towards the bottom/right
+ corner of the screen depending on the size of the decoration frame.
+ Although X provides a way to avoid this shift, most window managers
+ fail to implement this feature.
+
+ Since version 4.2, Qt provides functions that saves and restores a
+ window's geometry and state for you. QWidget::saveGeometry()
+ saves the window geometry and maximized/fullscreen state, while
+ QWidget::restoreGeometry() restores it. The restore function also
+ checks if the restored geometry is outside the available screen
+ geometry, and modifies it as appropriate if it is.
+
+ If those functions are not available or cannot be used, then a
+ workaround is to call \l{QWidget::setGeometry()}{setGeometry()}
+ after \l{QWidget::show()}{show()}. This has the two disadvantages
+ that the widget appears at a wrong place for a millisecond
+ (results in flashing) and that currently only every second window
+ manager gets it right. A safer solution is to store both
+ \l{QWidget::pos()}{pos()} and \l{QWidget::size()}{size()} and to
+ restore the geometry using \l{QWidget::resize()} and
+ \l{QWidget::move()}{move()} before calling
+ \l{QWidget::show()}{show()}, as demonstrated in the following
+ code snippets (from the \l{mainwindows/application}{Application}
+ example):
+
+ \snippet examples/mainwindows/application/mainwindow.cpp 35
+ \codeline
+ \snippet examples/mainwindows/application/mainwindow.cpp 38
+
+ This method works on Windows, Mac OS X, and most X11 window
+ managers.
+*/
diff --git a/doc/src/session.qdoc b/doc/src/howtos/session.qdoc
index 3e4bff3..8e51b6b 100644
--- a/doc/src/session.qdoc
+++ b/doc/src/howtos/session.qdoc
@@ -42,7 +42,8 @@
/*!
\page session.html
\title Session Management
- \ingroup gui-programming
+
+ \ingroup best-practices
A \e session is a group of running applications, each of which has a
particular state. The session is controlled by a service called the \e
diff --git a/doc/src/sharedlibrary.qdoc b/doc/src/howtos/sharedlibrary.qdoc
index de27c43..1e108a6 100644
--- a/doc/src/sharedlibrary.qdoc
+++ b/doc/src/howtos/sharedlibrary.qdoc
@@ -39,22 +39,12 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
- \group deployment
\page sharedlibrary.html
- \ingroup buildsystem
-
\title Creating Shared Libraries
+
+ \ingroup best-practices
+
The following sections list certain things that should be taken into
account when creating shared libraries.
diff --git a/doc/src/timers.qdoc b/doc/src/howtos/timers.qdoc
index c1e0023..ed46b76 100644
--- a/doc/src/timers.qdoc
+++ b/doc/src/howtos/timers.qdoc
@@ -42,9 +42,10 @@
/*!
\page timers.html
\title Timers
- \ingroup architecture
\brief How to use timers in your application.
+ \ingroup best-practices
+
QObject, the base class of all Qt objects, provides the basic
timer support in Qt. With QObject::startTimer(), you start a
timer with an interval in milliseconds as argument. The function
diff --git a/doc/src/unix-signal-handlers.qdoc b/doc/src/howtos/unix-signal-handlers.qdoc
index cecd3f9..4e123bc 100644
--- a/doc/src/unix-signal-handlers.qdoc
+++ b/doc/src/howtos/unix-signal-handlers.qdoc
@@ -42,9 +42,11 @@
/*!
\page unix-signals.html
\title Calling Qt Functions From Unix Signal Handlers
- \ingroup platform-notes
\brief You can't. But don't despair, there is a way...
+ \ingroup platform-specific
+ \ingroup best-practices
+
You \e can't call Qt functions from Unix signal handlers. The
standard POSIX rule applies: You can only call async-signal-safe
functions from signal handlers. See \l
diff --git a/doc/src/images/activeqt-examples.png b/doc/src/images/activeqt-examples.png
new file mode 100644
index 0000000..bda8eba
--- /dev/null
+++ b/doc/src/images/activeqt-examples.png
Binary files differ
diff --git a/doc/src/images/animation-examples.png b/doc/src/images/animation-examples.png
new file mode 100644
index 0000000..bfc5990
--- /dev/null
+++ b/doc/src/images/animation-examples.png
Binary files differ
diff --git a/doc/src/images/ipc-examples.png b/doc/src/images/ipc-examples.png
new file mode 100644
index 0000000..815aed3
--- /dev/null
+++ b/doc/src/images/ipc-examples.png
Binary files differ
diff --git a/doc/src/images/qq-thumbnail.png b/doc/src/images/qq-thumbnail.png
new file mode 100644
index 0000000..295ef13
--- /dev/null
+++ b/doc/src/images/qq-thumbnail.png
Binary files differ
diff --git a/doc/src/images/statemachine-examples.png b/doc/src/images/statemachine-examples.png
new file mode 100644
index 0000000..b2ec66e
--- /dev/null
+++ b/doc/src/images/statemachine-examples.png
Binary files differ
diff --git a/doc/src/images/webkit-examples.png b/doc/src/images/webkit-examples.png
index 55bbd92..23ddf1c 100644
--- a/doc/src/images/webkit-examples.png
+++ b/doc/src/images/webkit-examples.png
Binary files differ
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index 962e63d..b0695b8 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -41,195 +41,124 @@
/*!
\page index.html
-
\keyword Qt Reference Documentation
- \if defined(qtopiacore)
- \if defined(opensourceedition)
- \title Qt for Embedded Linux Reference Documentation (Open Source Edition)
- \endif
-
- \if defined(desktoplightedition)
- \title Qt for Embedded Linux Reference Documentation (GUI Framework Edition)
- \endif
-
- \if defined(desktopedition)
- \title Qt for Embedded Linux Reference Documentation (Full Framework Edition)
- \endif
-
- \if !defined(opensourceedition) \
- && !defined(desktoplightedition) \
- && !defined(desktopedition)
- \title Qt for Embedded Linux Reference Documentation
- \endif
-
- \subtitle Qt for Embedded Linux
+ \if defined(opensourceedition)
+ \title Qt Reference Documentation (Open Source Edition)
\endif
- \if !defined(qtopiacore)
- \if defined(opensourceedition)
- \title Qt Reference Documentation (Open Source Edition)
- \endif
-
- \if defined(desktoplightedition)
- \title Qt Reference Documentation (GUI Framework Edition)
- \endif
- \if defined(desktopedition)
- \title Qt Reference Documentation (Full Framework Edition)
- \endif
+ \if defined(desktoplightedition)
+ \title Qt Reference Documentation (GUI Framework Edition)
+ \endif
- \if !defined(opensourceedition) \
- && !defined(desktoplightedition) \
- && !defined(desktopedition)
- \title Qt Reference Documentation
- \endif
+ \if defined(desktopedition)
+ \title Qt Reference Documentation (Full Framework Edition)
\endif
+ \if !defined(opensourceedition) \
+ && !defined(desktoplightedition) \
+ && !defined(desktopedition)
+ \title Qt Reference Documentation
+ \endif
+
\raw HTML
- <table cellpadding="2" cellspacing="1" border="0" width="100%" class="indextable">
+ <table cellpadding="2" cellspacing="1" border="0" width="95%" class="indextable" align="center">
<tr>
<th class="titleheader" width="33%">
- Getting Started
- </th>
+ Getting Started</th>
<th class="titleheader" width="33%">
- General
- </th>
+ API Reference</th>
<th class="titleheader" width="33%">
- Developer Resources
- </th>
+ Working with Qt</th>
</tr>
<tr>
<td valign="top">
<ul>
- <li><strong><a href="qt4-5-intro.html">What's New in Qt 4.5</a></strong></li>
- <li><a href="how-to-learn-qt.html">How to Learn Qt</a></li>
- <li><a href="installation.html">Installation</a></li>
- <li><a href="tutorials.html">Tutorials</a>, <a href="examples.html">Examples</a> and <a href="demos.html">Demonstrations</a></li>
- <li><a href="porting4.html">Porting from Qt 3 to Qt 4</a></li>
+ <li><a href="installation.html">Installation</a> and <a href="how-to-learn-qt.html">First Steps with Qt</a></li>
+ <li><a href="tutorials.html">Tutorials</a> and <a href="examples.html">Examples</a></li>
+ <li><a href="demos.html">Demonstrations</a> and <a href="qt4-5-intro.html"><b>New in Qt 4.5</b></a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="http://qt.nokia.com/products">About Qt</a></li>
- <li><a href="http://qt.nokia.com/about">About Us</a></li>
- <li><a href="commercialeditions.html">Commercial Edition</a></li>
- <li><a href="opensourceedition.html">Open Source Edition</a></li>
- <li><a href="supported-platforms.html">Supported Platforms</a></li>
+ <li><a href="classlists.html">C++ Class Documentation</a></li>
+ <li><a href="frameworks-technologies.html">Frameworks and Technologies</a></li>
+ <li><a href="best-practices.html">How-To&#39;s and Best Practices</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="http://qt.nokia.com/developer/faqs/">Frequently Asked Questions</a></li>
- <li><a href="http://qt.nokia.com/developer/community/">Qt Community Web Sites</a></li>
- <li><a href="http://qt.nokia.com/doc/qq/">Qt Quarterly</a></li>
- <li><a href="bughowto.html">How to Report a Bug</a></li>
- <li><a href="http://qt.nokia.com/developer/">Other Online Resources</a></li>
+ <li><a href="developing-with-qt.html">Cross-Platform Development with Qt</a></li>
+ <li><a href="qtestlib-manual.html">Unit Testing</a> and <a href="debug.html">Debugging</a></li>
+ <li><a href="deployment.html">Deploying Qt Applications</a></li>
</ul>
</td>
</tr>
<tr>
- <th class="titleheader">
- API Reference
- </th>
- <th class="titleheader">
- Core Features
- </th>
- <th class="titleheader">
- Key Technologies
- </th>
+ <th class="largeheader">
+ Fundamentals</th>
+ <th class="largeheader">
+ User Interface Design</th>
+ <th class="largeheader">
+ Technologies</th>
</tr>
<tr>
- <td valign="top">
+ <td valign="top" class="largeindex">
<ul>
- <li><a href="classes.html">All Classes</a></li>
- <li><a href="mainclasses.html">Main Classes</a></li>
- <li><a href="groups.html">Grouped Classes</a></li>
- <li><a href="annotated.html">Annotated Classes</a></li>
- <li><a href="modules.html">Qt Classes by Module</a></li>
- <li><a href="namespaces.html">All Namespaces</a></li>
- <li><a href="hierarchy.html">Inheritance Hierarchy</a></li>
- <li><a href="functions.html">All Functions</a></li>
- <li><a href="qt-embedded.html">Qt for Embedded Platforms</a></li>
- <li><a href="overviews.html">All Overviews and HOWTOs</a></li>
- <li><a href="gallery.html">Qt Widget Gallery</a></li>
- <li><a href="qtglobal.html">Qt Global Declarations</a></li>
+ <li><a href="object.html">The Qt Object Model</a></li>
+ <li><a href="eventsandfilters.html">Event System</a></li>
+ <li><a href="threads.html">Threading</a></li>
+ <li><a href="internationalization.html">Internationalization</a></li>
+ <li><a href="platform-specific.html">Platform Specifics</a></li>
</ul>
</td>
- <td valign="top">
+ <td valign="top" class="largeindex">
<ul>
- <li><a href="signalsandslots.html">Signals and Slots</a></li>
- <li><a href="object.html">Object Model</a></li>
- <li><a href="layout.html">Layout Management</a></li>
- <li><a href="qt4-mainwindow.html">Main Window Architecture</a></li>
- <li><a href="paintsystem.html">Paint System</a></li>
- <li><a href="graphicsview.html">Graphics View</a></li>
- <li><a href="accessible.html">Accessibility</a></li>
- <li><a href="containers.html">Tool and Container Classes</a></li>
- <li><a href="richtext.html">Rich Text Processing</a></li>
- <li><a href="i18n.html">Internationalization</a></li>
- <li><a href="plugins-howto.html">Plugin System</a></li>
- <li><a href="threads.html">Multithreaded Programming</a></li>
- <li><a href="ipc.html">Inter-Process Communication (IPC)</a></li>
- <li><a href="qtestlib-manual.html">Unit Testing Framework</a></li>
+ <li><a href="widgets-and-layouts.html">Widgets and Layouts</a></li>
+ <li><a href="application-windows.html">Application Windows</a></li>
+ <li><a href="paintsystem.html">Painting and Printing</a></li>
+ <li><a href="graphicsview.html">Canvas UI with Graphics View</a></li>
+ <li><a href="webintegration.html">Integrating Web Content</a></li>
</ul>
</td>
- <td valign="top">
+ <td valign="top" class="largeindex">
<ul>
- <li><a href="model-view-programming.html">Model/View Programming</a></li>
- <li><a href="stylesheet.html">Style Sheets</a></li>
- <li><a href="qthelp.html">Help Module</a></li>
- <li><a href="qtnetwork.html">Network Module</a></li>
- <li><a href="qtopengl.html">OpenGL Module</a></li>
- <li><a href="qtopenvg.html">OpenVG Module</a></li>
- <li><a href="qtscript.html">Script Module</a></li>
- <li><a href="qtsql.html">SQL Module</a></li>
- <li><a href="qtsvg.html">SVG Module</a></li>
- <li><a href="qtwebkit.html">WebKit Integration</a></li>
- <li><a href="qtxml.html">XML Module</a></li>
- <li><a href="qtxmlpatterns.html">XML Patterns: XQuery &amp; XPath</a></li>
- <li><a href="phonon-module.html">Phonon Multimedia Framework</a></li>
- <li><a href="qtscripttools.html">Script Tools Module</a></li>
- <li><a href="activeqt.html">ActiveQt Framework</a></li>
+ <li><a href="io.html">Input/Output</a> and <a href="resources.html">Resources</a></li>
+ <li><a href="network-programming.html">Network Programming</a></li>
+ <li><a href="sql-programming.html">SQL Development</a></li>
+ <li><a href="xml-processing.html">XML Processing</a></li>
+ <li><a href="scripting.html">Scripting</a></li>
</ul>
</td>
</tr>
<tr>
<th class="titleheader">
- Add-ons &amp; Services
- </th>
+ Community and Resources</th>
<th class="titleheader">
- Tools
- </th>
+ Contributing</th>
<th class="titleheader">
- Licenses &amp; Credits
- </th>
+ Licenses</th>
</tr>
<tr>
<td valign="top">
<ul>
- <li><a href="http://qt.nokia.com/products/add-on-products">Qt Solutions</a></li>
- <li><a href="http://qt.nokia.com/products/appdev">Partner Add-ons</a></li>
- <li><a href="http://qt-apps.org">Third-Party Qt Components (qt-apps.org)</a></li>
- <li><a href="http://qt.nokia.com/support-services/support-services/">Support</a></li>
- <li><a href="http://qt.nokia.com/support-services/training/">Training</a></li>
+ <li><a href="http://qt.nokia.com/developer">Online Resources</a></li>
+ <li><a href="http://labs.qt.nokia.com/blogs">Developer Blogs</a></li>
+ <li><a href="http://qt.nokia.com/support-services">Support</a>, <a href="http://qt.nokia.com/services-partners">Training and Services</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="designer-manual.html">Qt Designer</a></li>
- <li><a href="assistant-manual.html">Qt Assistant</a></li>
- <li><a href="linguist-manual.html">Qt Linguist</a></li>
- <li><a href="qmake-manual.html">qmake</a></li>
- <li><a href="qttools.html">All Tools</a></li>
+ <li><a href="bughowto.html">Report Bugs and Make Suggestions</a></li>
+ <li><a href="http://qt.gitorious.org">Open Repository</a></li>
+ <li><a href="credits.html">Credits</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="gpl.html">GNU GPL</a>, <a href="lgpl.html">GNU LGPL</a></li>
- <li><a href="3rdparty.html">Third-Party Licenses Used in Qt</a></li>
- <li><a href="licenses.html">Other Licenses Used in Qt</a></li>
- <li><a href="trademarks.html">Trademark Information</a></li>
- <li><a href="credits.html">Credits</a></li>
+ <li><a href="gpl.html">GNU GPL</a>, <a href="lgpl.html">GNU LGPL</a></li>
+ <li><a href="commercialeditions.html">Commercial Editions</a></li>
+ <li><a href="licensing.html">Licenses Used in Qt</a></li>
</ul>
</td>
</tr>
diff --git a/doc/src/i18n.qdoc b/doc/src/internationalization/i18n.qdoc
index 22f82be..25c35c7 100644
--- a/doc/src/i18n.qdoc
+++ b/doc/src/internationalization/i18n.qdoc
@@ -41,9 +41,12 @@
/*!
\group i18n
- \title Internationalization with Qt
- \ingroup topics
+ \title Qt Classes for Internationalization
+*/
+/*!
+ \page internationalization.html
+ \title Internationalization with Qt
\brief Information about Qt's support for internationalization and multiple languages.
\keyword internationalization
@@ -53,6 +56,14 @@
the application usable by people in countries other than one's own.
\tableofcontents
+
+ \section1 Relevant Qt Classes and APIs
+
+ These classes support internationalizing of Qt applications.
+
+ \annotatedlist i18n
+
+ \section1 Languages and Writing Systems
In some cases internationalization is simple, for example, making a US
application accessible to Australian or British users may require
@@ -501,8 +512,4 @@
For details on Mac-specific translation, refer to the Qt/Mac Specific Issues
document \l{Qt for Mac OS X - Specific Issues#Translating the Application Menu and Native Dialogs}{here}.
-
- \section1 Relevant Qt Classes
-
- These classes are relevant to internationalizing Qt applications.
*/
diff --git a/doc/src/linguist-manual.qdoc b/doc/src/internationalization/linguist-manual.qdoc
index a67d65a..a67d65a 100644
--- a/doc/src/linguist-manual.qdoc
+++ b/doc/src/internationalization/linguist-manual.qdoc
diff --git a/doc/src/legal/editions.qdoc b/doc/src/legal/editions.qdoc
index cf1534d..f29322d 100644
--- a/doc/src/legal/editions.qdoc
+++ b/doc/src/legal/editions.qdoc
@@ -39,18 +39,6 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Documentation of Qt editions.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page editions.html
\title Qt Editions
diff --git a/doc/src/legal/licenses.qdoc b/doc/src/legal/licenses.qdoc
index 7414667..7a15f31 100644
--- a/doc/src/legal/licenses.qdoc
+++ b/doc/src/legal/licenses.qdoc
@@ -42,7 +42,6 @@
/*!
\group licensing
\title Licensing Information
- \ingroup topics
\brief Information about licenses and licensing issues.
These documents include information about Qt's licenses and the licenses
diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc
index 9b0e58a..2fc6eaf 100644
--- a/doc/src/modules.qdoc
+++ b/doc/src/modules.qdoc
@@ -44,15 +44,17 @@
\title Qt's Modules
\startpage index.html Qt Reference Documentation
\nextpage QtCore
+
+ \ingroup classlists
Qt 4 consists of several modules, each of which lives in a
separate library.
- Modules for general software development:
-
\table 80%
+ \header \o {2,1} \bold{Modules for general software development}
\row \o \l{QtCore} \o Core non-graphical classes used by other modules
\row \o \l{QtGui} \o Graphical user interface (GUI) components
+ \row \o \l{QtMultimedia} \o Classes for low-level multimedia functionality
\row \o \l{QtNetwork} \o Classes for network programming
\row \o \l{QtOpenGL} \o OpenGL support classes
\row \o \l{QtOpenVG} \o OpenVG support classes
@@ -65,30 +67,15 @@
\row \o \l{QtXmlPatterns} \o An XQuery & XPath engine for XML and custom data models
\row \o \l{Phonon Module}{Phonon} \o Multimedia framework classes
\row \o \l{Qt3Support} \o Qt 3 compatibility classes
- \endtable
-
- Modules for working with Qt's tools:
-
- \table 80%
+ \header \o {2,1} \bold{Modules for working with Qt's tools}
\row \o \l{QtDesigner} \o Classes for extending \QD
\row \o \l{QtUiTools} \o Classes for handling \QD forms in applications
\row \o \l{QtHelp} \o Classes for online help
- \row \o \l{QtAssistant} \o Support for online help
\row \o \l{QtTest} \o Tool classes for unit testing
- \endtable
-
- The following extension modules are available in the \l{Qt
- Commercial Editions} on Windows:
-
- \table 80%
+ \header \o {2,1} \bold{Modules for Windows developers}
\row \o \l{QAxContainer} \o Extension for accessing ActiveX controls
\row \o \l{QAxServer} \o Extension for writing ActiveX servers
- \endtable
-
- The following extension module is available in all \l {Qt Editions}
- on Unix platforms:
-
- \table 80%
+ \header \o {2,1} \bold{Modules for Unix developers}
\row \o \l{QtDBus} \o Classes for Inter-Process Communication using the D-Bus
\endtable
@@ -98,9 +85,928 @@
\snippet doc/src/snippets/code/doc_src_modules.qdoc 0
- On Windows, if you do not use \l qmake, the \l{Visual Studio Integration}
- available to \l{Qt Commercial Editions}{commercial licensees}, or other
- build tools such as CMake, you also need to link against the \c qtmain library.
+ On Windows, if you do not use \l qmake
+ or other build tools such as CMake, you also need to link against
+ the \c qtmain library.
\sa {Qt's Classes}
*/
+
+/*!
+ \module QtCore
+ \title QtCore Module
+ \contentspage Qt's Modules
+ \previouspage Qt's Modules
+ \nextpage QtGui
+ \ingroup modules
+
+ \keyword QtCore
+
+ \brief The QtCore module contains core non-GUI functionality.
+
+ All other Qt modules rely on this module. To include the
+ definitions of the module's classes, use the following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtcore.qdoc 0
+
+ The QtCore module is part of all \l{Qt editions}.
+*/
+
+
+/*!
+ \module QtGui
+ \title QtGui Module
+ \contentspage Qt's Modules
+ \previouspage QtCore
+ \nextpage QtNetwork
+ \ingroup modules
+
+ \brief The QtGui module extends QtCore with GUI functionality.
+
+ To include the definitions of both modules' classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtgui.qdoc 0
+
+ The QtGui module is part of the \l{Qt GUI Framework Edition},
+ the \l{Qt Full Framework Edition}, and the \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtMultimedia
+ \title QtMultimedia Module
+ \contentspage Qt's Modules
+ \previouspage QtCore
+ \nextpage QtNetwork
+ \ingroup modules
+
+ \brief The QtMultimedia module provides low-level multimedia functionality.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtmultimedia.qdoc 1
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtmultimedia.qdoc 0
+
+ The functionality provided by the \l{Phonon Module} is on a higher level
+ and in many cases more suitable for application developers.
+*/
+
+/*!
+ \module QtNetwork
+ \title QtNetwork Module
+ \contentspage Qt's Modules
+ \previouspage QtMultimedia
+ \nextpage QtOpenGL
+ \ingroup modules
+
+ \brief The QtNetwork module provides classes to make network programming
+ easier and portable.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 1
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 0
+
+ The QtNetwork module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtOpenGL
+ \title QtOpenGL Module
+ \contentspage Qt's Modules
+ \previouspage QtNetwork
+ \nextpage QtOpenVG
+ \ingroup modules
+
+ \brief The QtOpenGL module offers classes that make it easy to
+ use OpenGL in Qt applications.
+
+ OpenGL is a standard API for rendering 3D graphics. OpenGL only
+ deals with 3D rendering and provides little or no support for GUI
+ programming issues. The user interface for an OpenGL application
+ must be created with another toolkit, such as Motif on the X
+ platform, Microsoft Foundation Classes (MFC) under Windows, or Qt
+ on both platforms.
+
+ \note OpenGL is a trademark of Silicon Graphics, Inc. in
+ the United States and other countries.
+
+ The Qt OpenGL module makes it easy to use OpenGL in Qt applications.
+ It provides an OpenGL widget class that can be used just like any
+ other Qt widget, except that it opens an OpenGL display buffer where
+ you can use the OpenGL API to render the contents.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 1
+
+ The Qt OpenGL module is implemented as a platform-independent Qt/C++
+ wrapper around the platform-dependent GLX (version 1.3 or later),
+ WGL, or AGL C APIs. Although the basic functionality provided is very
+ similar to Mark Kilgard's GLUT library, applications using the Qt
+ OpenGL module can take advantage of the whole Qt API for
+ non-OpenGL-specific GUI functionality.
+
+ The QtOpenGL module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}. It is available on Windows, X11, and Mac OS X.
+ \l{Qt for Embedded Linux} supports OpenGL ES (OpenGL for Embedded Systems).
+ To be able to use the OpenGL API in \l{Qt for Embedded Linux}, it must be
+ integrated with the Q Window System (QWS). See the
+ \l{Qt for Embedded Linux and OpenGL} documentation for details.
+*/
+
+/*!
+ \module QtOpenVG
+ \title QtOpenVG Module
+ \since 4.6
+ \contentspage Qt's Modules
+ \previouspage QtOpenGL
+ \nextpage QtScript
+ \ingroup modules
+
+ \brief The QtOpenVG module is a plugin that provides support for
+ OpenVG painting.
+
+ OpenVG is a standard API from the
+ \l{http://www.khronos.org/openvg}{Khronos Group} for accelerated
+ 2D vector graphics that is appearing in an increasing number of
+ embedded devices.
+
+ OpenVG support can be enabled by passing the \c{-openvg} option
+ to configure. It is assumed that the following qmake variables
+ are set to appropriate values in the qmake.conf file for your
+ platform:
+
+ \list
+ \o QMAKE_INCDIR_OPENVG
+ \o QMAKE_LIBDIR_OPENVG
+ \o QMAKE_LIBS_OPENVG
+ \endlist
+
+ Most OpenVG implementations are based on EGL, so the following
+ variables may also need to be set:
+
+ \list
+ \o QMAKE_INCDIR_EGL
+ \o QMAKE_LIBDIR_EGL
+ \o QMAKE_LIBS_EGL
+ \endlist
+
+ See \l{qmake Variable Reference} for more information on these variables.
+
+ Two kinds of OpenVG engines are currently supported: EGL based,
+ and engines built on top of OpenGL such as
+ \l{http://sourceforge.net/projects/shivavg}{ShivaVG}.
+ EGL based engines are preferred.
+
+ Once the graphics system plugin has been built and installed,
+ applications can be run as follows to use the plugin:
+
+ \code
+ app -graphicssystem OpenVG
+ \endcode
+
+ If ShivaVG is being used, then substitute \c ShivaVG instead of
+ \c OpenVG in the line above.
+*/
+
+/*!
+ \module QtScript
+ \title QtScript Module
+ \since 4.3
+ \contentspage Qt's Modules
+ \previouspage QtOpenVG
+ \nextpage QtScriptTools
+ \ingroup modules
+
+ \brief The QtScript module provides classes for making Qt applications scriptable.
+
+ The QtScript module only provides core scripting facilities; the
+ QtScriptTools module provides additional Qt Script-related
+ components that application developers may find useful.
+
+ \tableofcontents
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 1
+
+ The QtScript module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtScriptTools
+ \title QtScriptTools Module
+ \since 4.5
+ \contentspage Qt's Modules
+ \previouspage QtScript
+ \nextpage QtSql
+ \ingroup modules
+
+ \brief The QtScriptTools module provides additional components for applications that use Qt Script.
+
+ \tableofcontents
+
+ \section1 Configuring the Build Process
+
+ Applications that use the Qt Script Tools classes need to
+ be configured to be built against the QtScriptTools module.
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c .pro file:
+
+ \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 1
+
+ The QtScriptTools module is part of the \l{Qt Full Framework Edition} and
+ the \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtSql
+ \title QtSql Module
+ \contentspage Qt's Modules
+ \previouspage QtScript
+ \nextpage QtSvg
+ \ingroup modules
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 1
+
+ The QtSql module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtSvg
+ \title QtSvg Module
+ \since 4.1
+ \contentspage Qt's Modules
+ \previouspage QtSql
+ \nextpage QtWebKit
+ \ingroup modules
+
+ \brief The QtSvg module provides classes for displaying the contents of SVG
+ files.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 1
+
+ The QtSvg module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 License Information
+
+ Some code for arc handling in this module is derived from code with
+ the following license:
+
+ \legalese
+ Copyright 2002 USC/Information Sciences Institute
+
+ Permission to use, copy, modify, distribute, and sell this software
+ and its documentation for any purpose is hereby granted without
+ fee, provided that the above copyright notice appear in all copies
+ and that both that copyright notice and this permission notice
+ appear in supporting documentation, and that the name of
+ Information Sciences Institute not be used in advertising or
+ publicity pertaining to distribution of the software without
+ specific, written prior permission. Information Sciences Institute
+ makes no representations about the suitability of this software for
+ any purpose. It is provided "as is" without express or implied
+ warranty.
+
+ INFORMATION SCIENCES INSTITUTE DISCLAIMS ALL WARRANTIES WITH REGARD
+ TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL INFORMATION SCIENCES
+ INSTITUTE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
+ OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ \endlegalese
+*/
+
+/*!
+ \module QtXml
+ \title QtXml Module
+ \contentspage Qt's Modules
+ \previouspage QtSvg
+ \nextpage QtXmlPatterns
+ \ingroup modules
+
+ \brief The QtXml module provides a stream reader and writer for
+ XML documents, and C++ implementations of SAX and DOM.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 1
+
+ Further XML support is provided by the \l{Qt Solutions} group who
+ provide, for example, classes that support SOAP and MML with the
+ Qt XML classes.
+
+ This module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtXmlPatterns
+ \title QtXmlPatterns Module
+ \since 4.4
+ \contentspage Qt's Modules
+ \previouspage QtXml
+ \nextpage Phonon Module
+ \ingroup modules
+
+ \brief The QtXmlPatterns module provides support for XPath,
+ XQuery, XSLT and XML schema-validation.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 1
+
+ This module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 License Information
+
+ The XML Schema implementation provided by this module contains the \c xml.xsd file
+ (located in \c{src/xmlpatterns/schema/schemas}) which is licensed under the terms
+ given below. This module is always built with XML Schema support enabled.
+
+ \legalese
+ W3C\copyright SOFTWARE NOTICE AND LICENSE
+
+ This license came from: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+ This work (and included software, documentation such as READMEs, or other
+ related items) is being provided by the copyright holders under the following
+ license. By obtaining, using and/or copying this work, you (the licensee)
+ agree that you have read, understood, and will comply with the following
+ terms and conditions.
+
+ Permission to copy, modify, and distribute this software and its
+ documentation, with or without modification, for any purpose and without
+ fee or royalty is hereby granted, provided that you include the following on
+ ALL copies of the software and documentation or portions thereof, including
+ modifications:
+
+ 1. The full text of this NOTICE in a location viewable to users of the
+ redistributed or derivative work.\br
+ 2. Any pre-existing intellectual property disclaimers, notices, or terms
+ and conditions. If none exist, the W3C Software Short Notice should be
+ included (hypertext is preferred, text is permitted)
+ within the body of any redistributed or derivative code.\br
+ 3. Notice of any changes or modifications to the files, including the date
+ changes were made. (We recommend you provide URIs to the location from
+ which the code is derived.)
+
+ THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
+ MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+ LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
+ PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
+ ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+ COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+ CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+ DOCUMENTATION.
+
+ The name and trademarks of copyright holders may NOT be used in
+ advertising or publicity pertaining to the software without specific, written
+ prior permission. Title to copyright in this software and any associated
+ documentation will at all times remain with copyright holders.
+ \endlegalese
+*/
+
+/*!
+ \page phonon-module.html
+ \module Phonon
+ \title Phonon Module
+ \contentspage Qt's Modules
+ \previouspage QtXmlPatterns
+ \nextpage Qt3Support
+ \ingroup modules
+
+ \brief The Phonon module contains namespaces and classes for multimedia functionality.
+
+ \generatelist{classesbymodule Phonon}
+
+ Phonon is a cross-platform multimedia framework that enables the use of
+ audio and video content in Qt applications. The \l{Phonon Overview}
+ document provides an introduction to the architecture and features included
+ in Phonon. The \l{Phonon} namespace contains a list of all classes, functions
+ and namespaces provided by the module.
+
+ Applications that use Phonon's classes need to
+ be configured to be built against the Phonon module.
+ The following declaration in a \c qmake project file ensures that
+ an application is compiled and linked appropriately:
+
+ \snippet doc/src/snippets/code/doc_src_phonon.qdoc 1
+
+ The Phonon module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 Qt Backends
+
+ Qt Backends are currently developed for Phonon version 4.1. The Phonon
+ project has moved on and introduced new features that the Qt Backends do not
+ implement. We have chosen not to document the part of Phonon that we do not
+ support. Any class or function not appearing in our documentation can be
+ considered unsupported.
+
+ \section1 License Information
+
+ Qt Commercial Edition licensees that wish to distribute applications that
+ use the Phonon module need to be aware of their obligations under the
+ GNU Lesser General Public License (LGPL).
+
+ Developers using the Open Source Edition can choose to redistribute
+ the module under the appropriate version of the GNU LGPL; version 2.1
+ for applications and libraries licensed under the GNU GPL version 2,
+ or version 3 for applications and libraries licensed under the GNU
+ GPL version 2.
+
+ \legalese
+ This file is part of the KDE project
+
+ Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org> \BR
+ Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ Contact: Nokia Corporation (qt-info@nokia.com)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ \endlegalese
+*/
+
+/*!
+ \module Qt3Support
+ \title Qt3Support Module
+ \contentspage Qt's Modules
+ \previouspage Phonon Module
+ \nextpage QtDesigner
+ \ingroup modules
+
+ \keyword Qt3Support
+ \brief The Qt3Support module provides classes that ease porting
+ from Qt 3 to Qt 4.
+
+ \warning The classes in this module are intended to be used in
+ intermediate stages of a porting process and are not intended
+ to be used in production code.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 1
+
+ \note Since this module provides compatibility classes for
+ diverse parts of the Qt 3 API, it has dependencies on the QtCore,
+ QtGui, QtNetwork, QtSql, and QtXml modules.
+
+ This module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}. Most classes offered by this module are
+ also part of the \l{Qt GUI Framework Edition}.
+\if defined(opensourceedition) || defined(desktoplightedition)
+ Classes that are not available for \l{Qt GUI Framework Edition}
+ users are marked as such in the class documentation.
+\endif
+
+ \sa {Porting to Qt 4}
+*/
+
+/*!
+ \module QtDesigner
+ \title QtDesigner Module
+ \contentspage Qt's Modules
+ \previouspage Qt3Support
+ \nextpage QtUiTools
+ \ingroup modules
+
+ \brief The QtDesigner module provides classes that allow you to
+ create your own custom widget plugins for Qt Designer, and classes
+ that enable you to access Qt Designer's components.
+
+ In addition, the QFormBuilder class provides the possibility of
+ constructing user interfaces from UI files at run-time.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 0
+
+ To link against the module, add this line to your \c qmake .pro
+ file:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 1
+
+ \note These classes are part of the \l{Open Source Versions of Qt} and
+ \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
+ users.
+*/
+
+/*!
+ \module QtUiTools
+ \title QtUiTools Module
+ \since 4.1
+ \contentspage Qt's Modules
+ \previouspage QtDesigner
+ \nextpage QtHelp
+ \ingroup modules
+
+ \brief The QtUiTools module provides classes to handle forms created
+ with Qt Designer.
+
+ These forms are processed at run-time to produce dynamically-generated
+ user interfaces. In order to generate a form at run-time, a resource
+ file containing a UI file is needed. Applications that use the
+ form handling classes need to be configured to be built against the
+ QtUiTools module. This is done by including the following declaration
+ in a \c qmake project file to ensure that the application is compiled
+ and linked appropriately.
+
+ \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 0
+
+ A form loader object, provided by the QUiLoader class, is used to
+ construct the user interface. This user interface can
+ be retrieved from any QIODevice; for example, a QFile object can be
+ used to obtain a form stored in a project's resources. The
+ QUiLoader::load() function takes the user interface description
+ contained in the file and constructs the form widget.
+
+ To include the definitions of the module's classes, use the following
+ directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 1
+
+ \note These classes are part of the \l{Open Source Versions of Qt} and
+ \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
+ users.
+
+ \sa{Calculator Builder Example}, {World Time Clock Builder Example}
+*/
+
+/*!
+ \module QtHelp
+ \title QtHelp Module
+ \contentspage Qt's Modules
+ \previouspage QtUiTools
+ \nextpage QtTest
+ \ingroup modules
+
+ \brief The QtHelp module provides classes for integrating
+ online documentation in applications.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 1
+
+ These classes are part of the \l{Open Source Versions of Qt} and
+ \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
+ users.
+
+ \section1 License Information
+
+ The QtHelp module uses the CLucene indexing library to provide full-text
+ searching capabilities for Qt Assistant and applications that use the
+ features of QtHelp.
+
+ Qt Commercial Edition licensees that wish to distribute applications that
+ use these features of the QtHelp module need to be aware of their
+ obligations under the GNU Lesser General Public License (LGPL).
+
+ Developers using the Open Source Edition can choose to redistribute
+ the module under the appropriate version of the GNU LGPL; version 2.1
+ for applications and libraries licensed under the GNU GPL version 2,
+ or version 3 for applications and libraries licensed under the GNU
+ GPL version 3.
+
+ \legalese
+ Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team \BR
+ Changes are Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ \endlegalese
+
+ \sa {The Qt Help Framework}
+*/
+
+/*!
+ \module QtTest
+ \title QtTest Module
+ \contentspage Qt's Modules
+ \previouspage QtHelp
+ \nextpage QAxContainer
+ \ingroup modules
+
+ \keyword QtTest
+
+ \brief The QtTest module provides classes for unit testing Qt applications and libraries.
+
+ Applications that use Qt's unit testing classes need to
+ be configured to be built against the QtTest module.
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qttest.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qttest.qdoc 1
+
+ See the \l{QTestLib Manual} for a detailed introduction on how to use
+ Qt's unit testing features with your applications.
+
+ The QtTest module is part of all \l{Qt editions}.
+*/
+
+/*!
+ \module QAxContainer
+ \title QAxContainer Module
+ \contentspage Qt's Modules
+ \previouspage QtTest
+ \nextpage QAxServer
+ \ingroup modules
+
+ \brief The QAxContainer module is a Windows-only extension for
+ accessing ActiveX controls and COM objects.
+
+ \section1 License Information
+
+ The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
+ the \l{GNU Lesser General Public License (LGPL)}, or the
+ \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
+ the following license.
+
+ \legalese
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
+ All rights reserved.
+
+ Contact: Nokia Corporation (qt-info@nokia.com)\br
+
+ You may use this file under the terms of the BSD license as follows:\br
+
+ "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.\br
+ * 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.\br
+ * Neither the name of Nokia Corporation 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."
+ \endlegalese
+*/
+
+/*!
+ \module QAxServer
+ \title QAxServer Module
+ \contentspage Qt's Modules
+ \previouspage QAxContainer
+ \nextpage QtDBus module
+ \ingroup modules
+
+ \brief The QAxServer module is a Windows-only static library that
+ you can use to turn a standard Qt binary into a COM server.
+
+ \section1 License Information
+
+ The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
+ the \l{GNU Lesser General Public License (LGPL)}, or the
+ \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
+ the following license.
+
+ \legalese
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
+ All rights reserved.
+
+ Contact: Nokia Corporation (qt-info@nokia.com)\br
+
+ You may use this file under the terms of the BSD license as follows:\br
+
+ "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.\br
+ * 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.\br
+ * Neither the name of Nokia Corporation 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."
+ \endlegalese
+*/
+
+/*!
+ \module QtDBus
+ \title QtDBus module
+ \contentspage Qt's Modules
+ \previouspage QAxServer
+ \ingroup modules
+
+ \keyword QtDBus
+ \target The QDBus compiler
+
+ \brief The QtDBus module is a Unix-only library that you can use
+ to make Inter-Process Communication using the \l {Introduction to
+ D-Bus} {D-Bus} protocol.
+
+ Applications using the QtDBus module can provide services to
+ other, remote applications by exporting objects, as well as use
+ services exported by those applications by placing calls and
+ accessing properties.
+
+ The QtDBus module provides an interface that extends the Qt \l
+ {signalsandslots.html}{Signals and Slots} mechanism, allowing one
+ to connect to a signal emitted remotely as well as to connect a
+ local signal to remote slot.
+
+ To use this module, use the following code in your application:
+
+ \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 0
+
+ If you're using qmake to build your application, you can add this
+ line to your .pro file to make it link against the QtDBus
+ libraries:
+
+ \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 1
+
+ \note The source code for this module is located in the \c{src/qdbus}
+ directory. When installing Qt from source, this module is built when Qt's
+ tools are built.
+
+ See the \l {Introduction to D-Bus} page for detailed information on
+ how to use this module.
+
+ This module is part of all \l{Qt editions}.
+*/
+
+/*!
+ \page qtmain.html
+ \title The qtmain Library
+ \ingroup licensing
+ \ingroup platform-specific
+ \brief Describes the use and license of the qtmain helper library.
+
+ qtmain is a helper library that enables the developer to write a
+ cross-platform main() function on Windows. If you do not use \l qmake
+ or other build tools such as CMake, then you need to link against
+ the \c qtmain library.
+
+ \section1 License Information
+
+ The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
+ the \l{GNU Lesser General Public License (LGPL)}, or the
+ \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
+ the following license.
+
+ \legalese
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
+ All rights reserved.
+
+ Contact: Nokia Corporation (qt-info@nokia.com)\br
+
+ You may use this file under the terms of the BSD license as follows:\br
+
+ "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.\br
+ * 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.\br
+ * Neither the name of Nokia Corporation 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."
+ \endlegalese
+*/
+
+/*!
+ \page qtassistant.html
+ \title QtAssistant
+
+ This module is no longer needed. Use the QtHelp module to integrate documentation
+ into your application.
+
+ \sa {QtHelp}
+*/
diff --git a/doc/src/qtnetwork.qdoc b/doc/src/network-programming/qtnetwork.qdoc
index 7af99bf..0b2e6f9 100644
--- a/doc/src/qtnetwork.qdoc
+++ b/doc/src/network-programming/qtnetwork.qdoc
@@ -40,46 +40,32 @@
****************************************************************************/
/*!
- \module QtNetwork
- \title QtNetwork Module
- \contentspage Qt's Modules
- \previouspage QtGui
- \nextpage QtOpenGL
- \ingroup modules
+ \group network
+ \title Network Programming API
+ \brief Classes for Network Programming
- \brief The QtNetwork module offers classes that allow you to
- write TCP/IP clients and servers.
-
- The network module provides classes to make network programming
- easier and portable. It offers classes such as QFtp that
- implement specific application-level protocols, lower-level classes
- such as QTcpSocket, QTcpServer and QUdpSocket that represent low
- level network concepts, and high level classes such as QNetworkRequest,
- QNetworkReply and QNetworkAccessManager to perform network operations using common protocols.
+ \ingroup groups
+*/
- The QtNetwork module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
+/*!
+ \page network-programming.html
+ \title Network Programming
+ \brief An Introduction to Network Programming with Qt
- Topics:
+ The QtNetwork module offers classes that allow you to write TCP/IP clients
+ and servers. it offers classes such as QFtp that implement specific
+ application-level protocols, lower-level classes such as QTcpSocket,
+ QTcpServer and QUdpSocket that represent low level network concepts,
+ and high level classes such as QNetworkRequest, QNetworkReply and
+ QNetworkAccessManager to perform network operations using common protocols.
\tableofcontents
- \section1 Configuring the Build Process
-
- Applications that use Qt's networking classes need to
- be configured to be built against the QtNetwork module.
- The following declaration in a \c qmake project file ensures that
- an application is compiled and linked appropriately:
-
- \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 0
-
- This line is necessary because only the QtCore and QtGui modules
- are used in the default build process.
+ \section1 Qt's Classes for Network Programming
- To include the definitions of the module's classes, use the
- following directive:
+ The following classes provide support for network programming in Qt.
- \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 1
+ \annotatedlist network
\section1 High Level Network Operations for HTTP and FTP
diff --git a/doc/src/qtcore.qdoc b/doc/src/network-programming/ssl.qdoc
index 7e23c5e..44d4196 100644
--- a/doc/src/qtcore.qdoc
+++ b/doc/src/network-programming/ssl.qdoc
@@ -40,21 +40,28 @@
****************************************************************************/
/*!
- \module QtCore
- \title QtCore Module
- \contentspage Qt's Modules
- \previouspage Qt's Modules
- \nextpage QtGui
- \ingroup modules
+ \group ssl
+ \title Secure Sockets Layer (SSL) Classes
+ \ingroup groups
- \keyword QtCore
+ \brief Classes for secure communication over network sockets.
+ \keyword SSL
- \brief The QtCore module contains core non-GUI functionality.
+ The classes below provide support for secure network communication using
+ the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} to
+ perform encryption and protocol handling.
- All other Qt modules rely on this module. To include the
- definitions of the module's classes, use the following directive:
+ See the \l{General Qt Requirements} page for information about the
+ versions of OpenSSL that are known to work with Qt.
- \snippet doc/src/snippets/code/doc_src_qtcore.qdoc 0
+ \note Due to import and export restrictions in some parts of the world, we
+ are unable to supply the OpenSSL Toolkit with Qt packages. Developers wishing
+ to use SSL communication in their deployed applications should either ensure
+ that their users have the appropriate libraries installed, or they should
+ consult a suitably qualified legal professional to ensure that applications
+ using code from the OpenSSL project are correctly certified for import
+ and export in relevant regions of the world.
- The QtCore module is part of all \l{Qt editions}.
+ When the QtNetwork module is built with SSL support, the library is linked
+ against OpenSSL in a way that requires OpenSSL license compliance.
*/
diff --git a/doc/src/metaobjects.qdoc b/doc/src/objectmodel/metaobjects.qdoc
index c11cf4d..961a4c6 100644
--- a/doc/src/metaobjects.qdoc
+++ b/doc/src/objectmodel/metaobjects.qdoc
@@ -43,7 +43,6 @@
\page metaobjects.html
\title Meta-Object System
\brief An overview of Qt's meta-object system and introspection capabilities.
- \ingroup architecture
\keyword meta-object
Qt's meta-object system provides the signals and slots mechanism for
diff --git a/doc/src/object.qdoc b/doc/src/objectmodel/object.qdoc
index 35d2ba3..a3c2292 100644
--- a/doc/src/object.qdoc
+++ b/doc/src/objectmodel/object.qdoc
@@ -42,9 +42,10 @@
/*!
\page object.html
\title Qt Object Model
- \ingroup architecture
\brief A description of the powerful features made possible by Qt's dynamic object model.
+ \ingroup frameworks-technologies
+
The standard C++ object model provides very efficient runtime
support for the object paradigm. But its static nature is
inflexibile in certain problem domains. Graphical user interface
@@ -85,6 +86,12 @@
templates; see \l{Why Doesn't Qt Use Templates for Signals and
Slots?}
+ \section1 Important Classes
+
+ These classes form the basis of the Qt Object Model.
+
+ \annotatedlist objectmodel
+
\target Identity vs Value
\section1 Qt Objects: Identity vs Value
diff --git a/doc/src/objectmodel/objecttrees.qdoc b/doc/src/objectmodel/objecttrees.qdoc
new file mode 100644
index 0000000..bc5353f
--- /dev/null
+++ b/doc/src/objectmodel/objecttrees.qdoc
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page objecttrees.html
+ \title Object Trees and Object Ownership
+ \brief Information about the parent-child pattern used to describe
+ object ownership in Qt.
+
+ \section1 Overview
+
+ \link QObject QObjects\endlink organize themselves in object trees.
+ When you create a QObject with another object as parent, it's added to
+ the parent's \link QObject::children() children() \endlink list, and
+ is deleted when the parent is. It turns out that this approach fits
+ the needs of GUI objects very well. For example, a \l QShortcut
+ (keyboard shortcut) is a child of the relevant window, so when the
+ user closes that window, the shorcut is deleted too.
+
+ \l QWidget, the base class of everything that appears on the screen,
+ extends the parent-child relationship. A child normally also becomes a
+ child widget, i.e. it is displayed in its parent's coordinate system
+ and is graphically clipped by its parent's boundaries. For example,
+ when the application deletes a message box after it has been
+ closed, the message box's buttons and label are also deleted, just as
+ we'd want, because the buttons and label are children of the message
+ box.
+
+ You can also delete child objects yourself, and they will remove
+ themselves from their parents. For example, when the user removes a
+ toolbar it may lead to the application deleting one of its \l QToolBar
+ objects, in which case the tool bar's \l QMainWindow parent would
+ detect the change and reconfigure its screen space accordingly.
+
+ The debugging functions \l QObject::dumpObjectTree() and \l
+ QObject::dumpObjectInfo() are often useful when an application looks or
+ acts strangely.
+
+ \target note on the order of construction/destruction of QObjects
+ \section1 Construction/Destruction Order of QObjects
+
+ When \l {QObject} {QObjects} are created on the heap (i.e., created
+ with \e new), a tree can be constructed from them in any order, and
+ later, the objects in the tree can be destroyed in any order. When any
+ QObject in the tree is deleted, if the object has a parent, the
+ destructor automatically removes the object from its parent. If the
+ object has children, the destructor automatically deletes each
+ child. No QObject is deleted twice, regardless of the order of
+ destruction.
+
+ When \l {QObject} {QObjects} are created on the stack, the same
+ behavior applies. Normally, the order of destruction still doesn't
+ present a problem. Consider the following snippet:
+
+ \snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 0
+
+ The parent, \c window, and the child, \c quit, are both \l {QObject}
+ {QObjects} because QPushButton inherits QWidget, and QWidget inherits
+ QObject. This code is correct: the destructor of \c quit is \e not
+ called twice because the C++ language standard \e {(ISO/IEC 14882:2003)}
+ specifies that destructors of local objects are called in the reverse
+ order of their constructors. Therefore, the destructor of
+ the child, \c quit, is called first, and it removes itself from its
+ parent, \c window, before the destructor of \c window is called.
+
+ But now consider what happens if we swap the order of construction, as
+ shown in this second snippet:
+
+ \snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 1
+
+ In this case, the order of destruction causes a problem. The parent's
+ destructor is called first because it was created last. It then calls
+ the destructor of its child, \c quit, which is incorrect because \c
+ quit is a local variable. When \c quit subsequently goes out of scope,
+ its destructor is called again, this time correctly, but the damage has
+ already been done.
+*/
diff --git a/doc/src/properties.qdoc b/doc/src/objectmodel/properties.qdoc
index cc28497..f640e31 100644
--- a/doc/src/properties.qdoc
+++ b/doc/src/objectmodel/properties.qdoc
@@ -42,7 +42,6 @@
/*!
\page properties.html
\title Qt's Property System
- \ingroup architecture
\brief An overview of Qt's property system.
Qt provides a sophisticated property system similar to the ones
diff --git a/doc/src/signalsandslots.qdoc b/doc/src/objectmodel/signalsandslots.qdoc
index 07e0ef8..6bdd4bc 100644
--- a/doc/src/signalsandslots.qdoc
+++ b/doc/src/objectmodel/signalsandslots.qdoc
@@ -42,7 +42,6 @@
/*!
\page signalsandslots.html
\title Signals and Slots
- \ingroup architecture
\brief An overview of Qt's signals and slots inter-object
communication mechanism.
diff --git a/doc/src/objecttrees.qdoc b/doc/src/objecttrees.qdoc
deleted file mode 100644
index 183f7cd..0000000
--- a/doc/src/objecttrees.qdoc
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page objecttrees.html
-\title Object Trees and Object Ownership
-\ingroup architecture
-\brief Information about the parent-child pattern used to describe
-object ownership in Qt.
-
-\section1 Overview
-
-\link QObject QObjects\endlink organize themselves in object trees.
-When you create a QObject with another object as parent, it's added to
-the parent's \link QObject::children() children() \endlink list, and
-is deleted when the parent is. It turns out that this approach fits
-the needs of GUI objects very well. For example, a \l QShortcut
-(keyboard shortcut) is a child of the relevant window, so when the
-user closes that window, the shorcut is deleted too.
-
-\l QWidget, the base class of everything that appears on the screen,
-extends the parent-child relationship. A child normally also becomes a
-child widget, i.e. it is displayed in its parent's coordinate system
-and is graphically clipped by its parent's boundaries. For example,
-when the application deletes a message box after it has been
-closed, the message box's buttons and label are also deleted, just as
-we'd want, because the buttons and label are children of the message
-box.
-
-You can also delete child objects yourself, and they will remove
-themselves from their parents. For example, when the user removes a
-toolbar it may lead to the application deleting one of its \l QToolBar
-objects, in which case the tool bar's \l QMainWindow parent would
-detect the change and reconfigure its screen space accordingly.
-
-The debugging functions \l QObject::dumpObjectTree() and \l
-QObject::dumpObjectInfo() are often useful when an application looks or
-acts strangely.
-
-\target note on the order of construction/destruction of QObjects
-\section1 Construction/Destruction Order of QObjects
-
-When \l {QObject} {QObjects} are created on the heap (i.e., created
-with \e new), a tree can be constructed from them in any order, and
-later, the objects in the tree can be destroyed in any order. When any
-QObject in the tree is deleted, if the object has a parent, the
-destructor automatically removes the object from its parent. If the
-object has children, the destructor automatically deletes each
-child. No QObject is deleted twice, regardless of the order of
-destruction.
-
-When \l {QObject} {QObjects} are created on the stack, the same
-behavior applies. Normally, the order of destruction still doesn't
-present a problem. Consider the following snippet:
-
-\snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 0
-
-The parent, \c window, and the child, \c quit, are both \l {QObject}
-{QObjects} because QPushButton inherits QWidget, and QWidget inherits
-QObject. This code is correct: the destructor of \c quit is \e not
-called twice because the C++ language standard \e {(ISO/IEC 14882:2003)}
-specifies that destructors of local objects are called in the reverse
-order of their constructors. Therefore, the destructor of
-the child, \c quit, is called first, and it removes itself from its
-parent, \c window, before the destructor of \c window is called.
-
-But now consider what happens if we swap the order of construction, as
-shown in this second snippet:
-
-\snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 1
-
-In this case, the order of destruction causes a problem. The parent's
-destructor is called first because it was created last. It then calls
-the destructor of its child, \c quit, which is incorrect because \c
-quit is a local variable. When \c quit subsequently goes out of scope,
-its destructor is called again, this time correctly, but the damage has
-already been done.
-
-*/
diff --git a/doc/src/overviews.qdoc b/doc/src/overviews.qdoc
index f4085f5..8b986fc 100644
--- a/doc/src/overviews.qdoc
+++ b/doc/src/overviews.qdoc
@@ -46,3 +46,28 @@
\generatelist overviews
*/
+
+/*!
+ \group frameworks-technologies
+ \title Frameworks and Technologies
+
+ \brief Documentation about the frameworks and technologies in Qt
+
+ These documents dive into the frameworks of classes that Qt provides,
+ and provide background information about the technical solutions used
+ in Qt's architecture.
+
+ \generatelist{related}
+*/
+
+/*!
+ \group best-practices
+ \title How-To's and Best Practices
+
+ \brief How-To Guides and Best Practices
+
+ These documents provide guidelines and best practices explaining
+ how to use Qt to solve specific technical problems.
+
+ \generatelist{related}
+*/
diff --git a/doc/src/coordsys.qdoc b/doc/src/painting-and-printing/coordsys.qdoc
index 6042300..5269ea2 100644
--- a/doc/src/coordsys.qdoc
+++ b/doc/src/painting-and-printing/coordsys.qdoc
@@ -39,25 +39,16 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Qt Coordinate System Documentation.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page coordsys.html
\title The Coordinate System
- \ingroup architecture
\brief Information about the coordinate system used by the paint
system.
+ \previouspage Drawing and Filling
+ \contentspage The Paint System
+ \nextpage Reading and Writing Image Files
+
The coordinate system is controlled by the QPainter
class. Together with the QPaintDevice and QPaintEngine classes,
QPainter form the basis of Qt's painting system, Arthur. QPainter
diff --git a/doc/src/paintsystem.qdoc b/doc/src/painting-and-printing/paintsystem.qdoc
index 23b5685..4fd29d5 100644
--- a/doc/src/paintsystem.qdoc
+++ b/doc/src/painting-and-printing/paintsystem.qdoc
@@ -40,9 +40,28 @@
****************************************************************************/
/*!
- \page paintsystem.html
+ \group painting
+ \title Painting Classes
+ \ingroup groups
+
+ \brief Classes that provide support for painting.
+
+ See also this introduction to the \link coordsys.html Qt
+ coordinate system. \endlink
+*/
+
+/*!
+ \group painting-3D
+ \title Rendering in 3D
+ \ingroup groups
+
+ \brief Classes that provide support for rendering in 3D.
+*/
+/*!
+ \page paintsystem.html
\title The Paint System
+ \ingroup frameworks-technologies
Qt's paint system enables painting on screen and print devices
using the same API, and is primarily based on the QPainter,
@@ -62,14 +81,211 @@
same painting pipeline making it easy to add support for new
features and providing default implementations for unsupported
ones.
+
+ \section1 Topics
+ \list
+ \o \l{Classes for Painting}
+ \o \l{Paint Devices and Backends}
+ \o \l{Drawing and Filling}
+ \o \l{The Coordinate System}
+ \o \l{Reading and Writing Image Files}
+ \o \l{Styling}
+ \o \l{Printing with Qt}
+ \endlist
+
+ \section1 Classes for Painting
+
+ These classes provide support for painting onto a paint device.
+
+ \annotatedlist painting
Alternatively, Qt provides the QtOpenGL module, offering classes
that makes it easy to use OpenGL in Qt applications. Among others,
the module provides an OpenGL widget class that can be used just
like any other Qt widget, except that it opens an OpenGL display
buffer where the OpenGL API can be used to render the contents.
+*/
+
+
+/*!
+ \page paintsystem-devices.html
+ \title Paint Devices and Backends
+
+ \contentspage The Paint System
+ \nextpage Drawing and Filling
+
+ \section1 Creating a Paint Device
+
+ The QPaintDevice class is the base class of objects that can be
+ painted, i.e. QPainter can draw on any QPaintDevice
+ subclass. QPaintDevice's drawing capabilities are currently
+ implemented by the QWidget, QImage, QPixmap, QGLWidget,
+ QGLPixelBuffer, QPicture and QPrinter subclasses.
+
+ \image paintsystem-devices.png
+
+ \table 100%
+ \row \o \bold Widget
+
+ The QWidget class is the base class of all user interface
+ objects. The widget is the atom of the user interface: it receives
+ mouse, keyboard and other events from the window system, and
+ paints a representation of itself on the screen.
+
+ \row \o \bold Image
+
+ The QImage class provides a hardware-independent image
+ representation which is designed and optimized for I/O, and for
+ direct pixel access and manipulation. QImage supports several
+ image formats including monochrome, 8-bit, 32-bit and
+ alpha-blended images.
+
+ One advantage of using QImage as a paint device is that it is
+ possible to guarantee the pixel exactness of any drawing operation
+ in a platform-independent way. Another benefit is that the
+ painting can be performed in another thread than the current GUI
+ thread.
+
+ \row \o \bold Pixmap
+
+ The QPixmap class is an off-screen image representation which is
+ designed and optimized for showing images on screen. Unlike
+ QImage, the pixel data in a pixmap is internal and is managed by
+ the underlying window system, i.e. pixels can only be accessed
+ through QPainter functions or by converting the QPixmap to a
+ QImage.
+
+ To optimize drawing with QPixmap, Qt provides the QPixmapCache
+ class which can be used to store temporary pixmaps that are
+ expensive to generate without using more storage space than the
+ cache limit.
+
+ Qt also provides the QBitmap convenience class, inheriting
+ QPixmap. QBitmap guarantees monochrome (1-bit depth) pixmaps, and
+ is mainly used for creating custom QCursor and QBrush objects,
+ constructing QRegion objects, and for setting masks for pixmaps
+ and widgets.
+
+ \row \o \bold {OpenGL Widget}
+
+ As mentioned previously, Qt provides the QtOpenGL module offering
+ classes that makes it easy to use OpenGL in Qt applications. For
+ example, the QGLWidget enables the OpenGL API for
+ rendering.
+
+ But QGLWidget is also a QWidget subclass, and can be used by
+ QPainter as any other paint device. One huge benefit from this is
+ that it enables Qt to utilize the high performance of OpenGL for
+ most drawing operations, such as transformations and pixmap
+ drawing.
+
+ \row \o \bold {Pixel Buffer}
+
+ The QtOpenGL module also provides the QGLPixelBuffer class which
+ inherits QPaintDevice directly.
+
+ QGLPixelBuffer encapsulates an OpenGL pbuffer. Rendering into a
+ pbuffer is normally done using full hardware acceleration which
+ can be significantly faster than rendering into a QPixmap.
- \tableofcontents section1
+ \row \o \bold {Framebuffer Object}
+
+ The QtOpenGL module also provides the QGLFramebufferObject class
+ which inherits QPaintDevice directly.
+
+ QGLFramebufferObject encapsulates an OpenGL framebuffer object.
+ Framebuffer objects can also be used for off-screen rendering, and
+ offer several advantages over pixel buffers for this purpose.
+ These are described in the QGLFramebufferObject class documentation.
+
+ \row \o \bold {Picture}
+
+ The QPicture class is a paint device that records and replays
+ QPainter commands. A picture serializes painter commands to an IO
+ device in a platform-independent format. QPicture is also
+ resolution independent, i.e. a QPicture can be displayed on
+ different devices (for example svg, pdf, ps, printer and screen)
+ looking the same.
+
+ Qt provides the QPicture::load() and QPicture::save() functions
+ as well as streaming operators for loading and saving pictures.
+
+ \row \o \bold {Printer}
+
+ The QPrinter class is a paint device that paints on a printer. On
+ Windows or Mac OS X, QPrinter uses the built-in printer
+ drivers. On X11, QPrinter generates postscript and sends that to
+ lpr, lp, or another print program. QPrinter can also print to any
+ other QPrintEngine object.
+
+ The QPrintEngine class defines an interface for how QPrinter
+ interacts with a given printing subsystem. The common case when
+ creating your own print engine, is to derive from both
+ QPaintEngine and QPrintEngine.
+
+ The output format is by default determined by the platform the
+ printer is running on, but by explicitly setting the output format
+ to QPrinter::PdfFormat, QPrinter will generate its output as a PDF
+ file.
+
+ \row \o \bold {Custom Backends}
+
+ Support for a new backend can be implemented by deriving from the
+ QPaintDevice class and reimplementing the virtual
+ QPaintDevice::paintEngine() function to tell QPainter which paint
+ engine should be used to draw on this particular device. To
+ actually be able to draw on the device, this paint engine must be
+ a custom paint engine created by deriving from the QPaintEngine
+ class.
+
+ \endtable
+
+ \section1 Selecting the Painting Backend
+
+ Since Qt 4.5, it is possible to replace the paint engines and paint
+ devices used for widgets, pixmaps and the offscreen double buffer. By
+ default the backends are:
+
+ \table
+ \row
+ \o Windows
+ \o Software Rasterizer
+ \row
+ \o X11
+ \o X11
+ \row
+ \o Mac OS X
+ \o CoreGraphics
+ \row
+ \o Embedded
+ \o Software Rasterizer
+ \endtable
+
+ Passing a command line parameter to the application, such as,
+ \c{-graphicssystem raster}, specifies that Qt should use the software
+ rasterizer for this application. The Software rasterizer is fully
+ supported on all platforms.
+
+ \code
+ > analogclock -graphicssystem raster
+ \endcode
+
+ There is also a \c{-graphicssystem opengl} mode that uses OpenGL for
+ all drawing. Currently, this engine is experimental as it does not draw
+ everything correctly.
+
+ Qt also supports being configured using \c {-graphicssystem
+ raster|opengl} in which case all applications will use the
+ specified graphics system for its graphics.
+*/
+
+/*!
+ \page paintsystem-drawing.html
+ \title Drawing and Filling
+
+ \previouspage Paint Devices and Backends
+ \contentspage The Paint System
+ \nextpage The Coordinate System
\section1 Drawing
@@ -185,134 +401,15 @@
colors around a center point.
\endtable
+*/
- \section1 Creating a Paint Device
-
- The QPaintDevice class is the base class of objects that can be
- painted, i.e. QPainter can draw on any QPaintDevice
- subclass. QPaintDevice's drawing capabilities are currently
- implemented by the QWidget, QImage, QPixmap, QGLWidget,
- QGLPixelBuffer, QPicture and QPrinter subclasses.
-
- \image paintsystem-devices.png
-
- \table 100%
- \row \o \bold {Custom Backends}
-
- Support for a new backend can be implemented by deriving from the
- QPaintDevice class and reimplementing the virtual
- QPaintDevice::paintEngine() function to tell QPainter which paint
- engine should be used to draw on this particular device. To
- actually be able to draw on the device, this paint engine must be
- a custom paint engine created by deriving from the QPaintEngine
- class.
-
- \endtable
-
- \section2 Widget
-
- The QWidget class is the base class of all user interface
- objects. The widget is the atom of the user interface: it receives
- mouse, keyboard and other events from the window system, and
- paints a representation of itself on the screen.
-
- \section2 Image
-
- The QImage class provides a hardware-independent image
- representation which is designed and optimized for I/O, and for
- direct pixel access and manipulation. QImage supports several
- image formats including monochrome, 8-bit, 32-bit and
- alpha-blended images.
-
- One advantage of using QImage as a paint device is that it is
- possible to guarantee the pixel exactness of any drawing operation
- in a platform-independent way. Another benefit is that the
- painting can be performed in another thread than the current GUI
- thread.
-
- \section2 Pixmap
-
- The QPixmap class is an off-screen image representation which is
- designed and optimized for showing images on screen. Unlike
- QImage, the pixel data in a pixmap is internal and is managed by
- the underlying window system, i.e. pixels can only be accessed
- through QPainter functions or by converting the QPixmap to a
- QImage.
-
- To optimize drawing with QPixmap, Qt provides the QPixmapCache
- class which can be used to store temporary pixmaps that are
- expensive to generate without using more storage space than the
- cache limit.
-
- Qt also provides the QBitmap convenience class, inheriting
- QPixmap. QBitmap guarantees monochrome (1-bit depth) pixmaps, and
- is mainly used for creating custom QCursor and QBrush objects,
- constructing QRegion objects, and for setting masks for pixmaps
- and widgets.
-
- \section2 OpenGL Widget
-
- As mentioned above, Qt provides the QtOpenGL module offering
- classes that makes it easy to use OpenGL in Qt applications. For
- example, the QGLWidget enables the OpenGL API for
- rendering.
-
- But QGLWidget is also a QWidget subclass, and can be used by
- QPainter as any other paint device. One huge benefit from this is
- that it enables Qt to utilize the high performance of OpenGL for
- most drawing operations, such as transformations and pixmap
- drawing.
-
- \section2 Pixel Buffer
-
- The QtOpenGL module also provides the QGLPixelBuffer class which
- inherits QPaintDevice directly.
-
- QGLPixelBuffer encapsulates an OpenGL pbuffer. Rendering into a
- pbuffer is normally done using full hardware acceleration which
- can be significantly faster than rendering into a QPixmap.
-
- \section2 Framebuffer Object
-
- The QtOpenGL module also provides the QGLFramebufferObject class
- which inherits QPaintDevice directly.
-
- QGLFramebufferObject encapsulates an OpenGL framebuffer object.
- Framebuffer objects can also be used for off-screen rendering, and
- offer several advantages over pixel buffers for this purpose.
- These are described in the QGLFramebufferObject class documentation.
-
- \section2 Picture
-
- The QPicture class is a paint device that records and replays
- QPainter commands. A picture serializes painter commands to an IO
- device in a platform-independent format. QPicture is also
- resolution independent, i.e. a QPicture can be displayed on
- different devices (for example svg, pdf, ps, printer and screen)
- looking the same.
-
- Qt provides the QPicture::load() and QPicture::save() functions
- as well as streaming operators for loading and saving pictures.
-
- \section2 Printer
-
- The QPrinter class is a paint device that paints on a printer. On
- Windows or Mac OS X, QPrinter uses the built-in printer
- drivers. On X11, QPrinter generates postscript and sends that to
- lpr, lp, or another print program. QPrinter can also print to any
- other QPrintEngine object.
-
- The QPrintEngine class defines an interface for how QPrinter
- interacts with a given printing subsystem. The common case when
- creating your own print engine, is to derive from both
- QPaintEngine and QPrintEngine.
-
- The output format is by default determined by the platform the
- printer is running on, but by explicitly setting the output format
- to QPrinter::PdfFormat, QPrinter will generate its output as a PDF
- file.
+/*!
+ \page paintsystem-images.html
+ \title Reading and Writing Image Files
- \section1 Reading and Writing Image Files
+ \previouspage The Coordinate System
+ \contentspage The Paint System
+ \nextpage Styling
The most common way to read images is through QImage and QPixmap's
constructors, or by calling the QImage::load() and QPixmap::load()
@@ -359,30 +456,57 @@
QImageReader and QImageWriter will automatically load the plugin
and start using it.
+ \section1 Rendering SVG files
+
\table 100%
\row
\o \image paintsystem-svg.png
\o \bold {SVG Rendering}
- Scalable Vector Graphics (SVG) is an language for describing both
- static and animated two-dimensional vector graphics. Qt includes
- support for the static features of SVG 1.2 Tiny.
+ Scalable Vector Graphics (SVG) is a language for describing two-dimensional
+ graphics and graphical applications in XML. SVG 1.1 is a W3C Recommendation
+ and forms the core of the current SVG developments in Qt. SVG 1.2 is the
+ specification currently being developed by the \l{SVG Working Group}, and it
+ is \l{http://www.w3.org/TR/SVG12/}{available in draft form}.
+ The \l{Mobile SVG Profiles} (SVG Basic and SVG Tiny) are aimed at
+ resource-limited devices and are part of the 3GPP platform for third generation
+ mobile phones. You can read more about SVG at \l{About SVG}.
+
+ Qt supports the \l{SVG 1.2 Tiny Static Features}{static features} of
+ \l{SVG 1.2 Tiny}. ECMA scripts and DOM manipulation are currently not
+ supported.
- SVG drawings can be rendered onto any QPaintDevice subclass. This
+ SVG drawings can be rendered onto any QPaintDevice subclass. This
approach gives developers the flexibility to experiment, in order
to find the best solution for each application.
- The easiest way to render SVG files is to construct a QSvgWidget
- and load an SVG file using one of the QSvgWidget::load()
- functions. The rendering is performed by the QSvgRenderer class
- which also can be used directly to provide SVG support for custom
- widgets.
+ The easiest way to render SVG files is to construct a QSvgWidget and
+ load an SVG file using one of the QSvgWidget::load() functions.
- For more information, see the QtSvg module documentation.
+ QSvgRenderer is the class responsible for rendering SVG files for
+ QSvgWidget, and it can be used directly to provide SVG support for
+ custom widgets.
+ To load an SVG file, construct a QSvgRenderer with a file name or the
+ contents of a file, or call QSvgRenderer::load() on an existing
+ renderer. If the SVG file has been loaded successfully the
+ QSvgRenderer::isValid() will return true.
+
+ Once you have loaded the SVG file successfully, you can render it
+ with the QSvgRenderer::render() function. Note that this scheme allows
+ you to render SVG files on all paint devices supported by Qt, including
+ QWidget, QGLWidget, and QImage. See the \l{SVG Viewer Example}{SVG Viewer}
+ example for more details.
\endtable
+*/
- \section1 Styling
+/*!
+ \page paintsystem-styling.html
+ \title Styling
+
+ \previouspage Reading and Writing Image Files
+ \contentspage The Paint System
+ \nextpage Printing with Qt
Qt's built-in widgets use the QStyle class to perform nearly all
of their drawing. QStyle is an abstract base class that
@@ -440,44 +564,7 @@
state.
\endtable
-
- \section1 Selecting the Painting Backend
-
- Since Qt 4.5, it is possible to replace the paint engines and paint
- devices used for widgets, pixmaps and the offscreen double buffer. By
- default the backends are:
-
- \table
- \row
- \o Windows
- \o Software Rasterizer
- \row
- \o X11
- \o X11
- \row
- \o Mac OS X
- \o CoreGraphics
- \row
- \o Embedded
- \o Software Rasterizer
- \endtable
-
- Passing a command line parameter to the application, such as,
- \c{-graphicssystem raster}, specifies that Qt should use the software
- rasterizer for this application. The Software rasterizer is fully
- supported on all platforms.
-
- \code
- > analogclock -graphicssystem raster
- \endcode
-
- There is also a \c{-graphicssystem opengl} mode that uses OpenGL for
- all drawing. Currently, this engine is experimental as it does not draw
- everything correctly.
-
- Qt also supports being configured using \c {-graphicssystem
- raster|opengl} in which case all applications will use the
- specified graphics system for its graphics.
-
- */
-
+
+ For more information about widget styling and appearance, see the
+ documentation about \l{Implementing Styles and Style Aware Widgets}.
+*/
diff --git a/doc/src/printing.qdoc b/doc/src/painting-and-printing/printing.qdoc
index 0472827..291286e 100644
--- a/doc/src/printing.qdoc
+++ b/doc/src/painting-and-printing/printing.qdoc
@@ -40,10 +40,19 @@
****************************************************************************/
/*!
+ \group printing
+ \title Printer and Printing APIs
+ \brief Classes for producing printed output
+ \ingroup groups
+*/
+
+/*!
\page printing.html
\title Printing with Qt
- \ingroup multimedia
- \ingroup text-processing
+
+ \previouspage Styling
+ \contentspage The Paint System
+
\brief A guide to producing printed output with Qt's paint system and widgets.
Qt provides extensive cross-platform support for printing. Using the printing
@@ -53,6 +62,13 @@
generation facilities.
\tableofcontents
+
+ \section1 Classes Supporting Printing
+
+ The following classes support the selecting and setting up of printers and
+ printing output.
+
+ \annotatedlist printing
\section1 Paint Devices and Printing
diff --git a/doc/src/atomic-operations.qdoc b/doc/src/platforms/atomic-operations.qdoc
index d0f5978..19fbea6 100644
--- a/doc/src/atomic-operations.qdoc
+++ b/doc/src/platforms/atomic-operations.qdoc
@@ -42,19 +42,20 @@
/*!
\page atomic-operations.html
\title Implementing Atomic Operations
- \ingroup architecture
- \ingroup qt-embedded-linux
\brief A guide to implementing atomic operations on new architectures.
+ \ingroup best-practices
+ \ingroup qt-embedded-linux
+
Qt uses an optimization called \l {Implicitly Shared
Classes}{implicit sharing} for many of its value classes.
Starting with Qt 4, all of Qt's implicitly shared classes can
safely be copied across threads like any other value classes,
- i.e., they are fully \l {Thread Support in Qt#Reentrancy and
- Thread-Safety}{reentrant}. This is accomplished by implementing
- reference counting operations using atomic hardware instructions
- on all the different platforms supported by Qt.
+ i.e., they are fully \l {Reentrancy and Thread-Safety}{reentrant}.
+ This is accomplished by implementing reference counting
+ operations using atomic hardware instructions on all the
+ different platforms supported by Qt.
To support a new architecture, it is important to ensure that
these platform-specific atomic operations are implemented in a
diff --git a/doc/src/compiler-notes.qdoc b/doc/src/platforms/compiler-notes.qdoc
index 4873cf5..f4e9805 100644
--- a/doc/src/compiler-notes.qdoc
+++ b/doc/src/platforms/compiler-notes.qdoc
@@ -41,7 +41,7 @@
/*!
\page compiler-notes.html
- \ingroup platform-notes
+ \ingroup platform-specific
\title Compiler Notes
\brief Information about the C++ compilers and tools used to build Qt.
diff --git a/doc/src/emb-accel.qdoc b/doc/src/platforms/emb-accel.qdoc
index 818538a..818538a 100644
--- a/doc/src/emb-accel.qdoc
+++ b/doc/src/platforms/emb-accel.qdoc
diff --git a/doc/src/qtopiacore-architecture.qdoc b/doc/src/platforms/emb-architecture.qdoc
index 06ffac6..06ffac6 100644
--- a/doc/src/qtopiacore-architecture.qdoc
+++ b/doc/src/platforms/emb-architecture.qdoc
diff --git a/doc/src/emb-charinput.qdoc b/doc/src/platforms/emb-charinput.qdoc
index 5ceb6a4..5ceb6a4 100644
--- a/doc/src/emb-charinput.qdoc
+++ b/doc/src/platforms/emb-charinput.qdoc
diff --git a/doc/src/emb-crosscompiling.qdoc b/doc/src/platforms/emb-crosscompiling.qdoc
index 2e0ba4b..2e0ba4b 100644
--- a/doc/src/emb-crosscompiling.qdoc
+++ b/doc/src/platforms/emb-crosscompiling.qdoc
diff --git a/doc/src/emb-deployment.qdoc b/doc/src/platforms/emb-deployment.qdoc
index 9a83dcf..9a83dcf 100644
--- a/doc/src/emb-deployment.qdoc
+++ b/doc/src/platforms/emb-deployment.qdoc
diff --git a/doc/src/emb-differences.qdoc b/doc/src/platforms/emb-differences.qdoc
index cf3ab75..cf3ab75 100644
--- a/doc/src/emb-differences.qdoc
+++ b/doc/src/platforms/emb-differences.qdoc
diff --git a/doc/src/qtopiacore-displaymanagement.qdoc b/doc/src/platforms/emb-displaymanagement.qdoc
index 8a743b1..8a743b1 100644
--- a/doc/src/qtopiacore-displaymanagement.qdoc
+++ b/doc/src/platforms/emb-displaymanagement.qdoc
diff --git a/doc/src/emb-envvars.qdoc b/doc/src/platforms/emb-envvars.qdoc
index c423fef..c423fef 100644
--- a/doc/src/emb-envvars.qdoc
+++ b/doc/src/platforms/emb-envvars.qdoc
diff --git a/doc/src/emb-features.qdoc b/doc/src/platforms/emb-features.qdoc
index fdd2e46..fdd2e46 100644
--- a/doc/src/emb-features.qdoc
+++ b/doc/src/platforms/emb-features.qdoc
diff --git a/doc/src/emb-fonts.qdoc b/doc/src/platforms/emb-fonts.qdoc
index 70fddbf..70fddbf 100644
--- a/doc/src/emb-fonts.qdoc
+++ b/doc/src/platforms/emb-fonts.qdoc
diff --git a/doc/src/emb-framebuffer-howto.qdoc b/doc/src/platforms/emb-framebuffer-howto.qdoc
index 14400c2..14400c2 100644
--- a/doc/src/emb-framebuffer-howto.qdoc
+++ b/doc/src/platforms/emb-framebuffer-howto.qdoc
diff --git a/doc/src/emb-install.qdoc b/doc/src/platforms/emb-install.qdoc
index e23cc1b..e23cc1b 100644
--- a/doc/src/emb-install.qdoc
+++ b/doc/src/platforms/emb-install.qdoc
diff --git a/doc/src/emb-kmap2qmap.qdoc b/doc/src/platforms/emb-kmap2qmap.qdoc
index 291a553..291a553 100644
--- a/doc/src/emb-kmap2qmap.qdoc
+++ b/doc/src/platforms/emb-kmap2qmap.qdoc
diff --git a/doc/src/emb-makeqpf.qdoc b/doc/src/platforms/emb-makeqpf.qdoc
index dc1196a..dc1196a 100644
--- a/doc/src/emb-makeqpf.qdoc
+++ b/doc/src/platforms/emb-makeqpf.qdoc
diff --git a/doc/src/qtopiacore-opengl.qdoc b/doc/src/platforms/emb-opengl.qdoc
index e61ccde..e61ccde 100644
--- a/doc/src/qtopiacore-opengl.qdoc
+++ b/doc/src/platforms/emb-opengl.qdoc
diff --git a/doc/src/emb-performance.qdoc b/doc/src/platforms/emb-performance.qdoc
index 9bc373b..9bc373b 100644
--- a/doc/src/emb-performance.qdoc
+++ b/doc/src/platforms/emb-performance.qdoc
diff --git a/doc/src/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc
index 39a8482..39a8482 100644
--- a/doc/src/emb-pointer.qdoc
+++ b/doc/src/platforms/emb-pointer.qdoc
diff --git a/doc/src/emb-porting.qdoc b/doc/src/platforms/emb-porting.qdoc
index 1afd1be..1afd1be 100644
--- a/doc/src/emb-porting.qdoc
+++ b/doc/src/platforms/emb-porting.qdoc
diff --git a/doc/src/emb-qvfb.qdoc b/doc/src/platforms/emb-qvfb.qdoc
index 48e0d35..48e0d35 100644
--- a/doc/src/emb-qvfb.qdoc
+++ b/doc/src/platforms/emb-qvfb.qdoc
diff --git a/doc/src/emb-running.qdoc b/doc/src/platforms/emb-running.qdoc
index cb7a7ae..cb7a7ae 100644
--- a/doc/src/emb-running.qdoc
+++ b/doc/src/platforms/emb-running.qdoc
diff --git a/doc/src/emb-vnc.qdoc b/doc/src/platforms/emb-vnc.qdoc
index c8289f8..c8289f8 100644
--- a/doc/src/emb-vnc.qdoc
+++ b/doc/src/platforms/emb-vnc.qdoc
diff --git a/doc/src/mac-differences.qdoc b/doc/src/platforms/mac-differences.qdoc
index ee77125..b911510 100644
--- a/doc/src/mac-differences.qdoc
+++ b/doc/src/platforms/mac-differences.qdoc
@@ -43,7 +43,7 @@
\page mac-differences.html
\title Qt for Mac OS X - Specific Issues
\brief A description of issues with Qt that are specific to Mac OS X.
- \ingroup platform-notes
+ \ingroup platform-specific
This file outlines known issues and possible workarounds when
using Qt on Mac OS X. Contact Qt's technical support team if you find
diff --git a/doc/src/platform-notes-rtos.qdoc b/doc/src/platforms/platform-notes-rtos.qdoc
index 8a52d84..8a52d84 100644
--- a/doc/src/platform-notes-rtos.qdoc
+++ b/doc/src/platforms/platform-notes-rtos.qdoc
diff --git a/doc/src/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc
index fc829f7..20f0933 100644
--- a/doc/src/platform-notes.qdoc
+++ b/doc/src/platforms/platform-notes.qdoc
@@ -40,8 +40,19 @@
****************************************************************************/
/*!
- \page platform-notes-platforms.html
- \ingroup platform-notes
+ \group platform-specific
+ \title Platform-Specific Documentation
+ \brief Documents describing platform-specific features of Qt.
+
+ These documents describe platform-specific features provided by Qt, and
+ discuss issues related to particular platforms and environments.
+
+ \generatelist{related}
+*/
+
+/*!
+ \page platform-notes.html
+ \ingroup platform-specific
\title Platform Notes
\brief Information about the platforms on which Qt can be used.
diff --git a/doc/src/qtopiacore.qdoc b/doc/src/platforms/qt-embedded-linux.qdoc
index c8fccf1..5329218 100644
--- a/doc/src/qtopiacore.qdoc
+++ b/doc/src/platforms/qt-embedded-linux.qdoc
@@ -40,8 +40,20 @@
****************************************************************************/
/*!
+ \group qws
+ \title Qt for Embedded Linux Classes
+ \ingroup groups
+ \ingroup qt-embedded-linux
+ \ingroup platform-specific
+
+ \brief Classes that are specific to Qt for Embedded Linux.
+
+ These classes are relevant to \l{Qt for Embedded Linux} users.
+*/
+
+
+/*!
\group qt-embedded-linux
- \ingroup topics
\ingroup qt-embedded
\title Qt for Embedded Linux
\brief Documents specifically about Qt for Embedded Linux.
@@ -71,7 +83,7 @@
\o \l {Qt for Embedded Linux Architecture}{Architecture Overview}
\o \l {Installing Qt for Embedded Linux}{Installation}
\o \l {Running Qt for Embedded Linux Applications}{Running Applications}
- \o \l {Qt Examples#Qt for Embedded Linux}{Examples}
+ \o \l {Qt for Embedded Linux Examples}{Examples}
\endlist
\o
\list
diff --git a/doc/src/qt-embedded.qdoc b/doc/src/platforms/qt-embedded.qdoc
index be9a458..22cba80 100644
--- a/doc/src/qt-embedded.qdoc
+++ b/doc/src/platforms/qt-embedded.qdoc
@@ -41,9 +41,9 @@
/*!
\group qt-embedded
- \ingroup topics
\title Qt for Embedded Platforms
\brief Documents related to Qt for Embedded Platforms.
+ \ingroup platform-specific
Qt is available for embedded platforms and devices as well as for a number
of desktop platforms. The features provided for each platform depend on the
diff --git a/doc/src/qtmac-as-native.qdoc b/doc/src/platforms/qtmac-as-native.qdoc
index 61c2143..265d222 100644
--- a/doc/src/qtmac-as-native.qdoc
+++ b/doc/src/platforms/qtmac-as-native.qdoc
@@ -86,7 +86,7 @@
\page qtmac-as-native.html
\title Qt is Mac OS X Native
\brief An explanation of Qt's native features on Mac OS X.
- \ingroup platform-notes
+ \ingroup platform-specific
This document explains what makes an application native on Mac OS X.
It shows the areas where Qt is compliant, and the grey areas where
diff --git a/doc/src/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc
index 6f63c87..8aec1e2 100644
--- a/doc/src/supported-platforms.qdoc
+++ b/doc/src/platforms/supported-platforms.qdoc
@@ -43,7 +43,7 @@
\page supported-platforms.html
\title Supported Platforms
\brief The platforms supported by Nokia for Qt.
- \ingroup platform-notes
+ \ingroup platform-specific
The Qt team strives to provide support for the platforms most
frequently used by Qt users. We have designed our internal testing procedure to
diff --git a/doc/src/wince-customization.qdoc b/doc/src/platforms/wince-customization.qdoc
index 06de1c8..06de1c8 100644
--- a/doc/src/wince-customization.qdoc
+++ b/doc/src/platforms/wince-customization.qdoc
diff --git a/doc/src/wince-introduction.qdoc b/doc/src/platforms/wince-introduction.qdoc
index 9a2c672..29f880e 100644
--- a/doc/src/wince-introduction.qdoc
+++ b/doc/src/platforms/wince-introduction.qdoc
@@ -40,11 +40,43 @@
****************************************************************************/
/*!
+ \group qtce
+ \title Qt for Windows CE
+ \ingroup qt-embedded
+ \brief Documents related to Qt on Windows CE
+
+ Qt for Windows CE is a C++ framework for GUI and application development
+ for embedded devices running Windows CE. It runs on a variety of processors,
+ including ARM, Intel x86, MIPS and SH-4.
+
+ \table 100%
+ \header \o Getting Started \o Reference \o Performance and Optimization
+ \row
+ \o
+ \list
+ \o \l {Qt for Windows CE Requirements}
+ \o \l {Installing Qt on Windows CE}
+ \o \l {Windows CE - Introduction to using Qt}{Introduction to using Qt}
+ \endlist
+ \o
+ \list
+ \o \l {Windows CE - Using shadow builds}{Using shadow builds}
+ \o \l {Windows CE - Working with Custom SDKs}{Working with Custom SDKs}
+ \endlist
+ \o
+ \list
+ \o \l {Windows CE OpenGL ES}{OpenGL ES}
+ \o \l {Qt Performance Tuning}
+ \o \l {Fine-Tuning Features in Qt}
+ \endlist
+ \endtable
+*/
+
+/*!
\page wince-with-qt-introduction.html
\title Windows CE - Introduction to using Qt
\brief An introduction to Qt for Windows CE developers.
- \ingroup howto
\ingroup qtce
\tableofcontents
diff --git a/doc/src/wince-opengl.qdoc b/doc/src/platforms/wince-opengl.qdoc
index 3c7e22f..3c7e22f 100644
--- a/doc/src/wince-opengl.qdoc
+++ b/doc/src/platforms/wince-opengl.qdoc
diff --git a/doc/src/winsystem.qdoc b/doc/src/platforms/winsystem.qdoc
index 8bb295d..5afa1f7 100644
--- a/doc/src/winsystem.qdoc
+++ b/doc/src/platforms/winsystem.qdoc
@@ -42,8 +42,7 @@
/*!
\page winsystem.html
\title Window System Specific Notes
- \ingroup buildsystem
- \ingroup deployment
+ \ingroup platform-specific
Qt is a cross-platform GUI toolkit, so almost the entire API is the
same on all platforms and window systems. If you wish to use
diff --git a/doc/src/qtopengl.qdoc b/doc/src/platforms/x11overlays.qdoc
index bb2f4e7..7d7a776 100644
--- a/doc/src/qtopengl.qdoc
+++ b/doc/src/platforms/x11overlays.qdoc
@@ -40,73 +40,8 @@
****************************************************************************/
/*!
- \module QtOpenGL
- \title QtOpenGL Module
- \contentspage Qt's Modules
- \previouspage QtNetwork
- \nextpage QtOpenVG
- \ingroup modules
-
- \brief The QtOpenGL module offers classes that make it easy to
- use OpenGL in Qt applications.
-
- OpenGL is a standard API for rendering 3D graphics. OpenGL only
- deals with 3D rendering and provides little or no support for GUI
- programming issues. The user interface for an OpenGL application
- must be created with another toolkit, such as Motif on the X
- platform, Microsoft Foundation Classes (MFC) under Windows, or Qt
- on both platforms.
-
- \bold{Note:} OpenGL is a trademark of Silicon Graphics, Inc. in
- the United States and other countries.
-
- The Qt OpenGL module makes it easy to use OpenGL in Qt applications.
- It provides an OpenGL widget class that can be used just like any
- other Qt widget, except that it opens an OpenGL display buffer where
- you can use the OpenGL API to render the contents.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 1
-
- The Qt OpenGL module is implemented as a platform-independent Qt/C++
- wrapper around the platform-dependent GLX (version 1.3 or later),
- WGL, or AGL C APIs. Although the basic functionality provided is very
- similar to Mark Kilgard's GLUT library, applications using the Qt
- OpenGL module can take advantage of the whole Qt API for
- non-OpenGL-specific GUI functionality.
-
- \warning The QtOpenGL module is part of the \l{Qt Full Framework Edition}
- and the \l{Open Source Versions of Qt}. It is available on Windows,
- X11, and Mac OS X. \l{Qt for Embedded Linux} supports OpenGL ES (OpenGL for
- Embedded Systems). To be able to use the OpenGL API in \l{Qt for Embedded Linux},
- it must be integrated with the Q Window System (QWS). See the
- \l{Qt for Embedded Linux and OpenGL} documentation for details.
-
- \section1 Installation
-
- When you install Qt for X11, the configure script will autodetect if
- OpenGL headers and libraries are installed on your system, and if so,
- it will include the QtOpenGL module in the Qt library. (If your
- OpenGL headers or libraries are placed in a non-standard directory,
- you may need to change the \c QMAKE_INCDIR_OPENGL and/or
- \c QMAKE_LIBDIR_OPENGL in the config file for your system).
-
- When you install Qt for Windows and Mac OS X, the QtOpenGL
- module is always included. X11 users might like to read the notes
- on overlays below.
-
- The QGL documentation assumes that you are familiar with OpenGL
- programming. If you're new to the subject a good starting point is
- \l{http://www.opengl.org/}.
-
- \section1 How to Use X11 Overlays with Qt
+ \page x11overlays.html
+ \title How to Use X11 Overlays with Qt
X11 overlays are a powerful mechanism for drawing
annotations etc., on top of an image without destroying it, thus saving
diff --git a/doc/src/porting-qsa.qdoc b/doc/src/porting/porting-qsa.qdoc
index d22e2db..d22e2db 100644
--- a/doc/src/porting-qsa.qdoc
+++ b/doc/src/porting/porting-qsa.qdoc
diff --git a/doc/src/porting4-canvas.qdoc b/doc/src/porting/porting4-canvas.qdoc
index ce68d56..5435723 100644
--- a/doc/src/porting4-canvas.qdoc
+++ b/doc/src/porting/porting4-canvas.qdoc
@@ -46,7 +46,6 @@
\previouspage Porting UI Files to Qt 4
\nextpage qt3to4 - The Qt 3 to 4 Porting Tool
\ingroup porting
- \ingroup multimedia
\brief Hints and tips to assist with porting canvas applications to the
Graphics View framework.
diff --git a/doc/src/porting4-designer.qdoc b/doc/src/porting/porting4-designer.qdoc
index d356392..d356392 100644
--- a/doc/src/porting4-designer.qdoc
+++ b/doc/src/porting/porting4-designer.qdoc
diff --git a/doc/src/porting/porting4-dnd.qdoc b/doc/src/porting/porting4-dnd.qdoc
new file mode 100644
index 0000000..2eb2d01
--- /dev/null
+++ b/doc/src/porting/porting4-dnd.qdoc
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** 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 either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** 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.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page porting4-dnd.html
+ \title Porting to Qt 4 - Drag and Drop
+ \contentspage {Porting Guides}{Contents}
+ \previouspage Porting to Qt 4 - Virtual Functions
+ \nextpage Porting UI Files to Qt 4
+ \ingroup porting
+ \brief An overview of the porting process for applications that use drag and drop.
+
+ Qt 4 introduces a new set of classes to handle drag and drop operations
+ that aim to be easier to use than their counterparts in Qt 3. As a result,
+ the way that drag and drop is performed is quite different to the way
+ developers of Qt 3 applications have come to expect. In this guide, we
+ show the differences between the old and new APIs and indicate where
+ applications need to be changed when they are ported to Qt 4.
+
+ \tableofcontents
+
+ \section1 Dragging
+
+ In Qt 3, drag operations are encapsulated by \c QDragObject (see Q3DragObject)
+ and its subclasses. These objects are typically constructed on the heap in
+ response to mouse click or mouse move events, and ownership of them is
+ transferred to Qt so that they can be deleted when the corresponding drag and
+ drop operations have been completed. The drag source has no control over how
+ the drag and drop operation is performed once the object's
+ \l{Q3DragObject::}{drag()} function is called, and it receives no information
+ about how the operation ended.
+
+ \snippet doc/src/snippets/code/doc_src_dnd.qdoc 0
+
+ Similarly, in Qt 4, drag operations are also initiated when a QDrag object
+ is constructed and its \l{QDrag::}{exec()} function is called. In contrast,
+ these objects are typically constructed on the stack rather than the heap
+ since each drag and drop operation is performed synchronously as far as the
+ drag source is concerned. One key benefit of this is that the drag source
+ can receive information about how the operation ended from the value returned
+ by \l{QDrag::}{exec()}.
+
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 2
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 3
+ \dots 8
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 4
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 5
+
+ A key difference in the above code is the use of the QMimeData class to hold
+ information about the data that is transferred. Qt 3 relies on subclasses
+ of \c QDragObject to provide support for specific MIME types; in Qt 4, the
+ use of QMimeData as a generic container for data makes the relationship
+ between MIME type and data more tranparent. QMimeData is described in more
+ detail later in this document.
+
+ \section1 Dropping
+
+ In both Qt 3 and Qt 4, it is possible to prepare a custom widget to accept
+ dropped data by enabling the \l{QWidget::}{acceptDrops} property of a widget,
+ usually in the widget's constructor. As a result, the widget will receive
+ drag enter events that can be handled by its \l{QWidget::}{dragEnterEvent()}
+ function.
+ As in Qt 3, custom widgets in Qt 4 handle these events by determining
+ whether the data supplied by the drag and drop operation can be dropped onto
+ the widget. Since the classes used to encapsulate MIME data are different in
+ Qt 3 and Qt 4, the exact implementations differ.
+
+ In Qt 3, the drag enter event is handled by checking whether each of the
+ standard \c QDragObject subclasses can decode the data supplied, and
+ indicating success or failure of these checks via the event's
+ \l{QDragEnterEvent::}{accept()} function, as shown in this simple example:
+
+ \snippet doc/src/snippets/code/doc_src_dnd.qdoc 1
+
+ In Qt 4, you can examine the MIME type describing the data to determine
+ whether the widget should accept the event or, for common data types, you
+ can use convenience functions:
+
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 0
+
+ The widget has some control over the type of drag and drop operation to be
+ performed. In the above code, the action proposed by the drag source is
+ accepted, but
+ \l{Drag and Drop#Overriding Proposed Actions}{this can be overridden} if
+ required.
+
+ In both Qt 3 and Qt 4, it is necessary to accept a given drag event in order
+ to receive the corresponding drop event. A custom widget in Qt 3 that can
+ accept dropped data in the form of text or images might provide an
+ implementation of \l{QWidget::}{dropEvent()} that looks like the following:
+
+ \snippet doc/src/snippets/code/doc_src_dnd.qdoc 2
+
+ In Qt 4, the event is handled in a similar way:
+
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 1
+
+ It is also possible to extract data stored for a particular MIME type if it
+ was specified by the drag source.
+
+ \section1 MIME Types and Data
+
+ In Qt 3, data to be transferred in drag and drop operations is encapsulated
+ in instances of \c QDragObject and its subclasses, representing specific
+ data formats related to common MIME type and subtypes.
+
+ In Qt 4, only the QMimeData class is used to represent data, providing a
+ container for data stored in multiple formats, each associated with
+ a relevant MIME type. Since arbitrary MIME types can be specified, there is
+ no need for an extensive class hierarchy to represent different kinds of
+ information. Additionally, QMimeData it provides some convenience functions
+ to allow the most common data formats to be stored and retrieved with less
+ effort than for arbitrary MIME types.
+*/
diff --git a/doc/src/porting4-modifiedvirtual.qdocinc b/doc/src/porting/porting4-modifiedvirtual.qdocinc
index 1164238..1164238 100644
--- a/doc/src/porting4-modifiedvirtual.qdocinc
+++ b/doc/src/porting/porting4-modifiedvirtual.qdocinc
diff --git a/doc/src/porting4-obsoletedmechanism.qdocinc b/doc/src/porting/porting4-obsoletedmechanism.qdocinc
index 584b910..584b910 100644
--- a/doc/src/porting4-obsoletedmechanism.qdocinc
+++ b/doc/src/porting/porting4-obsoletedmechanism.qdocinc
diff --git a/doc/src/porting4-overview.qdoc b/doc/src/porting/porting4-overview.qdoc
index 5eff1ba..5eff1ba 100644
--- a/doc/src/porting4-overview.qdoc
+++ b/doc/src/porting/porting4-overview.qdoc
diff --git a/doc/src/porting4-removedenumvalues.qdocinc b/doc/src/porting/porting4-removedenumvalues.qdocinc
index fe38d0e..fe38d0e 100644
--- a/doc/src/porting4-removedenumvalues.qdocinc
+++ b/doc/src/porting/porting4-removedenumvalues.qdocinc
diff --git a/doc/src/porting4-removedtypes.qdocinc b/doc/src/porting/porting4-removedtypes.qdocinc
index 9d7c519..9d7c519 100644
--- a/doc/src/porting4-removedtypes.qdocinc
+++ b/doc/src/porting/porting4-removedtypes.qdocinc
diff --git a/doc/src/porting4-removedvariantfunctions.qdocinc b/doc/src/porting/porting4-removedvariantfunctions.qdocinc
index dfaa8f3..dfaa8f3 100644
--- a/doc/src/porting4-removedvariantfunctions.qdocinc
+++ b/doc/src/porting/porting4-removedvariantfunctions.qdocinc
diff --git a/doc/src/porting4-removedvirtual.qdocinc b/doc/src/porting/porting4-removedvirtual.qdocinc
index 1af4fa6..1af4fa6 100644
--- a/doc/src/porting4-removedvirtual.qdocinc
+++ b/doc/src/porting/porting4-removedvirtual.qdocinc
diff --git a/doc/src/porting4-renamedclasses.qdocinc b/doc/src/porting/porting4-renamedclasses.qdocinc
index ef315a1..ef315a1 100644
--- a/doc/src/porting4-renamedclasses.qdocinc
+++ b/doc/src/porting/porting4-renamedclasses.qdocinc
diff --git a/doc/src/porting4-renamedenumvalues.qdocinc b/doc/src/porting/porting4-renamedenumvalues.qdocinc
index 9519da1..9519da1 100644
--- a/doc/src/porting4-renamedenumvalues.qdocinc
+++ b/doc/src/porting/porting4-renamedenumvalues.qdocinc
diff --git a/doc/src/porting4-renamedfunctions.qdocinc b/doc/src/porting/porting4-renamedfunctions.qdocinc
index 3e59a82..3e59a82 100644
--- a/doc/src/porting4-renamedfunctions.qdocinc
+++ b/doc/src/porting/porting4-renamedfunctions.qdocinc
diff --git a/doc/src/porting4-renamedstatic.qdocinc b/doc/src/porting/porting4-renamedstatic.qdocinc
index 156ab73..156ab73 100644
--- a/doc/src/porting4-renamedstatic.qdocinc
+++ b/doc/src/porting/porting4-renamedstatic.qdocinc
diff --git a/doc/src/porting4-renamedtypes.qdocinc b/doc/src/porting/porting4-renamedtypes.qdocinc
index fc8f604..fc8f604 100644
--- a/doc/src/porting4-renamedtypes.qdocinc
+++ b/doc/src/porting/porting4-renamedtypes.qdocinc
diff --git a/doc/src/porting4.qdoc b/doc/src/porting/porting4.qdoc
index 4efb7be..f4bcfcc 100644
--- a/doc/src/porting4.qdoc
+++ b/doc/src/porting/porting4.qdoc
@@ -40,6 +40,19 @@
****************************************************************************/
/*!
+ \group porting
+ \title Porting Guides
+ \brief Guides related to porting Qt applications and libraries.
+ \ingroup best-practices
+
+ A number of guides and documents are available that cover porting issues,
+ from detailed coverage of API differences between Qt 3 and Qt 4 to
+ platform and tool-specific documentation.
+
+ \generatelist{related}
+*/
+
+/*!
\page porting4.html
\title Porting to Qt 4
\contentspage {Porting Guides}{Contents}
@@ -267,7 +280,7 @@
\table
\header \o Qt 3 class name \o Qt 4 class name
- \input porting4-renamedclasses.qdocinc
+ \input porting/porting4-renamedclasses.qdocinc
\endtable
The table below lists the enums and typedefs that have been
@@ -281,7 +294,7 @@
\table
\header \o Qt 3 type name \o Qt 4 type name
- \input porting4-renamedtypes.qdocinc
+ \input porting/porting4-renamedtypes.qdocinc
\endtable
\omit
@@ -301,7 +314,7 @@
\table
\header \o Qt 3 enum value name \o Qt 4 enum value name
- \input porting4-renamedenumvalues.qdocinc
+ \input porting/porting4-renamedenumvalues.qdocinc
\endtable
In addition, the following \l{Qt::WindowFlags}{window flags} have
@@ -722,7 +735,7 @@
The \c QAsyncIO class was used internally in Qt 2.x in
conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QBackInsertIterator
@@ -1220,20 +1233,20 @@
The \c QDataPump class was used internally in Qt 2.x in
conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QDataSink
The \c QDataSink class was used internally in Qt 2.x in conjunction
with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QDataSource
The \c QDataSource class was used internally in Qt 2.x in
conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QDataTable
@@ -2116,7 +2129,7 @@
The QIODeviceSource class was used internally in Qt 2.x in
conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QLabel
@@ -2553,7 +2566,7 @@
If you need to manage a set of actions created for a particular menu,
we suggest that you construct a QActionGroup and add them to that.
- The \l{Qt Examples#Main Windows}{Main Window examples} provided
+ The \l{Main Window Examples} provided
show how to use Qt's action system to construct menus, toolbars, and other
common user interface elements.
@@ -3974,7 +3987,7 @@
\table
\header \o Qt 3 function \o Qt 4 function
- \input porting4-removedvariantfunctions.qdocinc
+ \input porting/porting4-removedvariantfunctions.qdocinc
\endtable
See the QVariant::Type enum for a list of types supported by QVariant.
@@ -4219,13 +4232,13 @@
\table
\header \o Qt 3 function signature \o Qt 4 function signature
- \input porting4-modifiedvirtual.qdocinc
+ \input porting/porting4-modifiedvirtual.qdocinc
\endtable
Virtual functions that are not virtual in Qt 4:
\table
\header \o Qt 3 function \o Comment
- \input porting4-removedvirtual.qdocinc
+ \input porting/porting4-removedvirtual.qdocinc
\endtable
*/
diff --git a/doc/src/qt3to4.qdoc b/doc/src/porting/qt3to4.qdoc
index d788f67..d788f67 100644
--- a/doc/src/qt3to4.qdoc
+++ b/doc/src/porting/qt3to4.qdoc
diff --git a/doc/src/qt4-accessibility.qdoc b/doc/src/porting/qt4-accessibility.qdoc
index 747ca8d..1b985c1 100644
--- a/doc/src/qt4-accessibility.qdoc
+++ b/doc/src/porting/qt4-accessibility.qdoc
@@ -42,7 +42,6 @@
/*!
\page qt4-accessibility.html
\title Cross-Platform Accessibility Support in Qt 4
- \ingroup accessibility
\contentspage {What's New in Qt 4}{Home}
\previouspage The New Qt Designer
diff --git a/doc/src/qt4-arthur.qdoc b/doc/src/porting/qt4-arthur.qdoc
index b253d06..b253d06 100644
--- a/doc/src/qt4-arthur.qdoc
+++ b/doc/src/porting/qt4-arthur.qdoc
diff --git a/doc/src/qt4-designer.qdoc b/doc/src/porting/qt4-designer.qdoc
index 0bfe034..0bfe034 100644
--- a/doc/src/qt4-designer.qdoc
+++ b/doc/src/porting/qt4-designer.qdoc
diff --git a/doc/src/qt4-interview.qdoc b/doc/src/porting/qt4-interview.qdoc
index 158de87..158de87 100644
--- a/doc/src/qt4-interview.qdoc
+++ b/doc/src/porting/qt4-interview.qdoc
diff --git a/doc/src/qt4-mainwindow.qdoc b/doc/src/porting/qt4-mainwindow.qdoc
index 7c48b95..7c48b95 100644
--- a/doc/src/qt4-mainwindow.qdoc
+++ b/doc/src/porting/qt4-mainwindow.qdoc
diff --git a/doc/src/qt4-network.qdoc b/doc/src/porting/qt4-network.qdoc
index 36fd46a..36fd46a 100644
--- a/doc/src/qt4-network.qdoc
+++ b/doc/src/porting/qt4-network.qdoc
diff --git a/doc/src/qt4-scribe.qdoc b/doc/src/porting/qt4-scribe.qdoc
index 64037cf..64037cf 100644
--- a/doc/src/qt4-scribe.qdoc
+++ b/doc/src/porting/qt4-scribe.qdoc
diff --git a/doc/src/qt4-sql.qdoc b/doc/src/porting/qt4-sql.qdoc
index 3425e96..3425e96 100644
--- a/doc/src/qt4-sql.qdoc
+++ b/doc/src/porting/qt4-sql.qdoc
diff --git a/doc/src/qt4-styles.qdoc b/doc/src/porting/qt4-styles.qdoc
index 4134962..4134962 100644
--- a/doc/src/qt4-styles.qdoc
+++ b/doc/src/porting/qt4-styles.qdoc
diff --git a/doc/src/qt4-threads.qdoc b/doc/src/porting/qt4-threads.qdoc
index 1800d6a..1800d6a 100644
--- a/doc/src/qt4-threads.qdoc
+++ b/doc/src/porting/qt4-threads.qdoc
diff --git a/doc/src/qt4-tulip.qdoc b/doc/src/porting/qt4-tulip.qdoc
index 9354651..9354651 100644
--- a/doc/src/qt4-tulip.qdoc
+++ b/doc/src/porting/qt4-tulip.qdoc
diff --git a/doc/src/trolltech-webpages.qdoc b/doc/src/qt-webpages.qdoc
index 20e6c66..20e6c66 100644
--- a/doc/src/trolltech-webpages.qdoc
+++ b/doc/src/qt-webpages.qdoc
diff --git a/doc/src/qt3support.qdoc b/doc/src/qt3support.qdoc
deleted file mode 100644
index 59698e1..0000000
--- a/doc/src/qt3support.qdoc
+++ /dev/null
@@ -1,81 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module Qt3Support
- \title Qt3Support Module
- \contentspage Qt's Modules
- \previouspage Phonon Module
- \nextpage QtDesigner
- \ingroup modules
-
- \keyword Qt3Support
- \brief The Qt3Support module provides classes that ease porting
- from Qt 3 to Qt 4.
-
- \warning The classes in this module are intended to be used in
- intermediate stages of a porting process and are not intended
- to be used in production code.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 1
-
- \note Since this module provides compatibility classes for
- diverse parts of the Qt 3 API, it has dependencies on the QtCore,
- QtGui, QtNetwork, QtSql, and QtXml modules.
-
- This module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}. Most classes offered by this module are
- also part of the \l{Qt GUI Framework Edition}.
-\if defined(opensourceedition) || defined(desktoplightedition)
- Classes that are not available for \l{Qt GUI Framework Edition}
- users are marked as such in the class documentation.
-\endif
-
- \sa {Porting to Qt 4}
-*/
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index 45a95b2..5c2642e 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -87,8 +87,8 @@
\o \l{QtXmlPatterns Module}{XQuery and XPath} support, providing facilities for
XML processing beyond that supported by the QtXml module.
\o Support for embedded widgets in \l{Graphics View} scenes.
- \o The \l{Threading and Concurrent Programming}{QtConcurrent framework} for
- concurrent programming using Qt paradigms and threading features.
+ \o The \l{QtConcurrent} framework for concurrent programming using Qt paradigms and
+ threading features.
\o An \l{QtHelp Module}{improved help system} that can be used in conjunction
with Qt Assistant or as an independent help resource manager.
\o Printing system improvements, including the QPrinterInfo, QPrintPreviewWidget
@@ -563,7 +563,7 @@
\section1 Improved Network Proxy Support
Qt's networking classes have been updated with
- \l{QtNetwork Module#Support for Network Proxies}{improved proxy support}.
+ \l{Network Programming#Support for Network Proxies}{improved proxy support}.
This includes improved integration with system proxy settings and the added
ability to handle non-trivial proxy cases.
diff --git a/doc/src/qtdbus.qdoc b/doc/src/qtdbus.qdoc
deleted file mode 100644
index d4a6908..0000000
--- a/doc/src/qtdbus.qdoc
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/** -*- mode: C++ -*-
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtDBus
- \title QtDBus module
- \contentspage Qt's Modules
- \previouspage QAxServer
- \ingroup modules
-
- \keyword QtDBus
- \target The QDBus compiler
-
- \brief The QtDBus module is a Unix-only library that you can use
- to make Inter-Process Communication using the \l {Introduction to
- D-Bus} {D-Bus} protocol.
-
- Applications using the QtDBus module can provide services to
- other, remote applications by exporting objects, as well as use
- services exported by those applications by placing calls and
- accessing properties.
-
- The QtDBus module provides an interface that extends the Qt \l
- {signalsandslots.html}{Signals and Slots} mechanism, allowing one
- to connect to a signal emitted remotely as well as to connect a
- local signal to remote slot.
-
- To use this module, use the following code in your application:
-
- \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 0
-
- If you're using qmake to build your application, you can add this
- line to your .pro file to make it link against the QtDBus
- libraries:
-
- \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 1
-
- \note The source code for this module is located in the \c{src/qdbus}
- directory. When installing Qt from source, this module is built when Qt's
- tools are built.
-
- See the \l {Introduction to D-Bus} page for detailed information on
- how to use this module.
-
- This module is part of all \l{Qt editions}.
-*/
diff --git a/doc/src/qtgui.qdoc b/doc/src/qtgui.qdoc
deleted file mode 100644
index 63e544c..0000000
--- a/doc/src/qtgui.qdoc
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtGui
- \title QtGui Module
- \contentspage Qt's Modules
- \previouspage QtCore
- \nextpage QtNetwork
- \ingroup modules
-
- \brief The QtGui module extends QtCore with GUI functionality.
-
- To include the definitions of both modules' classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtgui.qdoc 0
-
- The QtGui module is part of the \l{Qt GUI Framework Edition},
- the \l{Qt Full Framework Edition}, and the \l{Open Source Versions of Qt}.
-*/
diff --git a/doc/src/qtmain.qdoc b/doc/src/qtmain.qdoc
deleted file mode 100644
index 5f1f273..0000000
--- a/doc/src/qtmain.qdoc
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qtmain.html
- \title The qtmain Library
- \ingroup licensing
- \ingroup platform-notes
- \brief Describes the use and license of the qtmain helper library.
-
- qtmain is a helper library that enables the developer to write a
- cross-platform main() function on Windows.
-
- If you do not use \l qmake or the \l{Visual Studio Integration}
- available to \l{Qt Commercial Editions}{commercial licensees}, you also
- need to link against the \c qtmain library.
-
- \section1 License Information
-
- The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
- the \l{GNU Lesser General Public License (LGPL)}, or the
- \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
- the following license.
-
- \legalese
- Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
- All rights reserved.
-
- Contact: Nokia Corporation (qt-info@nokia.com)\br
-
- You may use this file under the terms of the BSD license as follows:\br
-
- "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.\br
- * 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.\br
- * Neither the name of Nokia Corporation 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."
- \endlegalese
-*/
diff --git a/doc/src/qtscripttools.qdoc b/doc/src/qtscripttools.qdoc
deleted file mode 100644
index 7a5ffe6..0000000
--- a/doc/src/qtscripttools.qdoc
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtScriptTools
- \title QtScriptTools Module
- \since 4.5
- \contentspage Qt's Modules
- \previouspage QtScript
- \nextpage QtSql
- \ingroup modules
- \ingroup scripting
-
- \brief The QtScriptTools module provides additional components for applications that use Qt Script.
-
- \tableofcontents
-
- \section1 Configuring the Build Process
-
- Applications that use the Qt Script Tools classes need to
- be configured to be built against the QtScriptTools module.
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 0
-
- To link against the module, add this line to your \l qmake \c .pro file:
-
- \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 1
-
- The QtScriptTools module is part of the \l{Qt Full Framework Edition} and
- the \l{Open Source Versions of Qt}.
-
- */
diff --git a/doc/src/qtsvg.qdoc b/doc/src/qtsvg.qdoc
deleted file mode 100644
index 18db387..0000000
--- a/doc/src/qtsvg.qdoc
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtSvg
- \title QtSvg Module
- \since 4.1
- \contentspage Qt's Modules
- \previouspage QtSql
- \nextpage QtWebKit
- \ingroup modules
-
- \brief The QtSvg module provides classes for displaying the contents of SVG
- files.
-
- Scalable Vector Graphics (SVG) is a language for describing two-dimensional
- graphics and graphical applications in XML. SVG 1.1 is a W3C Recommendation
- and forms the core of the current SVG developments in Qt. SVG 1.2 is the
- specification currently being developed by the \l{SVG Working Group}, and it
- is \l{http://www.w3.org/TR/SVG12/}{available in draft form}.
- The \l{Mobile SVG Profiles} (SVG Basic and SVG Tiny) are aimed at
- resource-limited devices and are part of the 3GPP platform for third generation
- mobile phones. You can read more about SVG at \l{About SVG}.
-
- \tableofcontents
-
- \section1 SVG Support
- Qt supports the \l{SVG 1.2 Tiny Static Features}{static features} of
- \l{SVG 1.2 Tiny}. ECMA scripts and DOM manipulation are currently not
- supported.
-
- \section1 Configuring the Build Process
-
- Applications that use Qt's SVG classes need to
- be configured to be built against the QtSvg module.
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 1
-
- The QtSvg module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- \section1 Rendering SVG files
-
- The easiest way to render SVG files is to construct a QSvgWidget and
- load an SVG file using one of the QSvgWidget::load() functions.
-
- QSvgRenderer is the class responsible for rendering SVG files for
- QSvgWidget, and it can be used directly to provide SVG support for
- custom widgets.
- To load an SVG file, construct a QSvgRenderer with a file name or the
- contents of a file, or call QSvgRenderer::load() on an existing
- renderer. If the SVG file has been loaded successfully the
- QSvgRenderer::isValid() will return true.
-
- Once you have loaded the SVG file successfully, you can render it
- with the QSvgRenderer::render() function. Note that this scheme allows
- you to render SVG files on all paint devices supported by Qt, including
- QWidget, QGLWidget, and QImage. See the \l{SVG Viewer Example}{SVG Viewer}
- example for more details.
-
- \section1 Additional Information
-
- Some code for arc handling in this module is derived from code with
- the following license:
-
- \legalese
- Copyright 2002 USC/Information Sciences Institute
-
- Permission to use, copy, modify, distribute, and sell this software
- and its documentation for any purpose is hereby granted without
- fee, provided that the above copyright notice appear in all copies
- and that both that copyright notice and this permission notice
- appear in supporting documentation, and that the name of
- Information Sciences Institute not be used in advertising or
- publicity pertaining to distribution of the software without
- specific, written prior permission. Information Sciences Institute
- makes no representations about the suitability of this software for
- any purpose. It is provided "as is" without express or implied
- warranty.
-
- INFORMATION SCIENCES INSTITUTE DISCLAIMS ALL WARRANTIES WITH REGARD
- TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL INFORMATION SCIENCES
- INSTITUTE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
- OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- \endlegalese
-*/
diff --git a/doc/src/qtuiloader.qdoc b/doc/src/qtuiloader.qdoc
deleted file mode 100644
index ba621a8..0000000
--- a/doc/src/qtuiloader.qdoc
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtUiTools
- \title QtUiTools Module
- \since 4.1
- \contentspage Qt's Modules
- \previouspage QtDesigner
- \nextpage QtHelp
- \ingroup modules
-
- \brief The QtUiTools module provides classes to handle forms created
- with Qt Designer.
-
- These forms are processed at run-time to produce dynamically-generated
- user interfaces. In order to generate a form at run-time, a resource
- file containing a UI file is needed. Applications that use the
- form handling classes need to be configured to be built against the
- QtUiTools module. This is done by including the following declaration
- in a \c qmake project file to ensure that the application is compiled
- and linked appropriately.
-
- \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 0
-
- A form loader object, provided by the QUiLoader class, is used to
- construct the user interface. This user interface can
- be retrieved from any QIODevice; for example, a QFile object can be
- used to obtain a form stored in a project's resources. The
- QUiLoader::load() function takes the user interface description
- contained in the file and constructs the form widget.
-
- To include the definitions of the module's classes, use the following
- directive:
-
- \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 1
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
- users.
-
- \sa{Calculator Builder Example}, {World Time Clock Builder Example}
-*/
-
diff --git a/doc/src/qundo.qdoc b/doc/src/qundo.qdoc
deleted file mode 100644
index 9de2aa9..0000000
--- a/doc/src/qundo.qdoc
+++ /dev/null
@@ -1,113 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page qundo.html
-\title Overview of Qt's Undo Framework
-\keyword Undo framework
-\ingroup architecture
-
-\section1 Introduction
-
-Qt's Undo Framework is an implementation of the Command pattern, for
-implementing undo/redo functionality in applications.
-
-The Command pattern is based on the idea that all editing in
-an application is done by creating instances of command objects.
-Command objects apply changes to the document and are stored
-on a command stack. Furthermore, each command knows how to undo its
-changes to bring the document back to its previous state. As long
-as the application only uses command objects to change the state of
-the document, it is possible to undo a sequence of commands by
-traversing the stack downwards and calling undo
-on each command in turn. It is also possible to redo a sequence of
-commands by traversing the stack upwards and calling
-redo on each command.
-
-\section1 Classes
-
-The framework consists of four classes:
-
-\list
-\i \l QUndoCommand is the base class of all commands stored on an
- undo stack. It can apply (redo) or undo a single change in the document.
-\i \l QUndoStack is a list of QUndoCommand objects. It contains all the
- commands executed on the document and can roll the document's state
- backwards or forwards by undoing or redoing them.
-\i \l QUndoGroup is a group of undo stacks. It is useful when an application
- contains more than one undo stack, typically one for each opened
- document. QUndoGroup provides a single pair of undo/redo slots for all
- the stacks in the group. It forwards undo and redo requests to
- the active stack, which is the stack associated with the document that
- is currently being edited by the user.
-\i \l QUndoView is a widget which shows the contents of an undo stack. Clicking
- on a command in the view rolls the document's state backwards or
- forwards to that command.
-\endlist
-
-\section1 Concepts
-
-The following concepts are supported by the framework:
-
-\list
-\i \bold{Clean state:} Used to signal when the document enters and leaves a
- state that has been saved to disk. This is typically used to disable or
- enable the save actions, and to update the document's title bar.
-\i \bold{Command compression:} Used to compress sequences of commands into a
- single command.
- For example: In a text editor, the commands that insert individual
- characters into the document can be compressed into a single command that
- inserts whole sections of text. These bigger changes are more convenient
- for the user to undo and redo.
-\i \bold{Command macros:} A sequence of commands, all of which are undone or
- redone in one step.
- These simplify the task of writing an application, since a set of simpler
- commands can be composed into more complex commands. For example, a command
- that moves a set of selected objects in a document can be created by
- combining a set of commands, each of which moves a single object.
-\endlist
-
-QUndoStack provides convenient undo and redo QAction objects that
-can be inserted into a menu or a toolbar. The text properties of these
-actions always reflect what command will be undone or redone when
-they are triggered. Similarly, QUndoGroup provides undo and redo actions
-that always behave like the undo and redo actions of the active stack.
-*/
diff --git a/doc/src/richtext.qdoc b/doc/src/richtext.qdoc
deleted file mode 100644
index 405afd1..0000000
--- a/doc/src/richtext.qdoc
+++ /dev/null
@@ -1,1076 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page richtext.html
-\nextpage Rich Text Document Structure
-
-\title Rich Text Processing
-\ingroup architecture
-\ingroup text-processing
-\brief An overview of Qt's rich text processing, editing and display features.
-
-The Scribe framework provides a set of classes for reading and manipulating
-structured rich text documents. Unlike previous rich text support in Qt, the
-new classes are centered around the QTextDocument class rather than raw
-textual information. This enables the developer to create and modify
-structured rich text documents without having to prepare content in an
-intermediate markup format.
-
-The information within a document can be accessed via two complementary
-interfaces: A cursor-based interface is used for editing, and a read-only
-hierarchical interface provides a high level overview of the document
-structure. The main advantage of the cursor-based interface is that the
-text can be edited using operations that mimic a user's interaction with
-an editor, without losing the underlying structure of the document. The
-read-only hierarchical interface is most useful when performing operations
-such as searching and document export.
-
-This document is divided up into chapters for convenient reference:
-
-\list
-\i \l{Rich Text Document Structure} outlines
- the different kinds of elements in a QTextDocument, and describes how
- they are arranged in a document structure.
-\i \l{The QTextCursor Interface} explains how rich
- text documents can be edited using the cursor-based interface.
-\i \l{Common Rich Text Editing Tasks} examines some
- common tasks that involve reading or manipulating rich text documents.
-\i \l{Advanced Rich Text Processing} examines advanced rich text editing tasks.
-\i \l{Supported HTML Subset} lists the HTML tags supported by QTextDocument.
-\endlist
-
-See also the list of \l{Text Processing Classes}.
-
-*/
-
-/*!
-\page richtext-structure.html
-\contentspage richtext.html Contents
-\previouspage Rich Text Processing
-\nextpage The QTextCursor Interface
-
-\title Rich Text Document Structure
-
-\tableofcontents
-
-The structured representation of a text document presents its contents as
-a hierarchy of text blocks, frames, tables, and other objects. These provide
-a logical structure to the document and describe how their contents will be
-displayed. Generally, frames and tables are used to group other
-structures while text blocks contain the actual textual information.
-
-New elements are created and inserted into the document programmatically
-\l{richtext-cursor.html}{with a QTextCursor} or by using an editor
-widget, such as QTextEdit. Elements can be given a particular format when
-they are created; otherwise they take the cursor's current format for the
-element.
-
-\table
-\row
-\i \inlineimage richtext-document.png
-\i \bold{Basic structure}
-
-The "top level" of a document might be populated in the way shown.
-Each document always contains a root frame, and this always contains
-at least one text block.
-
-For documents with some textual content, the root
-frame usually contains a sequence of blocks and other elements.
-
-Sequences of frames and tables are always separated by text blocks in a
-document, even if the text blocks contain no information. This ensures that
-new elements can always be inserted between existing structures.
-\endtable
-
-In this chapter, we look at each of the structural elements
-used in a rich text document, outline their features and uses, and show
-how to examine their contents. Document editing is described in
-\l{richtext-cursor.html}{The QTextCursor Interface}.
-
-\section1 Rich Text Documents
-
-QTextDocument objects contain all the information required to construct
-rich text documents for use with a QTextEdit widget or in a custom editor.
-Although QTextEdit makes it easy to display and edit rich text, documents
-can also be used independently of any editor widget, for example:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 0
-
-Alternatively, they can be extracted from an existing editor:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 1
-
-This flexibility enables applications to handle multiple rich text
-documents without the overhead of multiple editor widgets, or requiring
-documents to be stored in some intermediate format.
-
-An empty document contains a root frame which itself contains a single
-empty text block. The \l{richtext-cursor.html}{text cursor interface}
-automatically inserts new document elements into the root frame, and
-ensures that it is padded with empty blocks where necessary.
-
-We obtain the root frame in the following manner:
-
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.h 0
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 0
-
-When navigating the document structure, it is useful to begin at the
-root frame because it provides access to the entire document structure.
-
-\section1 Document Elements
-
-Rich text documents usually consist of common elements such as paragraphs,
-frames, tables, and lists. These are represented in a QTextDocument
-by the QTextBlock, QTextFrame, QTextTable, and QTextList classes.
-Unlike the other elements in a document, images are represented by
-specially formatted text fragments. This enables them to be placed
-formatted inline with the surrounding text.
-
-The basic structural building blocks in documents are QTextBlock and
-QTextFrame. Blocks themselves contain fragments of rich text
-(QTextFragment), but these do not directly influence the high level
-structure of a document.
-
-Elements which can group together other document elements are typically
-subclasses of QTextObject, and fall into two categories: Elements that
-group together text blocks are subclasses of QTextBlockGroup, and those
-that group together frames and other elements are subclasses of QTextFrame.
-
-\section2 Text Blocks
-
-Text blocks are provided by the QTextBlock class.
-
-Text blocks group together fragments of text with different character formats,
-and are used to represent paragraphs in the document. Each block
-typically contains a number of text fragments with different styles.
-Fragments are created when text is inserted into the document, and more
-of them are added when the document is edited. The document splits, merges,
-and removes fragments to efficiently represent the different styles
-of text in the block.
-
-The fragments within a given block can be examined by using a
-QTextBlock::iterator to traverse the block's internal structure:
-
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 3
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 5
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 6
-
-Blocks are also used to represent list items. As a result, blocks can
-define their own character formats which contain information about
-block-level decoration, such as the type of bullet points used for
-list items. The formatting for the block itself is described by the
-QTextBlockFormat class, and describes properties such as text alignment,
-indentation, and background color.
-
-Although a given document may contain complex structures, once we have a
-reference to a valid block in the document, we can navigate between each
-of the text blocks in the order in which they were written:
-
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 0
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 1
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 2
-
-This method is useful for when you want to extract just the rich text from a
-document because it ignores frames, tables, and other types of structure.
-
-QTextBlock provides comparison operators that make it easier to manipulate
-blocks: \l{QTextBlock::operator==()}{operator==()} and
-\l{QTextBlock::operator!=()}{operator!=()} are used to test whether two
-blocks are the same, and \l{QTextBlock::operator<()}{operator<()} is used
-to determine which one occurs first in a document.
-
-\section2 Frames
-
-Frames are provided by the QTextFrame class.
-
-Text frames group together blocks of text and child frames, creating
-document structures that are larger than paragraphs. The format of a frame
-specifies how it is rendered and positioned on the page. Frames are
-either inserted into the text flow, or they float on the left or right
-hand side of the page.
-Each document contains a root frame that contains all the other document
-elements. As a result, all frames except the root frame have a parent
-frame.
-
-Since text blocks are used to separate other document elements, each
-frame will always contain at least one text block, and zero or more
-child frames. We can inspect the contents of a frame by using a
-QTextFrame::iterator to traverse the frame's child elements:
-
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 1
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 2
-
-Note that the iterator selects both frames and blocks, so it is necessary
-to check which it is referring to. This allows us to navigate the document
-structure on a frame-by-frame basis yet still access text blocks if
-required. Both the QTextBlock::iterator and QTextFrame::iterator classes
-can be used in complementary ways to extract the required structure from
-a document.
-
-\section2 Tables
-
-Tables are provided by the QTextTable class.
-
-Tables are collections of cells that are arranged in rows and columns.
-Each table cell is a document element with its own character format, but it
-can also contain other elements, such as frames and text blocks. Table cells
-are automatically created when the table is constructed, or when extra rows
-or columns are added. They can also be moved between tables.
-
-QTextTable is a subclass of QTextFrame, so tables are treated like frames
-in the document structure. For each frame that we encounter in the
-document, we can test whether it represents a table, and deal with it in a
-different way:
-
-\snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 0
-\snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 1
-
-The cells within an existing table can be examined by iterating through
-the rows and columns.
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 9
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 10
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 11
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 12
-
-
-\section2 Lists
-
-Lists are provided by the QTextList class.
-
-Lists are sequences of text blocks that are formatted in the usual way, but
-which also provide the standard list decorations such as bullet points and
-enumerated items. Lists can be nested, and will be indented if the list's
-format specifies a non-zero indentation.
-
-We can refer to each list item by its index in the list:
-
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 0
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 1
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 2
-
-Since QTextList is a subclass of QTextBlockGroup, it does not group the
-list items as child elements, but instead provides various functions for
-managing them. This means that any text block we find when traversing a
-document may actually be a list item. We can ensure that list items are
-correctly identified by using the following code:
-
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 3
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 4
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 5
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 6
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 7
-
-
-\section2 Images
-
-Images in QTextDocument are represented by text fragments that reference
-external images via the resource mechanism. Images are created using the
-cursor interface, and can be modified later by changing the character
-format of the image's text fragment:
-
-\snippet doc/src/snippets/textdocument-imageformat/main.cpp 0
-\snippet doc/src/snippets/textdocument-imageformat/main.cpp 1
-\snippet doc/src/snippets/textdocument-imageformat/main.cpp 2
-
-The fragment that represents the image can be found by iterating over
-the fragments in the text block that contains the image.
-*/
-
-/*!
-\page richtext-cursor.html
-\contentspage richtext.html Contents
-\previouspage Rich Text Document Structure
-\nextpage Common Rich Text Editing Tasks
-
-\title The QTextCursor Interface
-
-\tableofcontents
-
-The QTextCursor interface allows documents and their structure to be
-edited in a way that should be familiar to most users of text editors and
-document editing software. Rich text documents can have multiple cursors
-associated with them, and each of these contains information about their
-position in the document and any selections that they may hold. This
-cursor-based paradigm makes common operations, such as cutting and pasting
-text, simple to implement programmatically, yet it also allows more complex
-editing operations to be performed on the document.
-
-This chapter describes most of the common editing operations that you
-will need to perform using a cursor, from basic insertion of text and
-document elements to more complex manipulation of document structures.
-
-\section1 Cursor-Based Editing
-
-At the simplest level, text documents are made up of a string of characters,
-marked up in some way to represent the block structure of the text within the
-document. QTextCursor provides a cursor-based interface that allows the
-contents of a QTextDocument to be manipulated at the character level. Since
-the elements (blocks, frames, tables, etc.) are also encoded in the character
-stream, the document structure can itself be changed by the cursor.
-
-The cursor keeps track of its location within its parent document, and can
-report information about the surrounding structure, such as the enclosing
-text block, frame, table, or list. The formats of the enclosing structures
-can also be directly obtained through the cursor.
-
-\section2 Using a Cursor
-
-The main use of a cursor is to insert or modify text within a block.
-We can use a text editor's cursor to do this:
-
-\snippet doc/src/snippets/textblock-formats/main.cpp 0
-
-Alternatively, we can obtain a cursor directly from a document:
-
-\snippet doc/src/snippets/textdocument-images/main.cpp 0
-
-The cursor is positioned at the start of the document so that we can write
-into the first (empty) block in the document.
-
-\section2 Grouping Cursor Operations
-
-A series of editing operations can be packaged together so that they can
-be replayed, or undone together in a single action. This is achieved by
-using the \c beginEditBlock() and \c endEditBlock() functions in the
-following way, as in the following example where we select the word that
-contains the cursor:
-
-\snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 0
-
-If editing operations are not grouped, the document automatically records
-the individual operations so that they can be undone later. Grouping
-operations into larger packages can make editing more efficient both for
-the user and for the application, but care has to be taken not to group too
-many operations together as the user may want find-grained control over the
-undo process.
-
-\section2 Multiple Cursors
-
-Multiple cursors can be used to simultaneously edit the same document,
-although only one will be visible to the user in a QTextEdit widget.
-The QTextDocument ensures that each cursor writes text correctly and
-does not interfere with any of the others.
-
-\omit
-\snippet doc/src/snippets/textdocument-cursors/main.cpp 0
-\snippet doc/src/snippets/textdocument-cursors/main.cpp 1
-\endomit
-
-\section1 Inserting Document Elements
-
-QTextCursor provides several functions that can be used to change the
-structure of a rich text document. Generally, these functions allow
-document elements to be created with relevant formatting information,
-and they are inserted into the document at the cursor's position.
-
-The first group of functions insert block-level elements, and update the
-cursor position, but they do not return the element that was inserted:
-
-\list
-\i \l{QTextCursor::insertBlock()}{insertBlock()} inserts a new text block
- (paragraph) into a document at the cursor's position, and moves the
- cursor to the start of the new block.
-\i \l{QTextCursor::insertFragment()}{insertFragment()} inserts an existing
- text fragment into a document at the cursor's position.
-\i \l{QTextCursor::insertImage()}{insertImage()} inserts an image into a
- document at the cursor's position.
-\i \l{QTextCursor::insertText()}{insertText()} inserts text into the
- document at the cursor's position.
-\endlist
-
-You can examine the contents of the element that was inserted through the
-cursor interface.
-
-The second group of functions insert elements that provide structure to
-the document, and return the structure that was inserted:
-
-\list
-\i \l{QTextCursor::insertFrame()}{insertFrame()} inserts a frame into the
- document \e after the cursor's current block, and moves the cursor to
- the start of the empty block in the new frame.
-\i \l{QTextCursor::insertList()}{insertList()} inserts a list into the
- document at the cursor's position, and moves the cursor to the start
- of the first item in the list.
-\i \l{QTextCursor::insertTable()}{insertTable()} inserts a table into
- the document \e after the cursor's current block, and moves the cursor
- to the start of the block following the table.
-\endlist
-
-These elements either contain or group together other elements in the
-document.
-
-\section2 Text and Text Fragments
-
-Text can be inserted into the current block in the current character
-format, or in a custom format that is specified with the text:
-
-\snippet doc/src/snippets/textdocument-charformats/main.cpp 0
-
-Once the character format has been used with a cursor, that format becomes
-the default format for any text inserted with that cursor until another
-character format is specified.
-
-If a cursor is used to insert text without specifying a character format,
-the text will be given the character format used at that position in the
-document.
-
-\section2 Blocks
-
-Text blocks are inserted into the document with the
-\l{QTextCursor::insertBlock()}{insertBlock()} function.
-
-\snippet doc/src/snippets/textblock-formats/main.cpp 1
-
-The cursor is positioned at the start of the new block.
-
-\section2 Frames
-
-Frames are inserted into a document using the cursor, and will be placed
-within the cursor's current frame \e after the current block.
-The following code shows how a frame can be inserted between two text
-blocks in a document's root frame. We begin by finding the cursor's
-current frame:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 0
-
-We insert some text in this frame then set up a frame format for the
-child frame:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 1
-
-The frame format will give the frame an external margin of 32 pixels,
-internal padding of 8 pixels, and a border that is 4 pixels wide.
-See the QTextFrameFormat documentation for more information about
-frame formats.
-
-The frame is inserted into the document after the preceding text:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 2
-
-We add some text to the document immediately after we insert the frame.
-Since the text cursor is positioned \e{inside the frame} when it is inserted
-into the document, this text will also be inserted inside the frame.
-
-Finally, we position the cursor outside the frame by taking the last
-available cursor position inside the frame we recorded earlier:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 3
-
-The text that we add last is inserted after the child frame in the
-document. Since each frame is padded with text blocks, this ensures that
-more elements can always be inserted with a cursor.
-
-\section2 Tables
-
-Tables are inserted into the document using the cursor, and will be
-placed within the cursor's current frame \e after the current block:
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 0
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 3
-
-Tables can be created with a specific format that defines the overall
-properties of the table, such as its alignment, background color, and
-the cell spacing used. It can also determine the constraints on each
-column, allowing each of them to have a fixed width, or resize according
-to the available space.
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 2
-
-The columns in the table created above will each take up a certain
-percentage of the available width. Note that the table format is
-optional; if you insert a table without a format, some sensible
-default values will be used for the table's properties.
-
-Since cells can contain other document elements, they too can be
-formatted and styled as necessary.
-
-Text can be added to the table by navigating to each cell with the cursor
-and inserting text.
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 4
-
-We can create a simple timetable by following this approach:
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 5
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 6
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 7
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 8
-
-\section2 Lists
-
-Lists of block elements can be automatically created and inserted into the
-document at the current cursor position. Each list that is created in this
-way requires a list format to be specified:
-
-\snippet doc/src/snippets/textdocument-lists/mainwindow.cpp 0
-
-The above code first checks whether the cursor is within an existing list
-and, if so, gives the list format for the new list a suitable level of
-indentation. This allows nested lists to be created with increasing
-levels of indentation. A more sophisticated implementation would also use
-different kinds of symbol for the bullet points in each level of the list.
-
-\section2 Images
-
-Inline images are added to documents through the cursor in the usual manner.
-Unlike many other elements, all of the image properties are specified by the
-image's format. This means that a QTextImageFormat object has to be
-created before an image can be inserted:
-
-\snippet doc/src/snippets/textdocument-images/main.cpp 1
-
-The image name refers to an entry in the application's resource file.
-The method used to derive this name is described in
-\l{resources.html}{The Qt Resource System}.
-
-*/
-
-/*!
-\page richtext-common-tasks.html
-\contentspage richtext.html Contents
-\previouspage The QTextCursor Interface
-\nextpage Advanced Rich Text Processing
-
-\title Common Rich Text Editing Tasks
-
-\tableofcontents
-
-There are a number of tasks that are often performed by developers
-when editing and processing text documents using Qt. These include the use
-of display widgets such as QTextBrowser and QTextEdit, creation of
-documents with QTextDocument, editing using a QTextCursor, and
-exporting the document structure.
-This document outlines some of the more common ways of using the rich
-text classes to perform these tasks, showing convenient patterns that can
-be reused in your own applications.
-
-\section1 Using QTextEdit
-
-A text editor widget can be constructed and used to display HTML in the
-following way:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 2
-
-By default, the text editor contains a document with a root frame, inside
-which is an empty text block. This document can be obtained so that it can
-be modified directly by the application:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 3
-
-The text editor's cursor may also be used to edit a document:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 4
-
-Although a document can be edited using many cursors at once, a QTextEdit
-only displays a single cursor at a time. Therefore, if we want to update the
-editor to display a particular cursor or its selection, we need to set the
-editor's cursor after we have modified the document:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 5
-
-\section1 Selecting Text
-
-Text is selected by moving the cursor using operations that are similar to
-those performed by a user in a text editor. To select text between two
-points in the document, we need to position the cursor at the first point
-then move it using a special mode (\l{QTextCursor::MoveMode}) with a
-move operation (\l{QTextCursor::MoveOperation}).
-When we select the text, we leave the selection anchor at the old cursor
-position just as the user might do by holding down the Shift key when
-selecting text:
-
-\snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 1
-
-In the above code, a whole word is selected using this method. QTextCursor
-provides a number of common move operations for selecting individual
-characters, words, lines, and whole blocks.
-
-\section1 Finding Text
-
-QTextDocument provides a cursor-based interface for searching, making
-it easy to find and modify text in the style of a text editor. The following
-code finds all the instances of a particular word in a document, and changes
-the color of each:
-
-\snippet doc/src/snippets/textdocument-find/main.cpp 0
-\snippet doc/src/snippets/textdocument-find/main.cpp 1
-
-Note that the cursor does not have to be moved after each search and replace
-operation; it is always positioned at the end of the word that was just
-replaced.
-
-\section1 Printing Documents
-
-QTextEdit is designed for the display of large rich text documents that are
-read on screen, rendering them in the same way as a web browser. As a result,
-it does not automatically break the contents of the document into page-sized
-pieces that are suitable for printing.
-
-QTextDocument provides a \l{QTextDocument::print()}{print()} function to
-allow documents to be printed using the QPrinter class. The following code
-shows how to prepare a document in a QTextEdit for printing with a QPrinter:
-
-\snippet doc/src/snippets/textdocument-printing/mainwindow.cpp 0
-
-The document is obtained from the text editor, and a QPrinter is constructed
-then configured using a QPrintDialog. If the user accepts the printer's
-configuration then the document is formatted and printed using the
-\l{QTextDocument::print()}{print()} function.
-
-*/
-
-/*!
-\page richtext-advanced-processing.html
-\contentspage richtext.html Contents
-\previouspage Common Rich Text Editing Tasks
-\nextpage Supported HTML Subset
-
-\title Advanced Rich Text Processing
-
-\section1 Handling Large Files
-
-Qt does not limit the size of files that are used for text
-processing. In most cases, this will not present a problem. For
-especially large files, however, you might experience that your
-application will become unresponsive or that you will run out of
-memory. The size of the files you can load depends on your
-hardware and on Qt's and your own application's implementation.
-
-If you are faced with this problem, we recommend that you address the
-following issues:
-
-\list
- \o You should consider breaking up large paragraphs into smaller
- ones as Qt handles small paragraphs better. You could also
- insert line breaks at regular intervals, which will look the
- same as one large paragraph in a QTextEdit.
- \o You can reduce the amount of blocks in a QTextDocument with
- \l{QTextDocument::}{maximumBlockCount()}. The document is only
- as large as the number of blocks as far as QTextEdit is concerned.
- \o When adding text to a text edit, it is an advantage to add it
- in an edit block (see example below). The result is that the
- text edit does not need to build the entire document structure at once.
-\endlist
-
-We give an example of the latter technique from the list. We assume that
-the text edit is visible.
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 6
-
-\omit
-Ideas for other sections:
-
- * Hiding QTextBlock elements.
- * Changing the word wrapping mode in QTextEdit. Custom word wrapping?
-\endomit
-*/
-
-/*!
- \page richtext-html-subset.html
- \title Supported HTML Subset
- \brief Describes the support for HTML markup in text widgets.
-
- \contentspage richtext.html Contents
- \previouspage Common Rich Text Editing Tasks
-
- Qt's text widgets are able to display rich text, specified using a subset of \l{HTML 4}
- markup. Widgets that use QTextDocument, such as QLabel and QTextEdit, are able to display
- rich text specified in this way.
-
- \tableofcontents
-
- \section1 Using HTML Markup in Text Widgets
-
- Widgets automatically detect HTML markup and display rich text accordingly. For example,
- setting a label's \l{QLabel::}{text} property with the string \c{"<b>Hello</b> <i>Qt!</i>"}
- will result in the label displaying text like this: \bold{Hello} \e{Qt!}
-
- When HTML markup is used for text, Qt follows the rules defined by the \l{HTML 4}
- specification. This includes default properties for text layout, such as the
- direction of the text flow (left-to-right) which can be changed by applying the
- \l{#Block Attributes}{\c dir} attribute to blocks of text.
-
- \section1 Supported Tags
-
- The following table lists the HTML tags supported by Qt's
- \l{Rich Text Processing}{rich text} engine:
-
- \table
- \header \o Tag
- \o Description
- \o Comment
- \row \o \c a
- \o Anchor or link
- \o Supports the \c href and \c name attributes.
- \row \o \c address
- \o Address
- \o
- \row \o \c b
- \o Bold
- \o
- \row \o \c big
- \o Larger font
- \o
- \row \o \c blockquote
- \o Indented paragraph
- \o
- \row \o \c body
- \o Document body
- \o Supports the \c bgcolor attribute, which
- can be a Qt \l{QColor::setNamedColor()}{color name}
- or a \c #RRGGBB color specification.
- \row \o \c br
- \o Line break
- \o
- \row \o \c center
- \o Centered paragraph
- \o
- \row \o \c cite
- \o Inline citation
- \o Same as \c i.
- \row \o \c code
- \o Code
- \o Same as \c tt.
- \row \o \c dd
- \o Definition data
- \o
- \row \o \c dfn
- \o Definition
- \o Same as \c i.
- \row \o \c div
- \o Document division
- \o Supports the standard \l{block attributes}.
- \row \o \c dl
- \o Definition list
- \o Supports the standard \l{block attributes}.
- \row \o \c dt
- \o Definition term
- \o Supports the standard \l{block attributes}.
- \row \o \c em
- \o Emphasized
- \o Same as \c i.
- \row \o \c font
- \o Font size, family, and/or color
- \o Supports the following attributes:
- \c size, \c face, and \c color (Qt
- \l{QColor::setNamedColor()}{color names} or
- \c #RRGGBB).
- \row \o \c h1
- \o Level 1 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h2
- \o Level 2 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h3
- \o Level 3 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h4
- \o Level 4 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h5
- \o Level 5 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h6
- \o Level 6 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c head
- \o Document header
- \o
- \row \o \c hr
- \o Horizontal line
- \o Supports the \c width attribute, which can
- be specified as an absolute or relative (\c %) value.
- \row \o \c html
- \o HTML document
- \o
- \row \o \c i
- \o Italic
- \o
- \row \o \c img
- \o Image
- \o Supports the \c src, \c source
- (for Qt 3 compatibility), \c width, and \c height
- attributes.
- \row \o \c kbd
- \o User-entered text
- \o
- \row \o \c meta
- \o Meta-information
- \o If a text encoding is specified using the \c{meta} tag,
- it is picked up by Qt::codecForHtml().
- Likewise, if an encoding is specified to
- QTextDocument::toHtml(), the encoding is stored using
- a \c meta tag, for example:
-
- \snippet doc/src/snippets/code/doc_src_richtext.qdoc 7
-
- \row \o \c li
- \o List item
- \o
- \row \o \c nobr
- \o Non-breakable text
- \o
- \row \o \c ol
- \o Ordered list
- \o Supports the standard \l{list attributes}.
- \row \o \c p
- \o Paragraph
- \o Left-aligned by default. Supports the standard
- \l{block attributes}.
- \row \o \c pre
- \o Preformated text
- \o
- \row \o \c qt
- \o Qt rich-text document
- \o Synonym for \c html. Provided for compatibility with
- earlier versions of Qt.
- \row \o \c s
- \o Strikethrough
- \o
- \row \o \c samp
- \o Sample code
- \o Same as \c tt.
- \row \o \c small
- \o Small font
- \o
- \row \o \c span
- \o Grouped elements
- \o
- \row \o \c strong
- \o Strong
- \o Same as \c b.
- \row \o \c sub
- \o Subscript
- \o
- \row \o \c sup
- \o Superscript
- \o
- \row \o \c table
- \o Table
- \o Supports the following attributes: \c border,
- \c bgcolor (Qt \l{QColor::setNamedColor()}{color names}
- or \c #RRGGBB), \c cellspacing, \c cellpadding,
- \c width (absolute or relative), and \c height.
- \row \o \c tbody
- \o Table body
- \o Does nothing.
- \row \o \c td
- \o Table data cell
- \o Supports the standard \l{table cell attributes}.
- \row \o \c tfoot
- \o Table footer
- \o Does nothing.
- \row \o \c th
- \o Table header cell
- \o Supports the standard \l{table cell attributes}.
- \row \o \c thead
- \o Table header
- \o If the \c thead tag is specified, it is used when printing tables
- that span multiple pages.
- \row \o \c title
- \o Document title
- \o The value specified using the \c
- title tag is available through
- QTextDocument::metaInformation().
- \row \o \c tr
- \o Table row
- \o Supports the \c bgcolor attribute, which
- can be a Qt \l{QColor::setNamedColor()}{color name}
- or a \c #RRGGBB color specification.
- \row \o \c tt
- \o Typewrite font
- \o
- \row \o \c u
- \o Underlined
- \o
- \row \o \c ul
- \o Unordered list
- \o Supports the standard \l{list attributes}.
- \row \o \c var
- \o Variable
- \o Same as \c i.
- \endtable
-
- \section1 Block Attributes
-
- The following attributes are supported by the \c div, \c dl, \c
- dt, \c h1, \c h2, \c h3, \c h4, \c h5, \c h6, \c p tags:
-
- \list
- \o \c align (\c left, \c right, \c center, \c justify)
- \o \c dir (\c ltr, \c rtl)
- \endlist
-
- \section1 List Attributes
-
- The following attribute is supported by the \c ol and \c ul tags:
-
- \list
- \o \c type (\c 1, \c a, \c A, \c square, \c disc, \c circle)
- \endlist
-
- \section1 Table Cell Attributes
-
- The following attributes are supported by the \c td and \c th
- tags:
-
- \list
- \o \c width (absolute, relative, or no-value)
- \o \c bgcolor (Qt \l{QColor::setNamedColor()}{color names} or \c #RRGGBB)
- \o \c colspan
- \o \c rowspan
- \o \c align (\c left, \c right, \c center, \c justify)
- \o \c valign (\c top, \c middle, \c bottom)
- \endlist
-
- \section1 CSS Properties
- The following table lists the CSS properties supported by Qt's
- \l{Rich Text Processing}{rich text} engine:
-
- \table
- \header \o Property
- \o Values
- \o Description
- \row
- \o \c background-color
- \o <color>
- \o Background color for elements
- \row
- \o \c background-image
- \o <uri>
- \o Background image for elements
- \row \o \c color
- \o <color>
- \o Text foreground color
- \row \o \c font-family
- \o <family name>
- \o Font family name
- \row \o \c font-size
- \o [ small | medium | large | x-large | xx-large ] | <size>pt | <size>px
- \o Font size relative to the document font, or specified in points or pixels
- \row \o \c font-style
- \o [ normal | italic | oblique ]
- \o
- \row \o \c font-weight
- \o [ normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 ]
- \o Specifies the font weight used for text, where \c normal and \c bold
- are mapped to the corresponding QFont weights. Numeric values are
- 8 times the equivalent QFont weight values.
- \row \o \c text-decoration
- \o none | [ underline || overline || line-through ]
- \o Additional text effects
- \row \o \c font
- \o [ [ <'font-style'> || <'font-weight'> ]? <'font-size'> <'font-family'> ]
- \o Font shorthand property
- \row \o \c text-indent
- \o <length>px
- \o First line text indentation in pixels
- \row \o \c white-space
- \o normal | pre | nowrap | pre-wrap
- \o Declares how whitespace in HTML is handled.
- \row \o \c margin-top
- \o <length>px
- \o Top paragraph margin in pixels
- \row \o \c margin-bottom
- \o <length>px
- \o Bottom paragraph margin in pixels
- \row \o \c margin-left
- \o <length>px
- \o Left paragraph margin in pixels
- \row \o \c margin-right
- \o <length>px
- \o Right paragraph margin in pixels
- \row \o \c padding-top
- \o <length>px
- \o Top table cell padding in pixels
- \row \o \c padding-bottom
- \o <length>px
- \o Bottom table cell padding in pixels
- \row \o \c padding-left
- \o <length>px
- \o Left table cell padding in pixels
- \row \o \c padding-right
- \o <length>px
- \o Right table cell padding in pixels
- \row \o \c padding
- \o <length>px
- \o Shorthand for setting all the padding properties at once.
- \row \o \c vertical-align
- \o baseline | sub | super | middle | top | bottom
- \o Vertical text alignment. For vertical alignment in text table cells only middle, top, and bottom apply.
- \row \o \c border-color
- \o <color>
- \o Border color for text tables.
- \row \o \c border-style
- \o none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset
- \o Border style for text tables.
- \row \o \c background
- \o [ <'background-color'> || <'background-image'> ]
- \o Background shorthand property
- \row \o \c page-break-before
- \o [ auto | always ]
- \o Make it possible to enforce a page break before the paragraph/table
- \row \o \c page-break-after
- \o [ auto | always ]
- \o Make it possible to enforce a page break after the paragraph/table
- \row \o float
- \o [ left | right | none ]
- \o Specifies where an image or a text will be placed in another element. Note that the \c float property is
- only supported for tables and images.
- \row \o \c text-transform
- \o [ uppercase | lowercase ]
- \o Select the transformation that will be performed on the text prior to displaying it.
- \row \o \c font-variant
- \o small-caps
- \o Perform the smallcaps transformation on the text prior to displaying it.
- \row \o \c word-spacing
- \o <width>px
- \o Specifies an alternate spacing between each word.
- \endtable
-
- \section1 Supported CSS Selectors
-
- All CSS 2.1 selector classes are supported except pseudo-class selectors such
- as \c{:first-child}, \c{:visited} and \c{:hover}.
-
-*/
diff --git a/doc/src/ecmascript.qdoc b/doc/src/scripting/ecmascript.qdoc
index a13f55d..e6c36d1 100644
--- a/doc/src/ecmascript.qdoc
+++ b/doc/src/scripting/ecmascript.qdoc
@@ -42,7 +42,6 @@
/*!
\page ecmascript.html
\title ECMAScript Reference
- \ingroup scripting
\brief A list of objects, functions and properties supported by QtScript.
This reference contains a list of objects, functions and
diff --git a/doc/src/qtscriptdebugger-manual.qdoc b/doc/src/scripting/qtscriptdebugger-manual.qdoc
index 5c80a7e..1dada93 100644
--- a/doc/src/qtscriptdebugger-manual.qdoc
+++ b/doc/src/scripting/qtscriptdebugger-manual.qdoc
@@ -42,7 +42,6 @@
/*!
\page qtscriptdebugger-manual.html
\title Qt Script Debugger Manual
- \ingroup scripting
\brief A manual describing how to use the Qt Script debugger.
The Qt Script debugger is a tool for debugging script execution in
diff --git a/doc/src/qtscriptextensions.qdoc b/doc/src/scripting/qtscriptextensions.qdoc
index ed09862..d0317ff 100644
--- a/doc/src/qtscriptextensions.qdoc
+++ b/doc/src/scripting/qtscriptextensions.qdoc
@@ -39,20 +39,9 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page qtscriptextensions.html
\title Creating QtScript Extensions
- \ingroup scripting
\brief A guide to creating and using QtScript extensions.
QtScript extensions can make additional functionality available to scripts
diff --git a/doc/src/qtscript.qdoc b/doc/src/scripting/scripting.qdoc
index 33b5691..5fcf8b2 100644
--- a/doc/src/qtscript.qdoc
+++ b/doc/src/scripting/scripting.qdoc
@@ -40,38 +40,28 @@
****************************************************************************/
/*!
- \module QtScript
- \title QtScript Module
- \since 4.3
- \contentspage Qt's Modules
- \previouspage QtOpenVG
- \nextpage QtScriptTools
- \ingroup modules
- \ingroup scripting
+ \group script
+ \title Scripting Classes and Overviews
- \brief The QtScript module provides classes for making Qt applications scriptable.
+ \brief Classes that add scripting capabilities to Qt applications.
+*/
- \tableofcontents
-
- \section1 Configuring the Build Process
-
- Applications that use Qt's Script classes need to
- be configured to be built against the QtScript module.
- To include the definitions of the module's classes, use the
- following directive:
+/*!
+ \page scripting.html
+ \title Making Applications Scriptable
+ \ingroup frameworks-technologies
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 0
+ Qt 4.3 and later provides support for application scripting with ECMAScript.
+ The following guides and references cover aspects of programming with
+ ECMAScript and Qt.
- To link against the module, add this line to your \l qmake \c .pro file:
+ \tableofcontents
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 1
+ \section1 Scripting Classes
- The QtScript module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
+ The following classes add scripting capabilities to Qt applications.
- The QtScript module only provides core scripting facilities; the
- QtScriptTools module provides additional Qt Script-related
- components that application developers may find useful.
+ \annotatedlist script
\section1 Language Overview
@@ -287,11 +277,15 @@
When a signal or slot is overloaded, QtScript will attempt to
pick the right overload based on the actual types of the QScriptValue arguments
- involved in the function invocation. For example, if your class has slots \c{myOverloadedSlot(int)} and \c{myOverloadedSlot(QString)}, the following script code will behave reasonably:
+ involved in the function invocation. For example, if your class has slots
+ \c{myOverloadedSlot(int)} and \c{myOverloadedSlot(QString)}, the following
+ script code will behave reasonably:
\snippet doc/src/snippets/code/doc_src_qtscript.qdoc 11
- You can specify a particular overload by using array-style property access with the \l{QMetaObject::normalizedSignature()}{normalized signature} of the C++ function as the property name:
+ You can specify a particular overload by using array-style property access
+ with the \l{QMetaObject::normalizedSignature()}{normalized signature} of
+ the C++ function as the property name:
\snippet doc/src/snippets/code/doc_src_qtscript.qdoc 12
@@ -1371,8 +1365,7 @@
When experimenting with QtScript objects and inheritance, it can be
helpful to use the interactive interpreter included with the
- \l{Qt Examples#Qt Script}{Qt Script examples}, located in
- \c{examples/script/qscript}.
+ \l{Qt Script Examples}, located in \c{examples/script/qscript}.
\section2 Prototype Objects and Shared Properties
@@ -1689,8 +1682,9 @@
doesn't provide any debugging-specific functionality (e.g. setting
breakpoints), but it is the basis of tools that do.
- The QScriptEngineDebugger class introduced in Qt 4.5 provides a Qt Script
- debugger that can be embedded into your application.
+ The QScriptEngineDebugger class introduced in Qt 4.5 provides a
+ \l{Qt Script Debugger Manual}{Qt Script debugger} that can be embedded
+ into your application.
\section2 Redefining print()
@@ -1721,8 +1715,9 @@
scripts. There are currently no script plugins shipped with Qt.
If you are implementing some Qt Script functionality that you want other
- Qt application developers to be able to use, developing an extension (e.g.
- by subclassing QScriptExtensionPlugin) is worth looking into.
+ Qt application developers to be able to use, \l{Creating QtScript Extensions}
+ {developing an extension} (e.g. by subclassing QScriptExtensionPlugin) is
+ worth looking into.
\section1 Internationalization
diff --git a/doc/src/snippets/code/doc_src_qtmultimedia.qdoc b/doc/src/snippets/code/doc_src_qtmultimedia.qdoc
new file mode 100644