diff options
author | Volker Hilsheimer <volker.hilsheimer@nokia.com> | 2009-08-17 16:37:42 (GMT) |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@nokia.com> | 2009-08-17 16:37:42 (GMT) |
commit | 911557fcf7dedc002e689a0d66efd2b77e044bd1 (patch) | |
tree | a66138f008c27f39e5306dc6f2df01c129e11988 /doc/src/designer-manual.qdoc | |
parent | 285d4b12cb937a5672d6eb15781f03d249f8cfc1 (diff) | |
download | Qt-911557fcf7dedc002e689a0d66efd2b77e044bd1.zip Qt-911557fcf7dedc002e689a0d66efd2b77e044bd1.tar.gz Qt-911557fcf7dedc002e689a0d66efd2b77e044bd1.tar.bz2 |
Restructure the documentation, both on a file and on a content level.
- directory structure in doc/src
- moving of class-specific documentation together with classes
- new, less cluttered index page
- significantely reduced number of "groups of classes"
- categorized all (?) documentation into "Frameworks" or "Howtos"
- reformatting of examples pages
- splitting of very long documentation pages into walkthroughs
- some writing where it was missing
Squashed commit of the following:
commit b44ea6c917a7470a678509f4c6c9b8836d277346
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 18:32:09 2009 +0200
Some cleaning up in the categories.
commit b592c6eba72332fd23911251d836cf0af4514bae
Merge: 1e10d9e 285d4b1
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 18:20:57 2009 +0200
Merge branch 'master' into doccleanup
commit 1e10d9e732f4171e61b3d1ecf0b64f7509e71607
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 18:19:03 2009 +0200
Split the "io" group into "io" and "network".
And list the network classes in the respective overview documentation.
commit fae86d24becb69c532a9c3b4fbf744c44a54f49d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 18:00:32 2009 +0200
Move the string-processing classes together with the Unicode in Qt docu.
commit d2a6dd3307b0306bd7a8e283e11a99e833206963
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 18:00:14 2009 +0200
Not a toplevel topic, it's within the "paint system" set of pages.
commit 44cba00cdf7fb086dd3bb62b15c0f9a7915e20c2
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 17:57:37 2009 +0200
"Canvas UI" is not a stand-alone concept in Qt - yet!
commit 5f6e69b38fbca661709bc20b502ab0bc1b251b96
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 17:43:01 2009 +0200
Can just as well delete the old index.
commit aa5ec5327dceb1d3df62b990a32c970cce03ba9c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 17:39:52 2009 +0200
Some rephrasing and easier access to the "Keyboard Focus" docu.
commit 6248de281565cafce12221c902e9944867b338b3
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 17:37:02 2009 +0200
Replace the old index with the new index.
commit 110acab8af0c99db9905b0f4cc6e93c325b1e3c6
Merge: d88d526 53807e5
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 17 16:04:59 2009 +0200
Merge branch 'master' into doccleanup
commit d88d52681d758e9e730de0e69290472728bf8c40
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sun Aug 16 17:34:14 2009 +0200
Give the "Widgets and Layouts" topic a bit more content.
commit 01e108a5f2d1d0948c2093987a77f222d6cc4d09
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sun Aug 16 14:21:41 2009 +0200
Move OpenVG "best practices" documentation into howtos directory.
commit 86f4ca38f965909a29cee0478c537558a4ea8f5a
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sun Aug 16 14:18:32 2009 +0200
Add module documentation for OpenVG and Multimedia.
commit 9fef923acbbb75cdc3fc4e984aec177ddcd24c53
Merge: e7e5cd9 72c1cb2
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sun Aug 16 13:20:23 2009 +0200
Merge branch 'master' into doccleanup
commit e7e5cd9444ac0e7be55ecfbeb8c9ace23784205b
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sun Aug 16 13:20:08 2009 +0200
Add Google custom search box.
Not sure why that change was never merged in by git.
commit 348372947a3d7da2b28325731ac02bbc67cdec41
Merge: 3ff51b9 aa09d4f
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 15 02:14:31 2009 +0200
Merge branch 'master' into doccleanup
commit 3ff51b9b52af39c00a938db380809e36b6c701c9
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 15 02:09:38 2009 +0200
Minor word-smithing.
commit da612b4130061e094a16d47a450f3f3fe6f547c7
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 15 01:55:16 2009 +0200
Separating the "multimedia" group into reasonable sets of classes.
commit 838955a1a780e41ea77676e1bef8e471c7a2a2f5
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Aug 14 23:12:33 2009 +0200
Just one file, doesn't need a separate directory.
commit b99f56262faa4410880d08787f2c8d9a509d303d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Aug 14 23:05:59 2009 +0200
Move documentation for Asian codecs into src/corelib/codecs.
Not ideal, the source of most of those codecs live in src/plugins/codecs,
but since this is no real API documentation it's probably appropriate.
commit ba2258c0b6587d959cdfe6ff99c4d36319077aac
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Aug 14 22:24:33 2009 +0200
Renaming of files that used old product/company names.
commit 30ee7deb935bb3de4257cd71be5ba9610376047c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Aug 14 22:14:30 2009 +0200
Those will only used by "Qt 4 for Qt 3" users, so leave the original text.
commit d0c110d047bbbd2dde70fc51ad702db59fa3883b
Merge: c5eccd5 8198d35
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Aug 14 22:12:15 2009 +0200
Merge branch 'master' into doccleanup
commit c5eccd51ad85cfaf07ea8522a977b7bef70f70fd
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Aug 14 22:09:43 2009 +0200
Moving some last files from doc/src into subdirectories.
commit d2dc303d92c1f66bf721b65fca1c6d55ab7ec01d
Merge: 0bdf16e a835ec7
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Aug 14 15:39:59 2009 +0200
Merge branch 'master' into doccleanup
commit 0bdf16e1bb04e532d4cc72c5646cb28470d5e627
Merge: 04bb351 c73fd72
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Aug 14 13:08:37 2009 +0200
Merge branch 'master' into doccleanup
Conflicts:
src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp
commit 04bb3513f107a895cfbbf98f8c4f9a67e392c72a
Merge: 8a52ce8 07d2ce1
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 12 19:58:04 2009 +0200
Merge branch 'master' into doccleanup
Conflicts:
tools/qdoc3/test/qt-html-templates.qdocconf
commit 8a52ce8055d5d8b1bf799bf1fdde18aaf8b940c7
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 12 13:30:50 2009 +0200
Fix some links to the qt.nokia.com page, and at least some linking to IO.
commit f7823801bf750b0b76ce0871c3f9e8e59c7901fe
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 12 12:27:19 2009 +0200
Make links in header point to the pages with links to everything else.
commit 335012b7e96698d6ec7994fdfd52813140f12413
Merge: 21b1263 96b6a3c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 12 12:17:57 2009 +0200
Merge branch 'master' into doccleanup
Conflicts:
doc/src/classes/qtdesigner-api.qdoc
doc/src/desktop-integration.qdoc
doc/src/distributingqt.qdoc
doc/src/examples-overview.qdoc
doc/src/examples.qdoc
doc/src/frameworks-technologies/dbus-adaptors.qdoc
doc/src/geometry.qdoc
doc/src/groups.qdoc
doc/src/objecttrees.qdoc
doc/src/plugins-howto.qdoc
doc/src/qt4-accessibility.qdoc
doc/src/qt4-scribe.qdoc
doc/src/qt4-sql.qdoc
doc/src/qt4-styles.qdoc
doc/src/qtdbus.qdoc
doc/src/qtgui.qdoc
doc/src/qtmain.qdoc
doc/src/qtopengl.qdoc
doc/src/qtscripttools.qdoc
doc/src/qtsvg.qdoc
doc/src/qtuiloader.qdoc
doc/src/qundo.qdoc
doc/src/richtext.qdoc
doc/src/topics.qdoc
doc/src/xml-processing/xml-processing.qdoc
commit 21b126346989a86a828ee8a66bb12108d2bb2b71
Merge: 88e7d76 204c771
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 11 18:15:17 2009 +0200
Merge branch 'master' into doccleanup
commit 88e7d76ceec664404a913469025ed9a7ca6f4fb0
Merge: 97c4128 1c62dc4
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 11 18:00:56 2009 +0200
Merge branch 'master' into doccleanup
commit 97c412815162859d853c5a4ede1eb9bd4be4af9b
Merge: cf5d8ae 4096911
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 19:27:08 2009 +0200
Merge branch 'master' into doccleanup
commit cf5d8ae4b09a92fed5b4e4cabbcfd49116e9e13f
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 19:09:57 2009 +0200
This should link to the platform specific documentation.
commit 38610f0ff210286f92528495d48f434d2c0db8e8
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 18:59:35 2009 +0200
These groups are embedded in the respective framework overview already.
commit 1e58a90c561d33aada9427b17db8e0f7bbe02fa7
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 18:54:47 2009 +0200
Remove howtos and overviews from script group.
The "Making Applications Scriptable" page needs to be split into a
walkthrough anyway.
commit 1e68b8d7d53500b8fb6c9c821d46e045ed7efe6f
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 18:30:10 2009 +0200
Groups are for classes. The objectmodel framework overview links to those.
commit a0a95420c82e2a77150b070e98609aa3e1b3b1a6
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 18:22:20 2009 +0200
Kill the "buildsystem" group.
All documents can be reached through the "Developing with Qt" page.
commit 7b23a40c5ba3a215fba6032ad96199b5c9797e98
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 18:07:23 2009 +0200
This guide should only be in the porting group.
commit ef731bcc53a9b34ba3b42e5ad7caf4234941c4a9
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 18:06:21 2009 +0200
Phonon is a framework on its own.
The whole "multimedia" group is a rather random collection of stuff...
commit 5d290d48fc428573ccd31861cf57d214051ba349
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 17:59:36 2009 +0200
Move the Qt Help documentation into frameworks.
This needs a bit of a rewrite, and the list of classes needs to be
integrated.
commit 5e4d094c8712bfb46d844e09746aad5da3ac4a91
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 17:58:52 2009 +0200
The list of all classes that use implicit sharing is not useful on its own.
commit 2059a0be23c5953f9758098cb7a9416cb86d5ad1
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 17:55:20 2009 +0200
Make the QtScript overview documentation part of frameworks.
commit 3413696bd745ee5862aa517dcfc9c8446fee9b82
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 17:54:59 2009 +0200
Make the list of drag & drop classes part of the framework docu.
commit f1c85ea263b30de1e1a1f6c5cb8b8d9ee12254cb
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 17:44:57 2009 +0200
Porting guides are part of the Howto's
commit cfcc742f938cf7c278f1f8b11b24a61f62fb4c62
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 17:44:26 2009 +0200
All platform specific docu is available through one toplevel page.
commit 53c642fe4cbc2dbd44fe5b9b4e32feeca438b5c3
Merge: c564285 41537bb
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 16:48:09 2009 +0200
Merge branch 'master' into doccleanup
commit c5642857b2f2364134f58776661cc08a9da13b2c
Merge: 9cdeba7 24aa363
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 10 15:53:47 2009 +0200
Merge branch 'master' into doccleanup
commit 9cdeba712c51eb0bf71eab35080734a2b93efcc5
Merge: 09dac33 d13418e
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 8 11:46:42 2009 +0200
Merge branch 'master' into doccleanup
commit 09dac333d427792a8d33fa311a63c620678e7920
Merge: f7b211e dfa2842
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Aug 7 15:40:33 2009 +0200
Merge branch 'master' into doccleanup
Conflicts:
doc/src/examples.qdoc
commit f7b211e5588fee20913a8d02c55cca0e05ea2859
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Aug 6 14:58:49 2009 +0200
Rename file to follow naming scheme and resulting html.
commit ed6432fea376e60e4dd7c8987ed61a063af11ac7
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Aug 6 14:58:10 2009 +0200
Structure the XML documentation into a walk-through.
The XmlPatterns docu should probably be split into two or three sections,
XQuery, XPath and XML Schema.
commit 3dbc1d4ca08d3cac47ca2709b6fb1a2419442c36
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Aug 6 14:15:00 2009 +0200
Add a table of contents.
commit 1569c35cb90c10ead72dcea2c4b99a0a6cbfcc13
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Aug 6 14:04:52 2009 +0200
Splitting the long SQL documentation into walkthrough steps.
commit 6a05688bce3cca34dd1b8b323b8feb49d3133d7e
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Aug 6 13:49:50 2009 +0200
Combining various desktop integration topics into one document.
commit c02c9adca98ba1d4494dd9c7de4ef5b191d9721a
Merge: 4cc4a81 2a286b0
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Aug 6 08:16:04 2009 +0200
Merge branch 'doccleanup' of git@scm.dev.nokia.troll.no:qt/vohis-docuwork into doccleanup
commit 4cc4a81324cff3c1ad91867cf3acb87d9b4184c6
Merge: a88dc5d 06d57fc
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Aug 6 08:15:52 2009 +0200
Merge branch 'master' into doccleanup
commit 2a286b03167ce028821b4007bf08537d2c5637c2
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 23:23:28 2009 +0200
Some writing on windows and dialogs.
Also some restructuring of the existing content.
commit a88dc5d72bec7abeec23b289c212418499c25e4a
Merge: 86f956c fb8bb14
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 18:09:58 2009 +0200
Merge branch 'master' into doccleanup
commit 86f956c89b9b8fb3d684665797d4a5b5e538fb2c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 17:09:36 2009 +0200
All "Qt 4 vs Qt 3" docu lives in porting.
Some of those files have been changed by now to move docu into overview
files where the respective information was missing.
commit ac6f1fc8b1e760ae69ce799e13ac92144eeb89e2
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 17:06:15 2009 +0200
Start work on windows and dialogs docu.
commit 4253dea2661dc3526a9dec53f336301992b543cb
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 16:03:52 2009 +0200
Make QtWebKit module documentation follow the other modules:
- Module overview only lists classes, library, header and license
implication
- Usage-documentation is separated
commit a27f1b8498ba8d06743e70ecde4fc1e44d5f02f0
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 16:01:25 2009 +0200
Make QtWebKit classes show up in the module overview.
commit d38d185ec8b7d32037e86b4ecbbc725343aabea7
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 15:40:17 2009 +0200
Make the most important sections a bit larger.
commit 70991dcdfb8c00baa960381b297fdcb8ed7f50d0
Merge: deb4c2b e95166d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 14:35:07 2009 +0200
Merge branch 'master' into doccleanup
commit deb4c2bb4d7120579fda541b03c0a77d989089d5
Merge: 37e5373 f78bd88
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 12:59:22 2009 +0200
Merge branch 'master' into doccleanup
commit 37e5373dcc5455b1e029ee389ce7985a98f579d9
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 11:32:43 2009 +0200
These new examples are not yet fully documented
commit 85fb40ea11458040e09302bb898d89664eb280b5
Merge: 8b78e18 bcf41cf
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 11:30:26 2009 +0200
Merge branch 'master' into doccleanup
Conflicts:
doc/src/examples-overview.qdoc
doc/src/examples.qdoc
tools/qdoc3/htmlgenerator.cpp
commit 8b78e1828b93a9762301d80cb110a1f1b7c4211f
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 00:04:36 2009 +0200
Line-feed fixes.
commit 2fa80a411dd96369c0e09defc54af44118930ae5
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 00:04:00 2009 +0200
The "buildsystem" docu seems a reasonable start for proper documentation.
Three lists of tools - in the buildsystem table, in the tools-list docu
and implicitly through \ingroup qttools. Needs to be consolidated.
commit 8d4043feab66698664cfa17bd150eabf4fe2420d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 00:01:32 2009 +0200
Restructure the i18n page.
The list of classes needs to be reviewed.
commit 49f718b1e75c02bc43feac93d5b233064c032555
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Wed Aug 5 00:00:45 2009 +0200
The Accessibility group is just a group of classes.
commit b17db7dc54c1945cd2651fdebde471c71ef4001d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 23:40:21 2009 +0200
Remove the "Topics" group.
Things are part of frameworks or how-to documentation. Top-level groups are
right now still on the "all overviews" document.
commit 31e5c276b50130542dbd824b0b8cc20b16ca1cb1
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 22:45:43 2009 +0200
Splitting the thread documentation into multiple pages.
Also add relevant classes from QtConcurrent to the thread group.
commit d491ffb0e949f1d8653d73495e091b241a025558
Merge: e99794c 3ff7afd
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 19:29:18 2009 +0200
Merge branch 'doccleanup' of git@scm.dev.nokia.troll.no:qt/vohis-docuwork into doccleanup
commit 3ff7afd6c11d824af38c72afdea4b6578f6de784
Merge: 1dae0ad 2df403d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 18:07:11 2009 +0200
Merge branch 'doccleanup' of git@scm.dev.nokia.troll.no:qt/vohis-docuwork into doccleanup
Conflicts:
doc/src/accessible.qdoc
doc/src/activeqt.qdoc
doc/src/animation.qdoc
doc/src/containers.qdoc
doc/src/custom-types.qdoc
doc/src/desktop-integration.qdoc
doc/src/dnd.qdoc
doc/src/frameworks-technologies/accessible.qdoc
doc/src/frameworks-technologies/activeqt-container.qdoc
doc/src/frameworks-technologies/activeqt-server.qdoc
doc/src/frameworks-technologies/activeqt.qdoc
doc/src/frameworks-technologies/animation.qdoc
doc/src/frameworks-technologies/containers.qdoc
doc/src/frameworks-technologies/dbus-adaptors.qdoc
doc/src/frameworks-technologies/dbus-intro.qdoc
doc/src/frameworks-technologies/desktop-integration.qdoc
doc/src/frameworks-technologies/dnd.qdoc
doc/src/frameworks-technologies/implicit-sharing.qdoc
doc/src/frameworks-technologies/ipc.qdoc
doc/src/frameworks-technologies/model-view-programming.qdoc
doc/src/frameworks-technologies/phonon.qdoc
doc/src/frameworks-technologies/qt4-interview.qdoc
doc/src/frameworks-technologies/qtdesigner.qdoc
doc/src/frameworks-technologies/qthelp.qdoc
doc/src/frameworks-technologies/statemachine.qdoc
doc/src/frameworks-technologies/templates.qdoc
doc/src/frameworks-technologies/unicode.qdoc
doc/src/frameworks/accessible.qdoc
doc/src/frameworks/activeqt-container.qdoc
doc/src/frameworks/activeqt-server.qdoc
doc/src/frameworks/activeqt.qdoc
doc/src/frameworks/animation.qdoc
doc/src/frameworks/containers.qdoc
doc/src/frameworks/dbus-adaptors.qdoc
doc/src/frameworks/dbus-intro.qdoc
doc/src/frameworks/desktop-integration.qdoc
doc/src/frameworks/dnd.qdoc
doc/src/frameworks/ipc.qdoc
doc/src/frameworks/model-view-programming.qdoc
doc/src/frameworks/phonon.qdoc
doc/src/frameworks/qt4-interview.qdoc
doc/src/frameworks/qtdesigner.qdoc
doc/src/frameworks/qthelp.qdoc
doc/src/frameworks/qundo.qdoc
doc/src/frameworks/richtext.qdoc
doc/src/frameworks/statemachine.qdoc
doc/src/graphicsview.qdoc
doc/src/howtos/custom-types.qdoc
doc/src/howtos/session.qdoc
doc/src/implicit-sharing.qdoc
doc/src/introtodbus.qdoc
doc/src/ipc.qdoc
doc/src/model-view-programming.qdoc
doc/src/modules.qdoc
doc/src/new_index.qdoc
doc/src/objectmodel/custom-types.qdoc
doc/src/objectmodel/object.qdoc
doc/src/objectmodel/objecttrees.qdoc
doc/src/overviews.qdoc
doc/src/phonon.qdoc
doc/src/porting/qt4-tulip.qdoc
doc/src/qaxcontainer.qdoc
doc/src/qaxserver.qdoc
doc/src/qdbusadaptors.qdoc
doc/src/qt4-interview.qdoc
doc/src/qtdesigner.qdoc
doc/src/qthelp.qdoc
doc/src/statemachine.qdoc
doc/src/technologies/implicit-sharing.qdoc
doc/src/technologies/templates.qdoc
doc/src/technologies/unicode.qdoc
doc/src/templates.qdoc
doc/src/unicode.qdoc
doc/src/widgets-and-layouts/layout.qdoc
doc/src/widgets-and-layouts/styles.qdoc
doc/src/widgets-and-layouts/widgets.qdoc
src/gui/kernel/qstandardgestures.cpp
commit 1dae0adf3d85620f7574a2a0475510a627a896dc
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 17:46:58 2009 +0200
This way it appears as part of the overview, and the moc docu links to it.
commit 5802092887e46dc5eb034bb9b45dd34a265607f5
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 17:45:09 2009 +0200
Not sure what it is yet, but definitely not an architecture.
QDataStream links to this page, that might just as well be enough.
commit 69d32c4ff079bcaea098b34de70b7d9587e51e88
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 17:43:42 2009 +0200
Use \annotatedlist command to list all widget classes.
Needs nicer formatting, ie qdoc could be \table aware for those lists and
skip the header.
commit 02057d7575bb4f0875e82ea4cb76552f2d8ac17a
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 17:35:46 2009 +0200
This should be together with all the other licensing documentation.
commit be91b2fe15c67cb90eaa59121d7ff51eb21b4dba
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 17:26:02 2009 +0200
These are best practices.
commit 8e0b104db1266a736ac246c9466656c058df18f2
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 17:25:35 2009 +0200
Another technology.
commit 19c16384d712c652716776c94c749030b0742752
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 17:24:55 2009 +0200
Remove duplicate and out-of-date license headers.
commit 689aa91de0f840fc0f98f0adfbb2f18d72c6b985
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 17:21:00 2009 +0200
Move into frameworks.
Add explicitly printed list of classes instead of using a separate
\group page. The \group page is still there as long as qdoc requires it.
Threading and WebKit are still "architectures", coming later.
commit 3f96833ab78dacd7ae66e6dd58a3a0dee22229e7
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 16:35:17 2009 +0200
Remove IPC group.
Only two classes, and those are explicitly listed in the real
documentation about IPC in Qt.
commit bbb02d8cc55c9595226f42fe5b617261584c6bdd
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 15:54:46 2009 +0200
Use the new \annotatedlist command, and make it a framework.
commit ba3a0376acb44ae5cafc8bd3802bd425dcb663a5
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 15:38:24 2009 +0200
Make \annotatedlist <group> work.
commit c80fb8d6a143c81700c2aefe7af1e83dd487dde4
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 15:37:51 2009 +0200
These are API documentation, not architecture.
commit 713744520bd35d510864ad48464575f1c8a35668
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 15:10:25 2009 +0200
Frameworks and technologies used in Qt are really one thing.
commit a86d4248c1e3c13f245c49f3f2d018ec4babc822
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 15:00:35 2009 +0200
Move into correct groups and make the howto a walk-through.
commit 7cc88f310e0dfa37d39026d67443f518531d7fe9
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 12:50:58 2009 +0200
Architecture -> Frameworks and Technologies
commit 4a3ba3f19d78c4df5343af951c761df47e22759a
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 12:50:41 2009 +0200
Some consolidation of the Tulip documentation.
commit d3dab98b96d83ce408523f8ccb9363a09eed1f34
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 12:01:10 2009 +0200
Start with "Frameworks and Technologies" vs "howtos and best practices".
commit 37a8e364442e6234c6a83667eb64af1c79b38e9b
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 12:00:34 2009 +0200
Beautify.
commit c86d844a79406d4b9fee67578efd67e27ce96b83
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 00:04:40 2009 +0200
Fix some headers.
commit 20b775d781d3b1d91164320807c21c8a6efcf011
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 23:48:17 2009 +0200
Split the accessibility docu into a "compared to Qt 3" section, and move
real information into the overview.
commit 6846a1bccf7d212f7ee0471f992cfb16efb71c43
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 23:47:37 2009 +0200
The gui-programming seems rather arbitrary and should go away.
Some things fit into the desktop integration, which is probably more a
howto. Focus is a concept in the widgets context, and application-wide
techniques like accelerators should probably be part of the "window"
docu.
commit 8c7bc99e78a69751080de07618bf003bc227e2db
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 23:45:28 2009 +0200
Move "Getting Started" documentation into getting-started directory.
commit 561cc3eafa20903243f3946ac4b7b724554c341c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 19:06:16 2009 +0200
Group "getting started" documents into a walkthrough structure.
commit 6d703807348923a068dea7360fb4456cbde071b6
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 17:35:15 2009 +0200
Add screenshots for example-overview page.
commit f7a47536305e157c16e8a863f145a2617606a2cc
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sun Aug 2 16:57:04 2009 +0200
Link to the real documentation, not just to the modules overview.
commit 92ce250ba206f4dde198637f1a30cd10768d9ae5
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sun Aug 2 16:56:41 2009 +0200
A new layout for the examples.
Needs a bit of shuffeling around, and more screenshots and descriptive text
for some categories.
commit a5e2e2939b32dee0aceabe136aa4c13b12c88070
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 22:39:27 2009 +0200
Cleanup the script-related groups a bit.
commit ca469165a9f55ca6bd31e53d85d74883fe892ed4
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 22:17:16 2009 +0200
Add QContiguousCache to the list of containers as a special case.
commit a21292704bd12daf2495195b216424442e097220
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 21:52:37 2009 +0200
Cleaning up groups of text- and string-related classes.
Make a clear separation between classes that deal with string data (ie
QString, QByteArray, QTextStream) and classes that are part of the "scribe"
framework.
Merge documentation from the Qt 4.0 introduction of Scribe into the
richtext processing guide.
commit 3854592806e23955f69613bdc1e2998d5d6f3a8a
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 20:50:06 2009 +0200
One group of thread-related classes should be enough.
commit b8935bc0ec3d33b6a3fe7b3b220b5781ad79d68d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 19:32:21 2009 +0200
Move documentation for classes into same directory as the respective
header files (or implementation file, if one exists).
This follows the Qt standard, and there is no particular reason why .qdoc
files cannot live in src. Since there are a number of .cpp files that have
only documentation it might also be an idea to rename the .qdoc files to
.cpp and add them to the .pro-files to have them included in generated
project files for easier access.
commit b61cc5eaf2f2bf72cff209ab0f69fde48fb87471
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 19:29:46 2009 +0200
Starting to tie together the widgets and layouts groups and documentation.
commit 47fb0c6cf1dacdbfa07a59cf4dc703dd2c35eb8c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 18:43:34 2009 +0200
This is all duplicate information that is better covered in the
sql-programming guide.
commit d3c70dd9ed84b4688cbabf30f6b906665b676b76
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 18:37:53 2009 +0200
Consolidate style documentation.
commit 1d8d30eee1e2fe9f8e77ce1462803921b2132ade
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 17:13:44 2009 +0200
Split plugin-documentation into two: writing plugins and deploying plugins.
commit a329665353a78749b0d4fdd6e75403252d34f679
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 14:19:47 2009 +0200
Some final module cleaning up.
commit e3de6579d43cc9796b69188cfb9d3d415a91a770
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:51:54 2009 +0200
Move remaining overview groups into one file.
commit 7d783342f520f8376e561246268371d0b74a4e44
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:51:34 2009 +0200
The "io" group should be about file access (be it local or networked).
commit 961fcefb034fea89d1aab2bfed5acaabb65e8d34
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:36:51 2009 +0200
Kill the "time" group.
The "How to use timers in your application" documentation covers the usecase.
commit c7bebf1a4c3e2da54ce6a5d649926d76bf65e41e
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:28:21 2009 +0200
Kill the group "misc".
commit e414a8945cb938ccc6bd1bd8cd52adbfade096c2
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:09:24 2009 +0200
Kill the "Environment" group.
It was a random collection of classes, mostly ending up in there because
of copy/paste (I suspect).
commit 9236a04e7ac6dd3910f035d15b8ab23297fd5f24
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:08:37 2009 +0200
More moving of files and content.
commit 1ef3134bade2df33ff68c7c906cf20343abd86a5
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 02:03:07 2009 +0200
Workaround qdoc being difficult.
commit 49064b0570088fe749fc08c02c5ab6d23855089f
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 01:49:52 2009 +0200
Some more moving of files into meaningful directories.
commit df4ced831cf9f49c638c231fa9f2754699a8a59d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 01:41:14 2009 +0200
Separate module documentation from frameworks documentation.
Module documentation will list the classes in each module, how to use the
respective libraries and headerfiles from a build-system perspective and
what the legal implications are when linking against those libraries.
The documentation of frameworks lives now in the frameworks subdirectory,
or in dedicated subdirectories for the key frameworks.
commit f4ccabe1abb97f91f196dab1948fee6135c9fa6e
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 00:47:54 2009 +0200
Group files in subdirectories that would correspond to top level topics.
commit ceb0110a364185b8b5d7bea3d3d1d54500035fcc
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 21:48:45 2009 +0200
Group files in subdirectories that would correspond to top level topics.
commit 72a4dae65b25c9df400218252f1c68d59724ff75
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 20:57:39 2009 +0200
Fix a few links.
commit ecb79681417e8bc3d8e46065dc12146f4d4dfc5f
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 20:20:55 2009 +0200
Consolidate the two example documents into one page.
commit d30d980055e7c531c9e73cdf9a1b220ce9691eef
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 19:25:16 2009 +0200
The QtAssistant module is obsolete, remove it.
QAssistantClient is in the list of obsolete classes.
commit 137ecd1ee70f0766fd94c6199d8a6b8217d020ca
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 18:56:14 2009 +0200
Get rid of \mainclass
If we want to select a list of main classes, then we can use \ingroup for
that, and document them coherently as part of the Fundamentals or a
relevant framework.
commit 042a7f21e68120e43b68444cbf3cfeca3aad4488
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 18:23:55 2009 +0200
The new index page and respective style changes.
commit 5245d784eb46287f8e1ae41addb2765eb19b0663
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 17:05:46 2009 +0200
Deployment group is gone.
commit 567d737a8d08f227133674ebfe2d161888862b8c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 16:48:53 2009 +0200
All "lists of classes etc" are now in classes.qdoc... I hope.
commit 0bb6074c0b38f07697e72a50a2ef60b561e718fe
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 16:47:20 2009 +0200
Cleaning up files documenting deployment. Text need to be reviewed and merged.
commit 2df403da24a2959c02d0d845d1d4fac0c3aa38e0
Author: Thierry Bastian <thierry.bastian@nokia.com>
Date: Mon Aug 3 16:49:46 2009 +0200
fix warnings on mingw (gcc4.4)
basically reordering members initialization in constructors or fixing
singed/unsigned checks.
Reviewed-by: Trustme
commit e887c7705b8b7f218b3605eeefb316dea274fe27
Author: Richard Moe Gustavsen <richard.gustavsen@nokia.com>
Date: Tue Aug 4 10:00:01 2009 +0200
Mac: Remove debug work output
commit 62687960508b2855b48d64825b445e5738c44142
Author: Richard Moe Gustavsen <richard.gustavsen@nokia.com>
Date: Tue Aug 4 09:45:47 2009 +0200
Modify imagewidget example so it works with new API
commit 9c7aed68270b336ae9a309d9eb0107d49729c1f3
Author: Richard Moe Gustavsen <richard.gustavsen@nokia.com>
Date: Tue Aug 4 09:43:14 2009 +0200
Add support for pan gesture on mac (carbon and cocoa)
commit be5783878a977148b34dc64c464e951be312964e
Author: Morten Sorvig <msorvig@trolltech.com>
Date: Tue Aug 4 09:47:05 2009 +0200
Remove the "preliminary support" warning for 10.6
Also make the "usupported on > 10.6" error a warning. No need
to stop the build, the warning will be printed enough times.
commit f6282eec434d073fef46d50ef141df6fa36033b9
Author: Morten Sorvig <msorvig@trolltech.com>
Date: Tue Aug 4 09:31:56 2009 +0200
Build on snow leopard.
Don't error out when building qmake, just let it build a 64-bit binary (even for carbon)
RebBy: Richard Moe Gustavsen
commit abae82a26f4dec34635827acf0784058be638e31
Author: Morten Sorvig <msorvig@trolltech.com>
Date: Tue Aug 4 08:15:21 2009 +0200
Make Cocoa builds 64-bit by default on snow leopard.
commit 4672e771c164503d998ccb6ca05cf7e7906fb031
Author: Jason McDonald <jason.mcdonald@nokia.com>
Date: Tue Aug 4 15:40:15 2009 +1000
Fix incorrect license headers.
Reviewed-by: Trust Me
commit a3bd65e8eb0fd39e14539919cc9ced645c969883
Author: Bill King <bill.king@nokia.com>
Date: Tue Aug 4 14:57:36 2009 +1000
Fixes failed queries when mysql auto-prepares
Queries like "Show Index" etc, fail on mysql when automatically prepared
due to a bug in several versions of mysql. Basically anything but a
select query will fail. This fixes this by making the user explicitly
prepare the query if they want to, and the blame then falls on them
if they try and prepare a statement likely to fail. This fix also
seems to result in a speedup for single-execution queries, possibly
due to reduction in roundtrip communications.
All autotests pass & behaviour conforms to documentation.
Task-number: 252450, 246125
commit 4612596a6a945ab0199fe06727ff3ea350092ec1
Author: Jason McDonald <jason.mcdonald@nokia.com>
Date: Tue Aug 4 14:49:14 2009 +1000
Fix obsolete license headers
Reviewed-by: Trust Me
commit c3bcc8b094341e0dc768ef5820ba359e2c23436a
Author: Aaron Kennedy <aaron.kennedy@nokia.com>
Date: Tue Aug 4 10:59:02 2009 +1000
Doc fixes
Reviewed-by: TrustMe
commit 1d60528ced1f6818a60889d672089bfe4d2290bb
Author: Morten Sorvig <msorvig@trolltech.com>
Date: Mon Aug 3 15:57:44 2009 +0200
Fix spelling error.
commit e99794c1200515f18ffdd0bec9c143db46e009a1
Merge: 199db81 d65f893
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 09:24:14 2009 +0200
Merge branch 'master' into doccleanup
commit 199db8104a680f91451cf2c93d2d41077b5605bb
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Tue Aug 4 00:04:40 2009 +0200
Fix some headers.
commit e8f8193b951a9f9e4b6d309c44151c47b715e901
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 23:48:17 2009 +0200
Split the accessibility docu into a "compared to Qt 3" section, and move
real information into the overview.
commit 8006ec36024e972be21e8397c2cc758a0e9b2ba0
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 23:47:37 2009 +0200
The gui-programming seems rather arbitrary and should go away.
Some things fit into the desktop integration, which is probably more a
howto. Focus is a concept in the widgets context, and application-wide
techniques like accelerators should probably be part of the "window"
docu.
commit 8dab96460280b8af6726905e8d5d24020930b882
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 23:45:28 2009 +0200
Move "Getting Started" documentation into getting-started directory.
commit 523fd47c29c24a865855d085a0036fc741203930
Merge: a1e50f6 2076f15
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 19:10:51 2009 +0200
Merge branch 'master' into doccleanup
commit a1e50f6619ff1a302dd1fefbcb6b0cd62a653e7d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 19:06:16 2009 +0200
Group "getting started" documents into a walkthrough structure.
commit e393b4f458263cb2f011cc5e5e67cdcc48610ea9
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 17:35:15 2009 +0200
Add screenshots for example-overview page.
commit 8c84f307f73ab7b77a91e61ed18fdc685afebcc5
Merge: a16033a 34e272a
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Mon Aug 3 11:03:41 2009 +0200
Merge branch 'master' into doccleanup
commit a16033a287afe2f494401e24f02f046ec98d944c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sun Aug 2 16:57:04 2009 +0200
Link to the real documentation, not just to the modules overview.
commit 6c4ed0361c860e738b9344dfb191f55d35b3309f
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sun Aug 2 16:56:41 2009 +0200
A new layout for the examples.
Needs a bit of shuffeling around, and more screenshots and descriptive text
for some categories.
commit 2dde2faa8f6e86acf738a808412c5e3c21c44658
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 22:39:27 2009 +0200
Cleanup the script-related groups a bit.
commit a66227d0bed87c633a22a4d155f6a7f0061fc34e
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 22:17:16 2009 +0200
Add QContiguousCache to the list of containers as a special case.
commit b22133eef28566f1c3c5d57aa0e8272af26da86a
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 21:52:37 2009 +0200
Cleaning up groups of text- and string-related classes.
Make a clear separation between classes that deal with string data (ie
QString, QByteArray, QTextStream) and classes that are part of the "scribe"
framework.
Merge documentation from the Qt 4.0 introduction of Scribe into the
richtext processing guide.
commit b30ba739308905b6c06987cec47d4de1e5d172de
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 20:50:06 2009 +0200
One group of thread-related classes should be enough.
commit a2511650577126026f98cb7416c159498f6f2db5
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 19:32:21 2009 +0200
Move documentation for classes into same directory as the respective
header files (or implementation file, if one exists).
This follows the Qt standard, and there is no particular reason why .qdoc
files cannot live in src. Since there are a number of .cpp files that have
only documentation it might also be an idea to rename the .qdoc files to
.cpp and add them to the .pro-files to have them included in generated
project files for easier access.
commit f333ad71384cf42c20219a55d9dfa1e29a8c263e
Merge: bad9ba5 5aed3db
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Sat Aug 1 12:04:55 2009 +0200
Merge branch 'master' into doccleanup
commit bad9ba5468333be2f08da7f28950c980bc63c787
Merge: 49f38b7 c57ed13
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 19:31:04 2009 +0200
Merge branch 'master' into doccleanup
commit 49f38b7afe3205eedccf655c0ad749d685cb3d52
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 19:29:46 2009 +0200
Starting to tie together the widgets and layouts groups and documentation.
commit e6c4b8316b7c90b19815c0008a282983012c68b3
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 18:43:34 2009 +0200
This is all duplicate information that is better covered in the
sql-programming guide.
commit 620620ae969bed86d970519bead45762bd39ede1
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 18:37:53 2009 +0200
Consolidate style documentation.
commit 01c78ff78888d3ccb50189206b9bcacaf13f5c80
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 17:13:44 2009 +0200
Split plugin-documentation into two: writing plugins and deploying plugins.
commit a21f510c982dce06ac1769e61e93574f90cc48c4
Merge: da93c4c c6cdfcb
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 16:04:51 2009 +0200
Merge branch 'master' into doccleanup
commit da93c4ccc25dd189dfb9b71bda28bd1e3a7230c1
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 14:19:47 2009 +0200
Some final module cleaning up.
commit 9eb0815bbd01b7e30877110b53aa6f82b8e9221d
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:51:54 2009 +0200
Move remaining overview groups into one file.
commit 65d4c4145386a409aeb1372ae5adc6f3e71e444b
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:51:34 2009 +0200
The "io" group should be about file access (be it local or networked).
commit 1a3de3a7add6d9e7653e46b57b00852845384a42
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:36:51 2009 +0200
Kill the "time" group.
The "How to use timers in your application" documentation covers the usecase.
commit dbadf1c060e051dbac7f5c72528ef6a3125d5ba3
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:28:21 2009 +0200
Kill the group "misc".
commit 7b7484b37b074d52af5c4ff9b138087a75965508
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:09:24 2009 +0200
Kill the "Environment" group.
It was a random collection of classes, mostly ending up in there because
of copy/paste (I suspect).
commit b5271d81e7da6666d339041d028a0ae6c8ed75c4
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 13:08:37 2009 +0200
More moving of files and content.
commit 96a707d25342c273cdd7629fc1e24b0ead4118de
Merge: 4ffe572 18fbfdf
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 11:08:11 2009 +0200
Merge branch 'master' into doccleanup
commit 4ffe572a954e99d604c1360fc55db25e8586436c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 02:03:07 2009 +0200
Workaround qdoc being difficult.
commit 7f0e965c7cf613782e8189069444a4b549f0c11a
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 01:49:52 2009 +0200
Some more moving of files into meaningful directories.
commit b0d67674469e57b29e60110888352ae955adcdd8
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 01:41:14 2009 +0200
Separate module documentation from frameworks documentation.
Module documentation will list the classes in each module, how to use the
respective libraries and headerfiles from a build-system perspective and
what the legal implications are when linking against those libraries.
The documentation of frameworks lives now in the frameworks subdirectory,
or in dedicated subdirectories for the key frameworks.
commit 45240a9c0eba9e42e6e441a55a407173a81a7344
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri Jul 31 00:47:54 2009 +0200
Group files in subdirectories that would correspond to top level topics.
commit 896507f2f4fdc541fc436cf901a2beb72d35f6aa
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 21:48:45 2009 +0200
Group files in subdirectories that would correspond to top level topics.
commit 37eb554f75d8b1d9d76993f6fcf632933c9616a2
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 20:57:39 2009 +0200
Fix a few links.
commit 74027c3568c1bdbb9960d203266f4ccc5e89c05c
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 20:20:55 2009 +0200
Consolidate the two example documents into one page.
commit cfc0fd3df050cf6c0e3229d22adfbff35aed46af
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 19:25:16 2009 +0200
The QtAssistant module is obsolete, remove it.
QAssistantClient is in the list of obsolete classes.
commit 0f86c7a176fc920669ca8a880afa141434f37767
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 18:56:14 2009 +0200
Get rid of \mainclass
If we want to select a list of main classes, then we can use \ingroup for
that, and document them coherently as part of the Fundamentals or a
relevant framework.
commit c4dfbc6bf58ef741fdab01538e75e9472e8370bf
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 18:23:55 2009 +0200
The new index page and respective style changes.
commit a3e4eb6712e24a4d6156c340ee98671887a2b2fa
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 17:05:46 2009 +0200
Deployment group is gone.
commit f03ee6192450db977bc2e4b07ffc613314b63a80
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 16:48:53 2009 +0200
All "lists of classes etc" are now in classes.qdoc... I hope.
commit c5fb9a4b5208498454812d27578ac62ae23652a4
Author: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Thu Jul 30 16:47:20 2009 +0200
Cleaning up files documenting deployment. Text need to be reviewed and merged.
Diffstat (limited to 'doc/src/designer-manual.qdoc')
-rw-r--r-- | doc/src/designer-manual.qdoc | 2836 |
1 files changed, 0 insertions, 2836 deletions
diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc deleted file mode 100644 index 5d8587a..0000000 --- a/doc/src/designer-manual.qdoc +++ /dev/null @@ -1,2836 +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 designer-manual.html - - \title Qt Designer Manual - \ingroup qttools - \keyword Qt Designer - - \QD is Qt's tool for designing and building graphical user - interfaces (GUIs) from Qt components. You can compose and customize your - widgets or dialogs in a what-you-see-is-what-you-get (WYSIWYG) manner, and - test them using different styles and resolutions. - - Widgets and forms created with \QD integrated seamlessly with programmed - code, using Qt's signals and slots mechanism, that lets you easily assign - behavior to graphical elements. All properties set in \QD can be changed - dynamically within the code. Furthermore, features like widget promotion - and custom plugins allow you to use your own components with \QD. - - If you are new to \QD, you can take a look at the - \l{Getting To Know Qt Designer} document. For a quick tutorial on how to - use \QD, refer to \l{A Quick Start to Qt Designer}. - - Qt Designer 4.5 boasts a long list of improvements. For a detailed list of - what is new, refer \l{What's New in Qt Designer 4.5}. - - \image designer-multiple-screenshot.png - - For more information on using \QD, you can take a look at the following - links: - - \list - \o \l{Qt Designer's Editing Modes} - \list - \o \l{Qt Designer's Widget Editing Mode}{Widget Editing Mode} - \o \l{Qt Designer's Signals and Slots Editing Mode} - {Signals and Slots Editing Mode} - \o \l{Qt Designer's Buddy Editing Mode} - {Buddy Editing Mode} - \o \l{Qt Designer's Tab Order Editing Mode} - {Tab Order Editing Mode} - \endlist - \o \l{Using Layouts in Qt Designer} - \o \l{Saving, Previewing and Printing Forms in Qt Designer} - \o \l{Using Containers in Qt Designer} - \o \l{Creating Main Windows in Qt Designer} - \o \l{Editing Resources with Qt Designer} - \o \l{Using Stylesheets with Qt Designer} - \o \l{Using a Designer UI File in Your Application} - \endlist - - For advanced usage of \QD, you can refer to these links: - - \list - \o \l{Customizing Qt Designer Forms} - \o \l{Using Custom Widgets with Qt Designer} - \o \l{Creating Custom Widgets for Qt Designer} - \o \l{Creating Custom Widget Extensions} - \o \l{Qt Designer's UI File Format} - \endlist - - - \section1 Legal Notices - - Some source code in \QD is licensed under specific highly permissive - licenses from the original authors. The Qt team gratefully acknowledges - these contributions to \QD and all uses of \QD should also acknowledge - these contributions and quote the following license statements in an - appendix to the documentation. - - \list - \i \l{Implementation of the Recursive Shadow Casting Algorithm in Qt Designer} - \endlist -*/ - - - -/*! - \page designer-whats-new.html - \contentspage {Qt Designer Manual}{Contents} - - - \title What's New in Qt Designer 4.5 - - \section1 General Changes - - - \table - \header - \i Widget Filter Box - \i Widget Morphing - \i Disambiguation Field - \row - \i \inlineimage designer-widget-filter.png - \i \inlineimage designer-widget-morph.png - \i \inlineimage designer-disambiguation.png - \endtable - - \list 1 - \i Displaying only icons in the \gui{Widget Box}: It is now possible - for the \gui{Widget Box} to display icons only. Simply select - \gui{Icon View} from the context menu. - \i Filter for \gui{Widget Box}: A filter is now provided to quickly - locate the widget you need. If you use a particular widget - frequently, you can always add it to the - \l{Getting to Know Qt Designer#WidgetBox}{scratch pad}. - \i Support for QButtonGroup: It is available via the context - menu of a selection of QAbstractButton objects. - \i Improved support for item widgets: The item widgets' (e.g., - QListWidget, QTableWidget, and QTreeWidget) contents dialogs have - been improved. You can now add translation comments and also modify - the header properties. - \i Widget morphing: A widget can now be morphed from one type to - another with its layout and properties preserved. To begin, click - on your widget and select \gui{Morph into} from the context menu. - \i Disambiguation field: The property editor now shows this extra - field under the \gui{accessibleDescription} property. This field - has been introduced to aid translators in the case of two source - texts being the same but used for different purposes. For example, - a dialog could have two \gui{Add} buttons for two different - reasons. \note To maintain compatibility, comments in UI files - created prior to Qt 4.5 will be listed in the \gui{Disambiguation} - field. - \endlist - - - - \section1 Improved Shortcuts for the Editing Mode - - \list - \i The \key{Shift+Click} key combination now selects the ancestor for - nested layouts. This iterates from one ancestor to the other. - - \i The \key{Ctrl} key is now used to toggle and copy drag. Previously - this was done with the \key{Shift} key but is now changed to - conform to standards. - - \i The left mouse button does rubber band selection for form windows; - the middle mouse button does rubber band selection everywhere. - \endlist - - - \section1 Layouts - \list - \i It is now possible to switch a widget's layout without breaking it - first. Simply select the existing layout and change it to another - type using the context menu or the layout buttons on the toolbar. - - \i To quickly populate a \gui{Form Layout}, you can now use the - \gui{Add form layout row...} item available in the context menu or - double-click on the red layout. - \endlist - - - \section1 Support for Embedded Design - - \table - \header - \i Comboboxes to Select a Device Profile - \row - \i \inlineimage designer-embedded-preview.png - \endtable - - It is now possible to specify embedded device profiles, e.g., Style, Font, - Screen DPI, resolution, default font, etc., in \gui{Preferences}. These - settings will affect the \gui{Form Editor}. The profiles will also be - visible with \gui{Preview}. - - - \section1 Related Classes - - \list - \i QUiLoader \mdash forms loaded with this class will now react to - QEvent::LanguageChange if QUiLoader::setLanguageChangeEnabled() or - QUiLoader::isLanguageChangeEnabled() is set to true. - - \i QDesignerCustomWidgetInterface \mdash the - \l{QDesignerCustomWidgetInterface::}{domXml()} function now has new - attributes for its \c{<ui>} element. These attributes are - \c{language} and \c{displayname}. The \c{language} element can be - one of the following "", "c++", "jambi". If this element is - specified, it must match the language in which Designer is running. - Otherwise, this element will not be available. The \c{displayname} - element represents the name that will be displayed in the - \gui{Widget Box}. Previously this was hardcoded to be the class - name. - - \i QWizard \mdash QWizard's page now has a string \c{id} attribute that - can be used to fill in enumeration values to be used by the - \c{uic}. However, this attribute has no effect on QUiLoader. - \endlist -*/ - - -/*! - \page designer-to-know.html - \contentspage {Qt Designer Manual}{Contents} - - - \title Getting to Know Qt Designer - - \tableofcontents - - \image designer-screenshot.png - - \section1 Launching Designer - - The way that you launch \QD depends on your platform: - - \list - \i On Windows, click the Start button, under the \gui Programs submenu, - open the \gui{Qt 4} submenu and click \gui Designer. - \i On Unix or Linux, you might find a \QD icon on the desktop - background or in the desktop start menu under the \gui Programming - or \gui Development submenus. You can launch \QD from this icon. - Alternatively, you can type \c{designer} in a terminal window. - \i On Mac OS X, double click on \QD in \gui Finder. - \endlist - - \section1 The User Interface - - When used as a standalone application, \QD's user interface can be - configured to provide either a multi-window user interface (the default - mode), or it can be used in docked window mode. When used from within an - integrated development environment (IDE) only the multi-window user - interface is available. You can switch modes in the \gui Preferences dialog - from the \gui Edit menu. - - In multi-window mode, you can arrange each of the tool windows to suit your - working style. The main window consists of a menu bar, a tool bar, and a - widget box that contains the widgets you can use to create your user - interface. - - \target MainWindow - \table - \row - \i \inlineimage designer-main-window.png - \i \bold{Qt Designer's Main Window} - - The menu bar provides all the standard actions for managing forms, - using the clipboard, and accessing application-specific help. - The current editing mode, the tool windows, and the forms in use can - also be accessed via the menu bar. - - The tool bar displays common actions that are used when editing a form. - These are also available via the main menu. - - The widget box provides common widgets and layouts that are used to - design components. These are grouped into categories that reflect their - uses or features. - \endtable - - Most features of \QD are accessible via the menu bar, the tool bar, or the - widget box. Some features are also available through context menus that can - be opened over the form windows. On most platforms, the right mouse is used - to open context menus. - - \target WidgetBox - \table - \row - \i \inlineimage designer-widget-box.png - \i \bold{Qt Designer's Widget Box} - - The widget box provides a selection of standard Qt widgets, layouts, - and other objects that can be used to create user interfaces on forms. - Each of the categories in the widget box contain widgets with similar - uses or related features. - - \note Since Qt 4.4, new widgets have been included, e.g., - QPlainTextEdit, QCommandLinkButton, QScrollArea, QMdiArea, and - QWebView. - - You can display all of the available objects in a category by clicking - on the handle next to the category label. When in - \l{Qt Designer's Widget Editing Mode}{Widget Editing - Mode}, you can add objects to a form by dragging the appropriate items - from the widget box onto the form, and dropping them in the required - locations. - - \QD provides a scratch pad feature that allows you to collect - frequently used objects in a separate category. The scratch pad - category can be filled with any widget currently displayed in a form - by dragging them from the form and dropping them onto the widget box. - These widgets can be used in the same way as any other widgets, but - they can also contain child widgets. Open a context menu over a widget - to change its name or remove it from the scratch pad. - \endtable - - - \section1 The Concept of Layouts in Qt - - A layout is used to arrange and manage the elements that make up a user - interface. Qt provides a number of classes to automatically handle layouts - -- QHBoxLayout, QVBoxLayout, QGridLayout, and QFormLayout. These classes - solve the challenge of laying out widgets automatically, providing a user - interface that behaves predictably. Fortunately knowledge of the layout - classes is not required to arrange widgets with \QD. Instead, select one of - the \gui{Lay Out Horizontally}, \gui{Lay Out in a Grid}, etc., options from - the context menu. - - Each Qt widget has a recommended size, known as \l{QWidget::}{sizeHint()}. - The layout manager will attempt to resize a widget to meet its size hint. - In some cases, there is no need to have a different size. For example, the - height of a QLineEdit is always a fixed value, depending on font size and - style. In other cases, you may require the size to change, e.g., the width - of a QLineEdit or the width and height of item view widgets. This is where - the widget size constraints -- \l{QWidget::minimumSize()}{minimumSize} and - \l{QWidget::maximumSize()}{maximumSize} constraints come into play. These - are properties you can set in the property editor. For example, to override - the default \l{QWidget::}{sizeHint()}, simply set - \l{QWidget::minimumSize()}{minimumSize} and \l{QWidget::maximumSize()} - {maximumSize} to the same value. Alternatively, to use the current size as - a size constraint value, choose one of the \gui{Size Constraint} options - from the widget's context menu. The layout will then ensure that those - constraints are met. To control the size of your widgets via code, you can - reimplement \l{QWidget::}{sizeHint()} in your code. - - The screenshot below shows the breakdown of a basic user interface designed - using a grid. The coordinates on the screenshot show the position of each - widget within the grid. - - \image addressbook-tutorial-part3-labeled-layout.png - - \note Inside the grid, the QPushButton objects are actually nested. The - buttons on the right are first placed in a QVBoxLayout; the buttons at the - bottom are first placed in a QHBoxLayout. Finally, they are put into - coordinates (1,2) and (3,1) of the QGridLayout. - - To visualize, imagine the layout as a box that shrinks as much as possible, - attempting to \e squeeze your widgets in a neat arrangement, and, at the - same time, maximize the use of available space. - - Qt's layouts help when you: - - \list 1 - \i Resize the user face to fit different window sizes. - \i Resize elements within the user interface to suit different - localizations. - \i Arrange elements to adhere to layout guidelines for different - platforms. - \endlist - - So, you no longer have to worry about rearranging widgets for different - platforms, settings, and languages. - - The example below shows how different localizations can affect the user - interface. When a localization requires more space for longer text strings - the Qt layout automatically scales to accommodate this, while ensuring that - the user interface looks presentable and still matches the platform - guidelines. - - \table - \header - \i A Dialog in English - \i A Dialog in French - \row - \i \image designer-english-dialog.png - \i \image designer-french-dialog.png - \endtable - - The process of laying out widgets consists of creating the layout hierarchy - while setting as few widget size constraints as possible. - - For a more technical perspective on Qt's layout classes, refer to the - \l{Layout Management} documentation. -*/ - - -/*! - \page designer-quick-start.html - \contentspage {Qt Designer Manual}{Contents} - - - \title A Quick Start to Qt Designer - - Using \QD involves \bold four basic steps: - - \list 1 - \o Choose your form and objects - \o Lay the objects out on the form - \o Connect the signals to the slots - \o Preview the form - \endlist - - \image rgbController-screenshot.png - - Suppose you would like to design a small widget (see screenshot above) that - contains the controls needed to manipulate Red, Green and Blue (RGB) values - -- a type of widget that can be seen everywhere in image manipulation - programs. - - \table - \row - \i \inlineimage designer-choosing-form.png - \i \bold{Choosing a Form} - - You start by choosing \gui Widget from the \gui{New Form} dialog. - \endtable - - - \table - \row - \i \inlineimage rgbController-arrangement.png - \i \bold{Placing Widgets on a Form} - - Drag three labels, three spin boxes and three vertical sliders on to your - form. To change the label's default text, simply double-click on it. You - can arrange them according to how you would like them to be laid out. - \endtable - - To ensure that they are laid out exactly like this in your program, you - need to place these widgets into a layout. We will do this in groups of - three. Select the "RED" label. Then, hold down \key Ctrl while you select - its corresponding spin box and slider. In the \gui{Form} menu, select - \gui{Lay Out in a Grid}. - - \table - \row - \i \inlineimage rgbController-form-gridLayout.png - \i \inlineimage rgbController-selectForLayout.png - \endtable - - - Repeat the step for the other two labels along with their corresponding - spin boxes and sliders as well. - - The next step is to combine all three layouts into one \bold{main layout}. - The main layout is the top level widget's (in this case, the QWidget) - layout. It is important that your top level widget has a layout; otherwise, - the widgets on your window will not resize when your window is resized. To - set the layout, \gui{Right click} anywhere on your form, outside of the - three separate layouts, and select \gui{Lay Out Horizontally}. - Alternatively, you could also select \gui{Lay Out in a Grid} -- you will - still see the same arrangement (shown below). - - \image rgbController-final-layout.png - - \note Main layouts cannot be seen on the form. To check if you have a main - layout installed, try resizing your form; your widgets should resize - accordingly. Alternatively, you can take a look at \QD's - \gui{Object Inspector}. If your top level widget does not have a layout, - you will see the broken layout icon next to it, - \inlineimage rgbController-no-toplevel-layout.png - . - - When you click on the slider and drag it to a certain value, you want the - spin box to display the slider's position. To accomplish this behavior, you - need to connect the slider's \l{QAbstractSlider::}{valueChanged()} signal - to the spin box's \l{QSpinBox::}{setValue()} slot. You also need to make - the reverse connections, e.g., connect the spin box's \l{QSpinBox::} - {valueChanged()} signal to the slider's \l{QAbstractSlider::value()} - {setValue()} slot. - - To do this, you have to switch to \gui{Edit Signals/Slots} mode, either by - pressing \key{F4} or something \gui{Edit Signals/Slots} from the \gui{Edit} - menu. - - \table - \row - \i \inlineimage rgbController-signalsAndSlots.png - \i \bold{Connecting Signals to Slots} - - Click on the slider and drag the cursor towards the spin box. The - \gui{Configure Connection} dialog, shown below, will pop up. Select the - correct signal and slot and click \gui OK. - \endtable - - \image rgbController-configure-connection1.png - - Repeat the step (in reverse order), clicking on the spin box and dragging - the cursor towards the slider, to connect the spin box's - \l{QSpinBox::}{valueChanged()} signal to the slider's - \l{QAbstractSlider::value()}{setValue()} slot. - - You can use the screenshot below as a guide to selecting the correct signal - and slot. - - \image rgbController-configure-connection2.png - - Now that you have successfully connected the objects for the "RED" - component of the RGB Controller, do the same for the "GREEN" and "BLUE" - components as well. - - Since RGB values range between 0 and 255, we need to limit the spin box - and slider to that particular range. - - \table - \row - \i \inlineimage rgbController-property-editing.png - \i \bold{Setting Widget Properties} - - Click on the first spin box. Within the \gui{Property Editor}, you will - see \l{QSpinBox}'s properties. Enter "255" for the - \l{QSpinBox::}{maximum} property. Then, click on the first vertical - slider, you will see \l{QAbstractSlider}'s properties. Enter "255" for - the \l{QAbstractSlider::}{maximum} property as well. Repeat this - process for the remaining spin boxes and sliders. - \endtable - - Now, we preview your form to see how it would look in your application - - press \key{Ctrl + R} or select \gui Preview from the \gui Form menu. Try - dragging the slider - the spin box will mirror its value too (and vice - versa). Also, you can resize it to see how the layouts that are used to - manage the child widgets, respond to different window sizes. -*/ - - -/*! - \page designer-editing-mode.html - \previouspage Getting to Know Qt Designer - \contentspage {Qt Designer Manual}{Contents} - \nextpage Using Layouts in Qt Designer - - \title Qt Designer's Editing Modes - - \QD provides four editing modes: \l{Qt Designer's Widget Editing Mode} - {Widget Editing Mode}, \l{Qt Designer's Signals and Slots Editing Mode} - {Signals and Slots Editing Mode}, \l{Qt Designer's Buddy Editing Mode} - {Buddy Editing Mode} and \l{Qt Designer's Tab Order Editing Mode} - {Tab Order Editing Mode}. When working with \QD, you will always be in one - of these four modes. To switch between modes, simply select it from the - \gui{Edit} menu or the toolbar. The table below describes these modes in - further detail. - - \table - \header \i \i \bold{Editing Modes} - \row - \i \inlineimage designer-widget-tool.png - \i In \l{Qt Designer's Widget Editing Mode}{Edit} mode, we can - change the appearance of the form, add layouts, and edit the - properties of each widget. To switch to this mode, press - \key{F3}. This is \QD's default mode. - - \row - \i \inlineimage designer-connection-tool.png - \i In \l{Qt Designer's Signals and Slots Editing Mode} - {Signals and Slots} mode, we can connect widgets together using - Qt's signals and slots mechanism. To switch to this mode, press - \key{F4}. - - \row - \i \inlineimage designer-buddy-tool.png - \i In \l{Qt Designer's Buddy Editing Mode}{Buddy Editing Mode}, - buddy widgets can be assigned to label widgets to help them - handle keyboard focus correctly. - - \row - \i \inlineimage designer-tab-order-tool.png - \i In \l{Qt Designer's Tab Order Editing Mode} - {Tab Order Editing Mode}, we can set the order in which widgets - receive the keyboard focus. - \endtable - -*/ - - -/*! - \page designer-widget-mode.html - \previouspage Qt Designer's Editing Modes - \contentspage {Qt Designer Manual}{Contents} - \nextpage Qt Designer's Signals and Slots Editing Mode - - \title Qt Designer's Widget Editing Mode - - \image designer-editing-mode.png - - In the Widget Editing Mode, objects can be dragged from the main window's - widget box to a form, edited, resized, dragged around on the form, and even - dragged between forms. Object properties can be modified interactively, so - that changes can be seen immediately. The editing interface is intuitive - for simple operations, yet it still supports Qt's powerful layout - facilities. - - - \tableofcontents - - To create and edit new forms, open the \gui File menu and select - \gui{New Form...} or press \key{Ctrl+N}. Existing forms can also be edited - by selecting \gui{Open Form...} from the \gui File menu or pressing - \key{Ctrl+O}. - - At any point, you can save your form by selecting the \gui{Save From As...} - option from the \gui File menu. The UI files saved by \QD contain - information about the objects used, and any details of signal and slot - connections between them. - - - \section1 Editing A Form - - By default, new forms are opened in widget editing mode. To switch to Edit - mode from another mode, select \gui{Edit Widgets} from the \gui Edit menu - or press the \key F3 key. - - Objects are added to the form by dragging them from the main widget box - and dropping them in the desired location on the form. Once there, they - can be moved around simply by dragging them, or using the cursor keys. - Pressing the \key Ctrl key at the same time moves the selected widget - pixel by pixel, while using the cursor keys alone make the selected widget - snap to the grid when it is moved. Objects can be selected by clicking on - them with the left mouse button. You can also use the \key Tab key to - change the selection. - - ### Screenshot of widget box, again - - The widget box contains objects in a number of different categories, all of - which can be placed on the form as required. The only objects that require - a little more preparation are the \gui Container widgets. These are - described in further detail in the \l{Using Containers in Qt Designer} - chapter. - - - \target SelectingObjects - \table - \row - \i \inlineimage designer-selecting-widget.png - \i \bold{Selecting Objects} - - Objects on the form are selected by clicking on them with the left - mouse button. When an object is selected, resize handles are shown at - each corner and the midpoint of each side, indicating that it can be - resized. - - To select additional objects, hold down the \key Shift key and click on - them. If more than one object is selected, the current object will be - displayed with resize handles of a different color. - - To move a widget within a layout, hold down \key Shift and \key Control - while dragging the widget. This extends the selection to the widget's - parent layout. - - Alternatively, objects can be selected in the - \l{The Object Inspector}{Object Inspector}. - \endtable - - When a widget is selected, normal clipboard operations such as cut, copy, - and paste can be performed on it. All of these operations can be done and - undone, as necessary. - - The following shortcuts can be used: - - \target ShortcutsForEditing - \table - \header \i Action \i Shortcut \i Description - \row - \i Cut - \i \key{Ctrl+X} - \i Cuts the selected objects to the clipboard. - \row - \i Copy - \i \key{Ctrl+C} - \i Copies the selected objects to the clipboard. - \row - \i Paste - \i \key{Ctrl+V} - \i Pastes the objects in the clipboard onto the form. - \row - \i Delete - \i \key Delete - \i Deletes the selected objects. - \row - \i Clone object - \i \key{Ctrl+drag} (leftmouse button) - \i Makes a copy of the selected object or group of objects. - \row - \i Preview - \i \key{Ctrl+R} - \i Shows a preview of the form. - \endtable - - All of the above actions (apart from cloning) can be accessed via both the - \gui Edit menu and the form's context menu. These menus also provide - funcitons for laying out objects as well as a \gui{Select All} function to - select all the objects on the form. - - Widgets are not unique objects; you can make as many copies of them as you - need. To quickly duplicate a widget, you can clone it by holding down the - \key Ctrl key and dragging it. This allows widgets to be copied and placed - on the form more quickly than with clipboard operations. - - - \target DragAndDrop - \table - \row - \i \inlineimage designer-dragging-onto-form.png - \i \bold{Drag and Drop} - - \QD makes extensive use of the drag and drop facilities provided by Qt. - Widgets can be dragged from the widget box and dropped onto the form. - - Widgets can also be "cloned" on the form: Holding down \key Ctrl and - dragging the widget creates a copy of the widget that can be dragged to - a new position. - - It is also possible to drop Widgets onto the \l {The Object Inspector} - {Object Inspector} to handle nested layouts easily. - \endtable - - \QD allows selections of objects to be copied, pasted, and dragged between - forms. You can use this feature to create more than one copy of the same - form, and experiment with different layouts in each of them. - - - \section2 The Property Editor - - The Property Editor always displays properties of the currently selected - object on the form. The available properties depend on the object being - edited, but all of the widgets provided have common properties such as - \l{QObject::}{objectName}, the object's internal name, and - \l{QWidget::}{enabled}, the property that determines whether an - object can be interacted with or not. - - - \target EditingProperties - \table - \row - \i \inlineimage designer-property-editor.png - \i \bold{Editing Properties} - - The property editor uses standard Qt input widgets to manage the - properties of jbects on the form. Textual properties are shown in line - edits, integer properties are displayed in spinboxes, boolean - properties are displayed in check boxes, and compound properties such - as colors and sizes are presented in drop-down lists of input widgets. - - Modified properties are indicated with bold labels. To reset them, click - the arrow button on the right. - - Changes in properties are applied to all selected objects that have the - same property. - \endtable - - Certain properties are treated specially by the property editor: - - \list - \o Compound properties -- properties that are made up of more than one - value -- are represented as nodes that can be expanded, allowing - their values to be edited. - \o Properties that contain a choice or selection of flags are edited - via combo boxes with checkable items. - \o Properties that allow access to rich data types, such as QPalette, - are modified using dialogs that open when the properties are edited. - QLabel and the widgets in the \gui Buttons section of the widget box - have a \c text property that can also be edited by double-clicking - on the widget or by pressing \gui F2. \QD interprets the backslash - (\\) character specially, enabling newline (\\n) characters to be - inserted into the text; the \\\\ character sequence is used to - insert a single backslash into the text. A context menu can also be - opened while editing, providing another way to insert special - characters and newlines into the text. - \endlist - - - \section2 Dynamic Properties - - The property editor can also be used to add new - \l{QObject#Dynamic Properties}{dynamic properties} to both standard Qt - widgets and to forms themselves. Since Qt 4.4, dynamic properties are added - and removed via the property editor's toolbar, shown below. - - \image designer-property-editor-toolbar.png - - To add a dynamic property, clcik on the \gui Add button - \inlineimage designer-property-editor-add-dynamic.png - . To remove it, click on the \gui Remove button - \inlineimage designer-property-editor-remove-dynamic.png - instead. You can also sort the properties alphabetically and change the - color groups by clickinig on the \gui Configure button - \inlineimage designer-property-editor-configure.png - . - - \section2 The Object Inspector - \table - \row - \i \inlineimage designer-object-inspector.png - \i \bold{The Object Inspector} - - The \gui{Object Inspector} displays a hierarchical list of all the - objects on the form that is currently being edited. To show the child - objects of a container widget or a layout, click the handle next to the - object label. - - Each object on a form can be selected by clicking on the corresponding - item in the \gui{Object Inspector}. Right-clicking opens the form's - context menu. These features can be useful if you have many overlapping - objects. To locate an object in the \gui{Object Inspector}, use - \key{Ctrl+F}. - - Since Qt 4.4, double-clicking on the object's name allows you to change - the object's name with the in-place editor. - - Since Qt 4.5, the \gui{Object Inspector} displays the layout state of - the containers. The broken layout icon ###ICON is displayed if there is - something wrong with the layouts. - - \endtable -*/ - - -/*! - \page designer-layouts.html - \previouspage Qt Designer's Widget Editing Mode - \contentspage - \nextpage Qt Designer's Signals and Slots Editing Mode - - \title Using Layouts in Qt Designer - - Before a form can be used, the objects on the form need to be placed into - layouts. This ensures that the objects will be displayed properly when the - form is previewed or used in an application. Placing objects in a layout - also ensures that they will be resized correctly when the form is resized. - - - \tableofcontents - - \section1 Applying and Breaking Layouts - - The simplest way to manage objects is to apply a layout to a group of - existing objects. This is achieved by selecting the objects that you need - to manage and applying one of the standard layouts using the main toolbar, - the \gui Form menu, or the form's context menu. - - Once widgets have been inserted into a layout, it is not possible to move - and resize them individually because the layout itself controls the - geometry of each widget within it, taking account of the hints provided by - spacers. Instead, you must either break the layout and adjust each object's - geometry manually, or you can influence the widget's geometry by resizing - the layout. - - To break the layout, press \key{Ctrl+0} or choose \gui{Break Layout} from - the form's context menu, the \gui Form menu or the main toolbar. You can - also add and remove spacers from the layout to influence the geometries of - the widgets. - - - \target InsertingObjectsIntoALayout - \table - \row - \i \inlineimage designer-layout-inserting.png - \i \bold{Inserting Objects into a Layout} - - Objects can be inserted into an existing layout by dragging them from - their current positions and dropping them at the required location. A - blue cursor is displayed in the layout as an object is dragged over - it to indicate where the object will be added. - \endtable - - - \section2 Setting A Top Level Layout - - The form's top level layout can be set by clearing the slection (click the - left mouse button on the form itself) and applying a layout. A top level - layout is necessary to ensure that your widgets will resize correctly when - its window is resized. To check if you have set a top level layout, preview - your widget and attempt to resize the window by dragging the size grip. - - \table - \row - \i \inlineimage designer-set-layout.png - \i \bold{Applying a Layout} - - To apply a layout, you can select your choice of layout from the - toolbar shown on the left, or from the context menu shown below. - \endtable - - \image designer-set-layout2.png - - - \section2 Horizontal and Vertical Layouts - - The simplest way to arrange objects on a form is to place them in a - horizontal or vertical layout. Horizontal layouts ensure that the widgets - within are aligned horizontally; vertical layouts ensure that they are - aligned vertically. - - Horizontal and vertical layouts can be combined and nested to any depth. - However, if you need more control over the placement of objects, consider - using the grid layout. - - - \section3 The Grid Layout - - Complex form layouts can be created by placing objects in a grid layout. - This kind of layout gives the form designer much more freedom to arrange - widgets on the form, but can result in a much less flexible layout. - However, for some kinds of form layout, a grid arrangement is much more - suitable than a nested arrangement of horizontal and vertical layouts. - - - \section3 Splitter Layouts - - Another common way to manage the layout of objects on a form is to place - them in a splitter. These splitters arrange the objects horizontally or - vertically in the same way as normal layouts, but also allow the user to - adjust the amount of space allocated to each object. - - \image designer-splitter-layout.png - - Although QSplitter is a container widget, \QD treats splitter objects as - layouts that are applied to existing widgets. To place a group of widgets - into a splitter, select them - \l{Qt Designer's Widget Editing Mode#SelectingObjects}{as described here} - then apply the splitter layout by using the appropriate toolbar button, - keyboard shortcut, or \gui{Lay out} context menu entry. - - - \section3 The Form Layout - - Since Qt 4.4, another layout class has been included -- QFormLayout. This - class manages widgets in a two-column form; the left column holds labels - and the right column holds field widgets such as line edits, spin boxes, - etc. The QFormLayout class adheres to various platform look and feel - guidelines and supports wrapping for long rows. - - \image designer-form-layout.png - - The UI file above results in the previews shown below. - - \table - \header - \i Windows XP - \i Mac OS X - \i Cleanlooks - \row - \i \inlineimage designer-form-layout-windowsXP.png - \i \inlineimage designer-form-layout-macintosh.png - \i \inlineimage designer-form-layout-cleanlooks.png - \endtable - - - \section2 Shortcut Keys - - In addition to the standard toolbar and context menu entries, there is also - a set of keyboard shortcuts to apply layouts on widgets. - - \target LayoutShortcuts - \table - \header - \i Layout - \i Shortcut - \i Description - \row - \i Horizontal - \i \key{Ctrl+1} - \i Places the selected objects in a horizontal layout. - \row - \i Vertical - \i \key{Ctrl+2} - \i Places the selected objects in a vertical layout. - \row - \i Grid - \i \key{Ctrl+5} - \i Places the selected objects in a grid layout. - \row - \i Form - \i \key{Ctrl+6} - \i Places the selected objects in a form layout. - \row - \i Horizontal splitter - \i \key{Ctrl+3} - \i Creates a horizontal splitter and places the selected objects - inside it. - \row - \i Vertical splitter - \i \key{Ctrl+4} - \i Creates a vertical splitter and places the selected objects - inside it. - \row - \i Adjust size - \i \key{Ctrl+J} - \i Adjusts the size of the layout to ensure that each child object - has sufficient space to display its contents. See - QWidget::adjustSize() for more information. - \endtable - - \note \key{Ctrl+0} is used to break a layout. - -*/ - - -/*! - \page designer-preview.html - \contentspage {Qt Designer Manual}{Contents} - \previouspage Using Layouts in Qt Designer - \nextpage Qt Designer's Buddy Editing Mode - \title Saving, Previewing and Printing Forms in Qt Designer - - Although \QD's forms are accurate representations of the components being - edited, it is useful to preview the final appearance while editing. This - feature can be activated by opening the \gui Form menu and selecting - \gui Preview, or by pressing \key{Ctrl+R} when in the form. - - \image designer-dialog-preview.png - - The preview shows exactly what the final component will look like when used - in an application. - - Since Qt 4.4, it is possible to preview forms with various skins - default - skins, skins created with Qt Style Sheets or device skins. This feature - simulates the effect of calling \c{QApplication::setStyleSheet()} in the - application. - - To preview your form with skins, open the \gui Edit menu and select - \gui{Preferences...} - - You will see the dialog shown below: - - \image designer-preview-style.png - - The \gui{Print/Preview Configuration} checkbox must be checked to activate - previews of skins. You can select the styles provided from the \gui{Style} - drop-down box. - - \image designer-preview-style-selection.png - - Alternatively, you can preview custom style sheet created with Qt Style - Sheets. The figure below shows an example of Qt Style Sheet syntax and the - corresponding output. - - \image designer-preview-stylesheet.png - - Another option would be to preview your form with device skins. A list of - generic device skins are available in \QD, however, you may also use - other QVFB skins with the \gui{Browse...} option. - - \image designer-preview-deviceskin-selection.png - - - \section1 Viewing the Form's Code - - Since Qt 4.4, it is possible to view code generated by the User Interface - Compiler (uic) for the \QD form. - - \image designer-form-viewcode.png - - Select \gui{View Code...} from the \gui{Form} menu and a dialog with the - generated code will be displayed. The screenshot below is an example of - code generated by the \c{uic}. - - \image designer-code-viewer.png - - \section1 Saving and Printing the Form - - Forms created in \QD can be saved to an image or printed. - - \table - \row - \i \inlineimage designer-file-menu.png - \i \bold{Saving Forms} - - To save a form as an image, choose the \gui{Save Image...} option. The file - will be saved in \c{.png} format. - - \bold{Printing Forms} - - To print a form, select the \gui{Print...} option. - - \endtable -*/ - - -/*! - \page designer-connection-mode.html - \contentspage {Qt Designer Manual}{Contents} - \previouspage Using Layouts in Qt Designer - \nextpage Qt Designer's Buddy Editing Mode - - - \title Qt Designer's Signals and Slots Editing Mode - - \image designer-connection-mode.png - - In \QD's signals and slots editing mode, you can connect objects in a form - together using Qt's signals and slots mechanism. Both widgets and layouts - can be connected via an intuitive connection interface, using the menu of - compatible signals and slots provided by \QD. When a form is saved, all - connections are preserved so that they will be ready for use when your - project is built. - - - \tableofcontents - - For more information on Qt's signals and sltos mechanism, refer to the - \l{Signals and Slots} document. - - - \section1 Connecting Objects - - To begin connecting objects, enter the signals and slots editing mode by - opening the \gui Edit menu and selecting \gui{Edit Signals/Slots}, or by - pressing the \key F4 key. - - All widgets and layouts on the form can be connected together. However, - spacers just provide spacing hints to layouts, so they cannot be connected - to other objects. - - - \target HighlightedObjects - \table - \row - \i \inlineimage designer-connection-highlight.png - \i \bold{Highlighted Objects} - - When the cursor is over an object that can be used in a connection, the - object will be highlighted. - \endtable - - To make a connectionn, press the left mouse button and drag the cursor - towards the object you want to connect it to. As you do this, a line will - extend from the source object to the cursor. If the cursor is over another - object on the form, the line will end with an arrow head that points to the - destination object. This indicates that a connection will be made between - the two objects when you release the mouse button. - - You can abandon the connection at any point while you are dragging the - connection path by pressing \key{Esc}. - - \target MakingAConnection - \table - \row - \i \inlineimage designer-connection-making.png - \i \bold{Making a Connection} - - The connection path will change its shape as the cursor moves around - the form. As it passes over objects, they are highlighted, indicating - that they can be used in a signal and slot connection. Release the - mouse button to make the connection. - \endtable - - The \gui{Configure Connection} dialog (below) is displayed, showing signals - from the source object and slots from the destination object that you can - use. - - \image designer-connection-dialog.png - - To complete the connection, select a signal from the source object and a - slot from the destination object, then click \key OK. Click \key Cancel if - you wish to abandon the connection. - - \note If the \gui{Show all signals and slots} checkbox is selected, all - available signals from the source object will be shown. Otherwise, the - signals and slots inherited from QWidget will be hidden. - - You can make as many connections as you like between objects on the form; - it is possible to connect signals from objects to slots in the form itself. - As a result, the signal and slot connections in many dialogs can be - completely configured from within \QD. - - \target ConnectingToTheForm - \table - \row - \i \inlineimage designer-connection-to-form.png - \i \bold{Connecting to a Form} - - To connect an object to the form itself, simply position the cursor - over the form and release the mouse button. The end point of the - connection changes to the electrical "ground" symbol. - \endtable - - - \section1 Editing and Deleting Connections - - By default, connection paths are created with two labels that show the - signal and slot involved in the connection. These labels are usually - oriented along the line of the connection. You can move them around inside - their host widgets by dragging the red square at each end of the connection - path. - - \target ConnectionEditor - \table - \row - \i \inlineimage designer-connection-editor.png - \i \bold{The Signal/Slot Editor} - - The signal and slot used in a connection can be changed after it has - been set up. When a connection is configured, it becomes visible in - \QD's signal and slot editor where it can be further edited. You can - also edit signal/slot connections by double-clicking on the connection - path or one of its labels to display the Connection Dialog. - \endtable - - \target DeletingConnections - \table - \row - \i \inlineimage designer-connection-editing.png - \i \bold{Deleting Connections} - - The whole connection can be selected by clicking on any of its path - segments. Once selected, a connection can be deleted with the - \key Delete key, ensuring that it will not be set up in the UI - file. - \endtable -*/ - - -/*! - \page designer-buddy-mode.html - \contentspage{Qt Designer Manual}{Contents} - \previouspage Qt Designer's Signals and Slots Editing Mode - \nextpage Qt Designer's Tab Order Editing Mode - - \title Qt Designer's Buddy Editing Mode - - \image designer-buddy-mode.png - - One of the most useful basic features of Qt is the support for buddy - widgets. A buddy widget accepts the input focus on behalf of a QLabel when - the user types the label's shortcut key combination. The buddy concept is - also used in Qt's \l{Model/View Programming}{model/view} framework. - - - \section1 Linking Labels to Buddy Widgets - - To enter buddy editing mode, open the \gui Edit menu and select - \gui{Edit Buddies}. This mode presents the widgets on the form in a similar - way to \l{Qt Designer's Signals and Slots Editing Mode}{signals and slots - editing mode} but in this mode, connections must start at label widgets. - Ideally, you should connect each label widget that provides a shortcut with - a suitable input widget, such as a QLineEdit. - - - \target MakingBuddies - \table - \row - \i \inlineimage designer-buddy-making.png - \i \bold{Making Buddies} - - To define a buddy widget for a label, click on the label, drag the - connection to another widget on the form, and release the mouse button. - The connection shown indicates how input focus is passed to the buddy - widget. You can use the form preview to test the connections between - each label and its buddy. - \endtable - - - \section1 Removing Buddy Connections - - Only one buddy widget can be defined for each label. To change the buddy - used, it is necessary to delete any existing buddy connection before you - create a new one. - - Connections between labels and their buddy widgets can be deleted in the - same way as signal-slot connections in signals and slots editing mode: - Select the buddy connection by clicking on it and press the \key Delete - key. This operation does not modify either the label or its buddy in any - way. -*/ - - -/*! - \page designer-tab-order.html - \contentspage {Qt Designer Manual}{Contents} - \previouspage Qt Designer's Buddy Editing Mode - \nextpage Using Containers in Qt Designer - - \title Qt Designer's Tab Order Editing Mode - - \image designer-tab-order-mode.png - - Many users expect to be able to navigate between widgets and controls - using only the keyboard. Qt lets the user navigate between input widgets - with the \key Tab and \key{Shift+Tab} keyboard shortcuts. The default - \e{tab order} is based on the order in which widgets are constructed. - Although this order may be sufficient for many users, it is often better - to explicitly specify the tab order to make your application easier to - use. - - - \section1 Setting the Tab Order - - To enter tab order editing mode, open the \gui Edit menu and select - \gui{Edit Tab Order}. In this mode, each input widget in the form is shown - with a number indicating its position in the tab order. So, if the user - gives the first input widget the input focus and then presses the tab key, - the focus will move to the second input widget, and so on. - - The tab order is defined by clicking on each of the numbers in the correct - order. The first number you click will change to red, indicating the - currently edited position in the tab order chain. The widget associated - with the number will become the first one in the tab order chain. Clicking - on another widget will make it the second in the tab order, and so on. - - Repeat this process until you are satisfied with the tab order in the form - -- you do not need to click every input widget if you see that the - remaining widgets are already in the correct order. Numbers, for which you - already set the order, change to green, while those which are not clicked - yet, remain blue. - - If you make a mistake, simply double click outside of any number or choose - \gui{Restart} from the form's context menu to start again. If you have many - widgets on your form and would like to change the tab order in the middle or - at the end of the tab order chain, you can edit it at any position. Press - \key{Ctrl} and click the number from which you want to start. - Alternatively, choose \gui{Start from Here} in the context menu. - -*/ - - -/*! - \page designer-using-containers.html - \contentspage {Qt Designer Manual}{Contents} - \previouspage Qt Designer's Tab Order Editing Mode - \nextpage Creating Main Windows in Qt Designer - - - \title Using Containers in Qt Designer - - Container widgets provide high level control over groups of objects on a - form. They can be used to perform a variety of functions, such as managing - input widgets, providing paged and tabbed layouts, or just acting as - decorative containers for other objects. - - \image designer-widget-morph.png - - \QD provides visual feedback to help you place objects inside your - containers. When you drag an object from the widget box (or elsewhere) on - the form, each container will be highlighted when the cursor is positioned - over it. This indicates that you can drop the object inside, making it a - child object of the container. This feedback is important because it is - easy to place objects close to containers without actually placing them - inside. Both widgets and spacers can be used inside containers. - - Stacked widgets, tab widgets, and toolboxes are handled specially in \QD. - Normally, when adding pages (tabs, pages, compartments) to these containers - in your own code, you need to supply existing widgets, either as - placeholders or containing child widgets. In \QD, these are automatically - created for you, so you can add child objects to each page straight away. - - Each container typically allows its child objects to be arranged in one or - more layouts. The type of layout management provided depends on each - container, although setting the layout is usually just a matter of - selecting the container by clicking it, and applying a layout. The table - below shows a list of available containers. - - \table - \row - \i \inlineimage designer-containers-frame.png - \i \bold Frames - - Frames are used to enclose and group widgets, as well as to provide - decoration. They are used as the foundation for more complex - containers, but they can also be used as placeholders in forms. - - The most important properties of frames are \c frameShape, - \c frameShadow, \c lineWidth, and \c midLineWidth. These are described - in more detail in the QFrame class description. - - \row - \i \inlineimage designer-containers-groupbox.png - \i \bold{Group Boxes} - - Group boxes are usually used to group together collections of - checkboxes and radio buttons with similar purposes. - - Among the significant properties of group boxes are \c title, \c flat, - \c checkable, and \c checked. These are demonstrated in the - \l{widgets/groupbox}{Group Box} example, and described in the QGroupBox - class documentation. Each group box can contain its own layout, and - this is necessary if it contains other widgets. To add a layout to the - group box, click inside it and apply the layout as usual. - - \row - \i \inlineimage designer-containers-stackedwidget.png - \i \bold{Stacked Widgets} - - Stacked widgets are collections of widgets in which only the topmost - layer is visible. Control over the visible layer is usually managed by - another widget, such as combobox, using signals and slots. - - \QD shows arrows in the top-right corner of the stack to allow you to - see all the widgets in the stack when designing it. These arrows do not - appear in the preview or in the final component. To navigate between - pages in the stack, select the stacked widget and use the - \gui{Next Page} and \gui{Previous Page} entries from the context menu. - The \gui{Insert Page} and \gui{Delete Page} context menu options allow - you to add and remove pages. - - \row - \i \inlineimage designer-containers-tabwidget.png - \i \bold{Tab Widgets} - - Tab widgets allow the developer to split up the contents of a widget - into different labelled sections, only one of which is displayed at any - given time. By default, the tab widget contains two tabs, and these can - be deleted or renamed as required. You can also add additional tabs. - - To delete a tab: - \list - \o Click on its label to make it the current tab. - \o Select the tab widget and open its context menu. - \o Select \gui{Delete Page}. - \endlist - - To add a new tab: - \list - \o Select the tab widget and open its context menu. - \o Select \gui{Insert Page}. - \o You can add a page before or after the \e current page. \QD - will create a new widget for that particular tab and insert it - into the tab widget. - \o You can set the title of the current tab by changing the - \c currentTabText property in the \gui{Property Editor}. - \endlist - - \row - \i \inlineimage designer-containers-toolbox.png - \i \bold{ToolBox Widgets} - - Toolbox widgets provide a series of pages or compartments in a toolbox. - They are handled in a way similar to stacked widgets. - - To rename a page in a toolbox, make the toolbox your current pange and - change its \c currentItemText property from the \gui{Property Editor}. - - To add a new page, select \gui{Insert Page} from the toolbox widget's - context menu. You can add the page before or after the current page. - - To delete a page, select \gui{Delete Page} from the toolbox widget's - context menu. - - \row - \i \inlineimage designer-containers-dockwidget.png - \i \bold{Dock Widgets} - - Dock widgets are floating panels, often containing input widgets and - more complex controls, that are either attached to the edges of the - main window in "dock areas", or floated as independent tool windows. - - Although dock widgets can be added to any type of form, they are - typically used with forms created from the - \l{Creating Main Windows in Qt Designer}{main window template}. - - \endtable -*/ - - -/*! - \page designer-creating-mainwindows.html - \contentspage {Qt Designer Manual}{Contents} - \previouspage Using Containers in Qt Designer - \nextpage Editing Resources with Qt Designer - - \title Creating Main Windows in Qt Designer - - \QD can be used to create user interfaces for different purposes, and - it provides different kinds of form templates for each user interface. The - main window template is used to create application windows with menu bars, - toolbars, and dock widgets. - - \omit - \image designer-mainwindow-example.png - \endomit - - Create a new main window by opening the \gui File menu and selecting the - \gui{New Form...} option, or by pressing \key{Ctrl+N}. Then, select the - \gui{Main Window} template. This template provides a main application - window containing a menu bar and a toolbar by default -- these can be - removed if they are not required. - - If you remove the menu bar, a new one can be created by selecting the - \gui{Create Menu Bar} option from the context menu, obtained by - right-clicking within the main window form. - - An application can have only \bold one menu bar, but \bold several - toolbars. - - - \section1 Menus - - Menus are added to the menu bar by modifying the \gui{Type Here} - placeholders. One of these is always present for editing purposes, and - will not be displayed in the preview or in the finished window. - - Once created, the properties of a menu can be accessed using the - \l{Qt Designer's Widget Editing Mode#The Property Editor}{Property Editor}, - and each menu can be accessed for this purpose via the - \l{Qt Designer's Widget Editing Mode#The Object Inspector}{The Object Inspector}. - - Existing menus can be removed by opening a context menu over the label in - the menu bar, and selecting \gui{Remove Menu 'menu_name'}. - - - \target CreatingAMenu - \table - \row - \i \inlineimage designer-creating-menu1.png - \i \inlineimage designer-creating-menu2.png - \i \bold{Creating a Menu} - - Double-click the placeholder item to begin editing. The menu text, - displayed using a line edit, can be modified. - - \row - \i \inlineimage designer-creating-menu3.png - \i \inlineimage designer-creating-menu4.png - \i Insert the required text for the new menu. Inserting an - ampersand character (&) causes the letter following it to be - used as a mnemonic for the menu. - - Press \key Return or \key Enter to accept the new text, or press - \key Escape to reject it. You can undo the editing operation later if - required. - \endtable - - Menus can also be rearranged in the menu bar simply by dragging and - dropping them in the preferred location. A vertical red line indicates the - position where the menu will be inserted. - - Menus can contain any number of entries and separators, and can be nested - to the required depth. Adding new entries to menus can be achieved by - navigating the menu structure in the usual way. - - \target CreatingAMenuEntry - \table - \row - \i \inlineimage designer-creating-menu-entry1.png - \i \inlineimage designer-creating-menu-entry2.png - \i \bold{Creating a Menu Entry} - - Double-click the \gui{new action} placeholder to begin editing, or - double-click \gui{new separator} to insert a new separator line after - the last entry in the menu. - - The menu entry's text is displayed using a line edit, and can be - modified. - - \row - \i \inlineimage designer-creating-menu-entry3.png - \i \inlineimage designer-creating-menu-entry4.png - \i Insert the required text for the new entry, optionally using - the ampersand character (&) to mark the letter to use as a - mnemonic for the entry. - - Press \key Return or \key Enter to accept the new text, or press - \key Escape to reject it. The action created for this menu entry will - be accessible via the \l{#TheActionEditor}{Action Editor}, and any - associated keyboard shortcut can be set there. - \endtable - - Just like with menus, entries can be moved around simply by dragging and - dropping them in the preferred location. When an entry is dragged over a - closed menu, the menu will open to allow it to be inserted there. Since - menu entries are based on actions, they can also be dropped onto toolbars, - where they will be displayed as toolbar buttons. - - - \section1 Toolbars - - - ### SCREENSHOT - - Toolbars ared added to a main window in a similar way to the menu bar: - Select the \gui{Add Tool Bar} option from the form's context menu. - Alternatively, if there is an existing toolbar in the main window, you can - click the arrow on its right end to create a new toolbar. - - Toolbar buttons are created using the action system to populate each - toolbar, rather than by using specific button widgets from the widget box. - Since actions can be represented by menu entries and toolbar buttons, they - can be moved between menus and toolbars. To share an action between a menu - and a toolbar, drag its icon from the \l{#TheActionEditor}{Action Editor} - to the toolbar rather than from the menu where its entry is located. - - New actions for menus and toolbars can be created in the - \l{#TheActionEditor}{Action Editor}. - - - \section1 Actions - - With the menu bar and the toolbars in place, it's time to populate them - with action: \QD provides an action editor to simplify the creation and - management of actions. - - - \target TheActionEditor - \table - \row - \i \inlineimage designer-action-editor.png - \i \bold{The Action Editor} - - Enable the action editor by opening the \gui Tools menu, and switching - on the \gui{Action Editor} option. - - The action editor allows you to create \gui New actions and \gui Delete - actions. It also provides a search function, \gui Filter, using the - action's text. - - \QD's action editor can be viewed in the classic \gui{Icon View} and - \gui{Detailed View}. The screenshot below shows the action editor in - \gui{Detailed View}. You can also copy and paste actions between menus, - toolbars and forms. - \endtable - - To create an action, use the action editor's \gui New button, which will - then pop up an input dialog. Provide the new action with a \gui Text -- - this is the text that will appear in a menu entry and as the action's - tooltip. The text is also automatically added to an "action" prefix, - creating the action's \gui{Object Name}. - - In addition, the dialog provides the option of selecting an \gui Icon for - the action, as well as removing the current icon. - - Once the action is created, it can be used wherever actions are applicable. - - - \target AddingAnAction - \table - \row - \i \inlineimage designer-adding-menu-action.png - \i \inlineimage designer-adding-toolbar-action.png - \i \bold{Adding an Action} - - To add an action to a menu or a toolbar, simply press the left mouse - button over the action in the action editor, and drag it to the - preferred location. - - \QD provides highlighted guide lines that tell you where the action - will be added. Release the mouse button to add the action when you have - found the right spot. - \endtable - - - \section1 Dock Widgets - - Since dock widgets are \l{Using Containers in Qt Designer} - {container widgets}, they can be added to a form in the usuasl way. Once - added to a form, dock widgets are not placed in any particular dock area by - default; you need to set the \gui{docked} property to true for each widget - and choose an appropriate value for its \gui{dockWidgetArea} property. - - \target AddingADockWidget - \table - \row - \i \inlineimage designer-adding-dockwidget.png - \i \bold{Adding a Dock Widget} - - To add a dock widget, simply drag one from the \gui Containers section - of the widget box, and drop it onto the main form area. Just like other - widgets, its properties can be modified with the \gui{Property Editor}. - - Dock widgets can be optionally floated as indpendent tool windows. - Hence, it is useful to give them window titles by setting their - \gui{windowTitle} property. This also helps to identify them on the - form. - - \endtable -*/ - - -/*! - \page designer-resources.html - \contentspage {Qt Designer Manual}{Contents} - \previouspage Creating Main Windows in Qt Designer - \nextpage Using Stylesheets with Qt Designer - - \title Editing Resources with Qt Designer - - \image designer-resources-editing.png - - \QD fully supports the \l{The Qt Resource System}{Qt Resource System}, - enabling resources to be specified together with forms as they are - designed. To aid designers and developers manage resources for their - applications, \QD's resource editor allows resources to be defined on a - per-form basis. In other words, each form can have a separate resource - file. - - \section1 Defining a Resource File - - To specify a resource file you must enable the resource editor by opening - the \gui Tools menu, and switching on the \gui{Resource Browser} option. - - \target ResourceFiles - \table - \row - \i \inlineimage designer-resource-browser.png - \i \bold{Resource Files} - - Within the resource browser, you can open existing resource files or - create new ones. Click the \gui{Edit Resources} button - \inlineimage designer-edit-resources-button.png - to edit your resources. To reload resources, click on the \gui Reload - button - \inlineimage designer-reload-resources-button.png - . - \endtable - - - Once a resource file is loaded, you can create or remove entries in it - using the given \gui{Add Files} - \inlineimage designer-add-resource-entry-button.png - and \gui{Remove Files} - \inlineimage designer-remove-resource-entry-button.png - buttons, and specify resources (e.g., images) using the \gui{Add Files} - button - \inlineimage designer-add-files-button.png - . Note that these resources must reside within the current resource file's - directory or one of its subdirectories. - - - \target EditResource - \table - \row - \i \inlineimage designer-edit-resource.png - \i \bold{Editing Resource Files} - - Press the - \inlineimage designer-add-resource-entry-button.png - button to add a new resource entry to the file. Then use the - \gui{Add Files} button - \inlineimage designer-add-files-button.png - to specify the resource. - - You can remove resources by selecting the corresponding entry in the - resource editor, and pressing the - \inlineimage designer-remove-resource-entry-button.png - button. - \endtable - - - \section1 Using the Resources - - Once the resources are defined you can use them actively when composing - your form. For example, you might want to create a tool button using an - icon specified in the resource file. - - \target UsingResources - \table - \row - \i \inlineimage designer-resources-using.png - \i \bold{Using Resources} - - When changing properties with values that may be defined within a - resource file, \QD's property editor allows you to specify a resource - in addition to the option of selecting a source file in the ordinary - way. - - \row - \i \inlineimage designer-resource-selector.png - \i \bold{Selecting a Resource} - - You can open the resource selector by clicking \gui{Choose Resource...} - to add resources any time during the design process. - -\omit -... check with Friedemann -To quickly assign icon pixmaps to actions or pixmap properties, you may -drag the pixmap from the resource editor to the action editor, or to the -pixmap property in the property editor. -\endomit - - \endtable -*/ - - -/*! - \page designer-stylesheet.html - \contentspage {Qt Designer Manual}{Contents} - \previouspage Editing Resources with Qt Designer - \nextpage Using a Designer UI File in Your Application - - \title Using Stylesheets with Qt Designer - - Since Qt 4.2, it is possible to edit stylesheets in \QD with the stylesheet - editor. - - \target UsingStylesheets - \table - \row - \i \inlineimage designer-stylesheet-options.png - \bold{Setting a Stylesheet} - - The stylesheet editor can be accessed by right-clicking a widget - and selecting \gui{Change styleSheet...} - - \row - \i \inlineimage designer-stylesheet-usage.png - \endtable - -*/ - - -/*! - \page designer-using-a-ui-file.html - \previouspage Using Stylesheets with Qt Designer - \contentspage {Qt Designer Manual}{Contents} - \nextpage Using Custom Widgets with Qt Designer - - \title Using a Designer UI File in Your Application - - With Qt's integrated build tools, \l{qmake Manual}{qmake} and \l uic, the - code for user interface components created with \QD is automatically - generated when the rest of your application is built. Forms can be included - and used directly from your application. Alternatively, you can use them to - extend subclasses of standard widgets. These forms can be processed at - compile time or at run time, depending on the approach used. - - - \tableofcontents - \section1 Compile Time Form Processing - - A compile time processed form can be used in your application with one of - the following approaches: - - \list - \o The Direct Approach: you construct a widget to use as a placeholder - for the component, and set up the user interface inside it. - \o The Single Inheritance Approach: you subclass the form's base class - (QWidget or QDialog, for example), and include a private instance - of the form's user interface object. - \o The MultipleInheritance Approach: you subclass both the form's base - class and the form's user interface object. This allows the widgets - defined in the form to be used directly from within the scope of - the subclass. - \endlist - - - \section2 The Direct Approach - - To demonstrate how to use user interface (UI) files straight from - \QD, we create a simple Calculator Form application. This is based on the - original \l{Calculator Form Example}{Calculator Form} example. - - The application consists of one source file, \c main.cpp and a UI - file. - - The \c{calculatorform.ui} file designed with \QD is shown below: - - \image directapproach-calculatorform.png - - We will use \c qmake to build the executable, so we need to write a - \c{.pro} file: - - \snippet doc/src/snippets/uitools/calculatorform/calculatorform.pro 0 - - The special feature of this file is the \c FORMS declaration that tells - \c qmake which files to process with \c uic. In this case, the - \c calculatorform.ui file is used to create a \c ui_calculatorform.h file - that can be used by any file listed in the \c SOURCES declaration. To - ensure that \c qmake generates the \c ui_calculatorform.h file, we need to - include it in a file listed in \c SOURCES. Since we only have \c main.cpp, - we include it there: - - \snippet doc/src/snippets/uitools/calculatorform/main.cpp 0 - - This include is an additional check to ensure that we do not generate code - for UI files that are not used. - - The \c main function creates the calculator widget by constructing a - standard QWidget that we use to host the user interface described by the - \c calculatorform.ui file. - - \snippet doc/src/snippets/uitools/calculatorform/main.cpp 1 - - In this case, the \c{Ui::CalculatorForm} is an interface description object - from the \c ui_calculatorform.h file that sets up all the dialog's widgets - and the connections between its signals and slots. - - This approach provides a quick and easy way to use simple, self-contained - components in your applications, but many componens created with \QD will - require close integration with the rest of the application code. For - instance, the \c CalculatorForm code provided above will compile and run, - but the QSpinBox objects will not interact with the QLabel as we need a - custom slot to carry out the add operation and display the result in the - QLabel. To achieve this, we need to subclass a standard Qt widget (known as - the single inheritance approach). - - - \section2 The Single Inheritance Approach - - In this approach, we subclass a Qt widget and set up the user interface - from within the constructor. Components used in this way expose the widgets - and layouts used in the form to the Qt widget subclass, and provide a - standard system for making signal and slot connections between the user - interface and other objects in your application. - - This approach is used in the \l{Calculator Form Example}{Calculator Form} - example. - - To ensure that we can use the user interface, we need to include the header - file that \c uic generates before referring to \c{Ui::CalculatorForm}: - - \snippet examples/designer/calculatorform/calculatorform.h 0 - - This means that the \c{.pro} file must be updated to include - \c{calculatorform.h}: - - \snippet examples/designer/calculatorform/calculatorform.pro 0 - - The subclass is defined in the following way: - - \snippet examples/designer/calculatorform/calculatorform.h 1 - - The important feature of the class is the private \c ui object which - provides the code for setting up and managing the user interface. - - The constructor for the subclass constructs and configures all the widgets - and layouts for the dialog just by calling the \c ui object's \c setupUi() - function. Once this has been done, it is possible to modify the user - interface as needed. - - \snippet examples/designer/calculatorform/calculatorform.cpp 0 - - We can connect signals and slots in user interface widgets in the usual - way, taking care to prefix the \c ui object to each widget used. - - The advantages of this approach are its simple use of inheritance to - provide a QWidget-based interface, and its encapsulation of the user - interface widget variables within the \c ui data member. We can use this - method to define a number of user interfaces within the same widget, each - of which is contained within its own namespace, and overlay (or compose) - them. This approach can be used to create individual tabs from existing - forms, for example. - - - \section2 The Multiple Inheritance Approach - - Forms created with \QD can be subclassed together with a standard - QWidget-based class. This approach makes all the user interface components - defined in the form directly accessible within the scope of the subclass, - and enables signal and slot connections to be made in the usual way with - the \l{QObject::connect()}{connect()} function. - - This approach is used in the \l{Multiple Inheritance Example} - {Multiple Inheritance} example. - - We need to include the header file that \c uic generates from the - \c calculatorform.ui file: - - \snippet examples/uitools/multipleinheritance/calculatorform.h 0 - - The class is defined in a similar way to the one used in the - \l{The Single Inheritance Approach}{single inheritance approach}, except that - this time we inherit from \e{both} QWidget and \c{Ui::CalculatorForm}: - - \snippet examples/uitools/multipleinheritance/calculatorform.h 1 - - We inherit \c{Ui::CalculatorForm} privately to ensure that the user - interface objects are private in our subclass. We can also inherit it with - the \c public or \c protected keywords in the same way that we could have - made \c ui public or protected in the previous case. - - The constructor for the subclass performs many of the same tasks as the - constructor used in the \l{The Single Inheritance Approach} - {single inheritance} example: - - \snippet examples/uitools/multipleinheritance/calculatorform.cpp 0 - - In this case, the widgets used in the user interface can be accessed in the - same say as a widget created in code by hand. We no longer require the - \c{ui} prefix to access them. - - Subclassing using multiple inheritance gives us more direct access to the - contents of the form, is slightly cleaner than the single inheritance - approach, but does not conveniently support composition of multiple user - interfaces. - - - \section1 Run Time Form Processing - - Alternatively, forms can be processed at run time, producing dynamically- - generated user interfaces. This can be done using the QtUiTools module - that provides the QUiLoader class to handle forms created with \QD. - - - \section2 The UiTools Approach - - A resource file containing a UI file is required to process forms at - run time. Also, the application needs to be configured to use the QtUiTools - module. This is done by including the following declaration in a \c qmake - project file, ensuring that the application is compiled and linked - appropriately. - - \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 0 - - The QUiLoader class provides a form loader object to construct the user - interface. This user interface can be retrieved from any QIODevice, e.g., - a QFile object, to obtain a form stored in a project's resource file. The - QUiLoader::load() function constructs the form widget using the user - interface description contained in the file. - - The QtUiTools module classes can be included using the following directive: - - \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 1 - - The QUiLoader::load() function is invoked as shown in this code from the - \l{Text Finder Example}{Text Finder} example: - - \snippet examples/uitools/textfinder/textfinder.cpp 4 - - In a class that uses QtUiTools to build its user interface at run time, we - can locate objects in the form using qFindChild(). For example, in the - follownig code, we locate some components based on their object names and - widget types: - - \snippet examples/uitools/textfinder/textfinder.cpp 1 - - Processing forms at run-time gives the developer the freedom to change a - program's user interface, just by changing the UI file. This is useful - when customizing programs to suit various user needs, such as extra large - icons or a different colour scheme for accessibility support. - - - \section1 Automatic Connections - - The signals and slots connections defined for compile time or run time - forms can either be set up manually or automatically, using QMetaObject's - ability to make connections between signals and suitably-named slots. - - Generally, in a QDialog, if we want to process the information entered by - the user before accepting it, we need to connect the clicked() signal from - the \gui OK button to a custom slot in our dialog. We will first show an - example of the dialog in which the slot is connected by hand then compare - it with a dialog that uses automatic connection. - - - \section2 A Dialog Without Auto-Connect - - We define the dialog in the same way as before, but now include a slot in - addition to the constructor: - - \snippet doc/src/snippets/designer/noautoconnection/imagedialog.h 0 - - The \c checkValues() slot will be used to validate the values provided by - the user. - - In the dialog's constructor we set up the widgets as before, and connect - the \gui Cancel button's \l{QPushButton::clicked()}{clicked()} signal to - the dialog's reject() slot. We also disable the - \l{QPushButton::autoDefault}{autoDefault} property in both buttons to - ensure that the dialog does not interfere with the way that the line edit - handles return key events: - - \snippet doc/src/snippets/designer/noautoconnection/imagedialog.cpp 0 - \dots - \snippet doc/src/snippets/designer/noautoconnection/imagedialog.cpp 1 - - We connect the \gui OK button's \l{QPushButton::clicked()}{clicked()} - signal to the dialog's checkValues() slot which we implement as follows: - - \snippet doc/src/snippets/designer/noautoconnection/imagedialog.cpp 2 - - This custom slot does the minimum necessary to ensure that the data - entered by the user is valid - it only accepts the input if a name was - given for the image. - - \section2 Widgets and Dialogs with Auto-Connect - - Although it is easy to implement a custom slot in the dialog and connect - it in the constructor, we could instead use QMetaObject's auto-connection - facilities to connect the \gui OK button's clicked() signal to a slot in - our subclass. \c{uic} automatically generates code in the dialog's - \c setupUi() function to do this, so we only need to declare and - implement a slot with a name that follows a standard convention: - - \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 2 - - Using this convention, we can define and implement a slot that responds to - mouse clicks on the \gui OK button: - - \snippet doc/src/snippets/designer/autoconnection/imagedialog.h 0 - - Another example of automatic signal and slot connection would be the - \l{Text Finder Example}{Text Finder} with its \c{on_findButton_clicked()} - slot. - - We use QMetaObject's system to enable signal and slot connections: - - \snippet examples/uitools/textfinder/textfinder.cpp 2 - - This enables us to implement the slot, as shown below: - - \snippet examples/uitools/textfinder/textfinder.cpp 6 - \dots - \snippet examples/uitools/textfinder/textfinder.cpp 8 - - Automatic connection of signals and slots provides both a standard naming - convention and an explicit interface for widget designers to work to. By - providing source code that implements a given interface, user interface - designers can check that their designs actually work without having to - write code themselves. -*/ - - -/*! - \page designer-customizing-forms.html - \contentspage {Qt Designer Manual}{Contents} - \previouspage Using Stylesheets with Qt Designer - \nextpage Using Custom Widgets with Qt Designer - - \title Customizing Qt Designer Forms - - \image designer-form-settings.png - - When saving a form in \QD, it is stored as a UI file. Several form - settings, for example the grid settings or the margin and spacing for the - default layout, are stored along with the form's components. These settings - are used when the \l uic generates the form's C++ code. For more - information on how to use forms in your application, see the - \l{Using a Designer UI File in Your Application} section. - - - \section1 Modifying the Form Settings - - To modify the form settings, open the \gui Form menu and select \gui{Form - Settings...} - - In the forms settings dialog you can specify the \gui Author of the form. - - You can also alter the margin and spacing properties for the form's default - layout (\gui {Layout Default}). These default layout properties will be - replaced by the corresponding \gui {Layout Function}, if the function is - specified, when \c uic generates code for the form. The form settings - dialog lets you specify functions for both the margin and the spacing. - - \target LayoutFunction - \table - \row - \i \inlineimage designer-form-layoutfunction.png - \i \bold{Layout Function} - - The default layout properties will be replaced by the corresponding - \gui{Layout Function}, when \c uic generates code for the form. This is - useful when different environments requires different layouts for the same - form. - - To specify layout functions for the form's margin and spacing, check the - \gui{Layout Function} group box to enable the line edits. - \endtable - - You can also specify the form's \gui{Include Hints}; i.e., provide a list - of the header files which will then be included in the form window's - associated UI file. Header files may be local, i.e., relative to the - project's directory, \c "mywidget.h", or global, i.e. part of Qt or the - compilers standard libraries: \c <QtGui/QWidget>. - - Finally, you can specify the function used to load pixmaps into the form - window (the \gui {Pixmap Function}). -*/ - - -/*! - \page designer-using-custom-widgets.html - \contentspage {Qt Designer Manual}{Contents} - \previouspage Customizing Qt Designer Forms - \nextpage Creating Custom Widgets for Qt Designer - - \title Using Custom Widgets with Qt Designer - - \QD can display custom widgets through its extensible plugin mechanism, - allowing the range of designable widgets to be extended by the user and - third parties. This feature also allows \QD to optionally support - \l{Qt3Support}{Qt 3 compatibility widgets}. Alternatively, it is possible - to use existing widgets as placeholders for widget classes that provide - similar APIs. - - Widgets from the Qt3Support library are made available via in \QD's support - for custom widgets. - - - \section1 Handling Custom Widgets - - Although \QD supports all of the standard Qt widgets, and can be configured - to handle widgets supplied in the Qt3Support library, some specialized - widgets may not be available as standard for a number of reasons: - - \list - \i Custom widgets may not be available at the time the user interface - is being designed. - \i Custom widgets may be platform-specific, and designers may be - developing the user interface on a different platform to end users. - \i The source code for a custom widget is not available, or the user - interface designers are unable to use the widget for non-technical - reasons. - \endlist - - In the above situations, it is still possible to design forms with the aim - of using custom widgets in the application. To achieve this, we can use - the widget promotion feature of \QD. - - In all other cases, where the source code to the custom widgets is - available, we can adapt the custom widget for use with \QD. - - - \section2 Promoting Widgets - - \image designer-promoting-widgets.png - - If some forms must be designed, but certain custom widgets are unavailble - to the designer, we can substitute similar widgets to represent the missing - widgets. For example, we might represent instances of a custom push button - class, \c MyPushButton, with instances of QPushButton and promote these to - \c MyPushButton so that \l{uic.html}{uic} generates suitable code for this - missing class. - - When choosing a widget to use as a placeholder, it is useful to compare the - API of the missing widget with those of standard Qt widgets. For - specialized widgets that subclass standard classes, the obvious choice of - placeholder is the base class of the custom widget; for example, QSlider - might be used for specialized QSlider subclasses. - - For specialized widgets that do not share a common API with standard Qt - widgets, it is worth considering adapting a custom widget for use in \QD. - If this is not possible then QWidget is the obvious choice for a - placeholder widget since it is the lowest common denominator for all - widgets. - - To add a placeholder, select an object of a suitable base class and choose - \gui{Promote to ...} from the form's context menu. After entering the class - name and header file in the lower part of the dialog, choose \gui{Add}. The - placeholder class will now appear along with the base class in the upper - list. Click the \gui{Promote} button to accept this choice. - - Now, when the form's context menu is opened over objects of the base class, - the placeholder class will appear in the \gui{Promote to} submenu, allowing - for convenient promotion of objects to that class. - - A promoted widget can be reverted to its base class by choosing - \gui{Demote to} from the form's context menu. - - - \section2 User Defined Custom Widgets - - \image worldtimeclockplugin-example.png - - Custom widgets can be adapted for use with \QD, giving designers the - opportunity to configure the user interface using the actual widgets that - will be used in an application rather than placeholder widgets. The process - of creating a custom widget plugin is described in the - \l{Creating Custom Widgets for Qt Designer} chapter of this manual. - - To use a plugin created in this way, it is necessary to ensure that the - plugin is located on a path that \QD searches for plugins. Generally, - plugins stored in \c{$QTDIR/plugins/designer} will be loaded when \QD - starts. Further information on building and installing plugins can be found - \l{Creating Custom Widgets for Qt Designer#BuildingandInstallingthePlugin} - {here}. You can also refer to the \l{How to Create Qt Plugins} - {Plugins HOWTO} document for information about creating plugins. -*/ - - -/*! - \page designer-creating-custom-widgets.html - \previouspage Using Custom Widgets with Qt Designer - \contentspage {Qt Designer Manual}{Contents} - \nextpage Creating Custom Widget Extensions - - \title Creating Custom Widgets for Qt Designer - - \QD's plugin-based architecture allows user-defined and third party custom - widgets to be edited just like you do with standard Qt widgets. All of the - custom widget's features are made available to \QD, including widget - properties, signals, and slots. Since \QD uses real widgets during the form - design process, custom widgets will appear the same as they do when - previewed. - - \image worldtimeclockplugin-example.png - - The \l QtDesigner module provides you with the ability to create custom - widgets in \QD. - - - \section1 Getting Started - - To integrate a custom widget with \QD, you require a suitable description - for the widget and an appropriate \c{.pro} file. - - - \section2 Providing an Interface Description - - To inform \QD about the type of widget you want to provide, create a - subclass of QDesignerCustomWidgetInterface that describes the various - properties your widget exposes. Most of these are supplied by functions - that are pure virtual in the base class, because only the author of the - plugin can provide this information. - - \table - \header - \o Function - \o Description of the return value - \row - \o \c name() - \o The name of the class that provides the widget. - \row - \o \c group() - \o The group in \QD's widget box that the widget belongs to. - \row - \o \c toolTip() - \o A short description to help users identify the widget in \QD. - \row - \o \c whatsThis() - \o A longer description of the widget for users of \QD. - \row - \o \c includeFile() - \o The header file that must be included in applications that use - this widget. This information is stored in UI files and will - be used by \c uic to create a suitable \c{#includes} statement - in the code it generates for the form containing the custom - widget. - \row - \o \c icon() - \o An icon that can be used to represent the widget in \QD's - widget box. - \row - \o \c isContainer() - \o True if the widget will be used to hold child widgets; - false otherwise. - \row - \o \c createWidget() - \o A QWidget pointer to an instance of the custom widget, - constructed with the parent supplied. - \note createWidget() is a factory function responsible for - creating the widget only. The custom widget's properties will - not be available until load() returns. - \row - \o \c domXml() - \o A description of the widget's properties, such as its object - name, size hint, and other standard QWidget properties. - \row - \o \c codeTemplate() - \o This function is reserved for future use by \QD. - \endtable - - Two other virtual functions can also be reimplemented: - - \table - \row - \o \c initialize() - \o Sets up extensions and other features for custom widgets. Custom - container extensions (see QDesignerContainerExtension) and task - menu extensions (see QDesignerTaskMenuExtension) should be set - up in this function. - \row - \o \c isInitialized() - \o Returns true if the widget has been initialized; returns false - otherwise. Reimplementations usually check whether the - \c initialize() function has been called and return the result - of this test. - \endtable - - - \section2 Notes on the \c{domXml()} Function - - The \c{domXml()} function returns a UI file snippet that is used by - \QD's widget factory to create a custom widget and its applicable - properties. - - Since Qt 4.4, \QD's widget box allows for a complete UI file to - describe \bold one custom widget. The UI file can be loaded using the - \c{<ui>} tag. Specifying the <ui> tag allows for adding the <customwidget> - element that contains additional information for custom widgets. The - \c{<widget>} tag is sufficient if no additional information is required - - If the custom widget does not provide a reasonable size hint, it is - necessary to specify a default geometry in the string returned by the - \c domXml() function in your subclass. For example, the - \c AnalogClockPlugin provided by the \l{designer/customwidgetplugin} - {Custom Widget Plugin} example, defines a default widgetgeometry in the - following way: - - \dots - \snippet examples/designer/customwidgetplugin/customwidgetplugin.cpp 11 - \dots - - An additional feature of the \c domXml() function is that, if it returns - an empty string, the widget will not be installed in \QD's widget box. - However, it can still be used by other widgets in the form. This feature - is used to hide widgets that should not be explicitly created by the user, - but are required by other widgets. - - - A complete custom widget specification looks like: - - \code -<ui language="c++"> displayname="MyWidget"> - <widget class="widgets::MyWidget" name="mywidget"/> - <customwidgets> - <customwidget> - <class>widgets::MyWidget</class> - <addpagemethod>addPage</addpagemethod> - <propertyspecifications> - <stringpropertyspecification name="fileName" notr="true" type="singleline" - <stringpropertyspecification name="text" type="richtext" - </propertyspecifications> - </customwidget> - </customwidgets> -</ui> - \endcode - - Attributes of the \c{<ui>} tag: - \table - \header - \o Attribute - \o Presence - \o Values - \o Comment - \row - \o \c{language} - \o optional - \o "c++", "jambi" - \o This attribute specifies the language the custom widget is intended for. - It is mainly there to prevent C++-plugins from appearing in Qt Jambi. - \row - \o \c{displayname} - \o optional - \o Class name - \o The value of the attribute appears in the Widget box and can be used to - strip away namespaces. - \endtable - - The \c{<addpagemethod>} tag tells \QD and \l uic which method should be used to - add pages to a container widget. This applies to container widgets that require - calling a particular method to add a child rather than adding the child by passing - the parent. In particular, this is relevant for containers that are not a - a subclass of the containers provided in \QD, but are based on the notion - of \e{Current Page}. In addition, you need to provide a container extension - for them. - - The \c{<propertyspecifications>} element can contain a list of property meta information. - Currently, properties of type string are supported. For these properties, the - \c{<stringpropertyspecification>} tag can be used. This tag has the following attributes: - - - \table - \header - \o Attribute - \o Presence - \o Values - \o Comment - \row - \o \c{name} - \o required - \o Name of the property - \row - \o \c{type} - \o required - \o See below table - \o The value of the attribute determines how the property editor will handle them. - \row - \o \c{notr} - \o optional - \o "true", "false" - \o If the attribute is "true", the value is not meant to be translated. - \endtable - - Values of the \c{type} attribute of the string property: - - \table - \header - \o Value - \o Type - \row - \o \c{"richtext"} - \o Rich text. - \row - \o \c{"multiline"} - \o Multi-line plain text. - \row - \o \c{"singleline"} - \o Single-line plain text. - \row - \o \c{"stylesheet"} - \o A CSS-style sheet. - \row - \o \c{"objectname"} - \o An object name (restricted set of valid characters). - \row - \o \c{"url"} - \o URL, file name. - \endtable - - \section1 Plugin Requirements - - In order for plugins to work correctly on all platforms, you need to ensure - that they export the symbols needed by \QD. - - First of all, the plugin class must be exported in order for the plugin to - be loaded by \QD. Use the Q_EXPORT_PLUGIN2() macro to do this. Also, the - QDESIGNER_WIDGET_EXPORT macro must be used to define each custom widget class - within a plugin, that \QD will instantiate. - - - \section1 Creating Well Behaved Widgets - - Some custom widgets have special user interface features that may make them - behave differently to many of the standard widgets found in \QD. - Specifically, if a custom widget grabs the keyboard as a result of a call - to QWidget::grabKeyboard(), the operation of \QD will be affected. - - To give custom widgets special behavior in \QD, provide an implementation - of the initialize() function to configure the widget construction process - for \QD specific behavior. This function will be called for the first time - before any calls to createWidget() and could perhaps set an internal flag - that can be tested later when \QD calls the plugin's createWidget() - function. - - - \target BuildingandInstallingthePlugin - \section1 Building and Installing the Plugin - - \section2 A Simple Plugin - - The \l{Custom Widget Plugin Example} demonstrates a simple \QD plugin. - - The \c{.pro} file for a plugin must specify the headers and sources for - both the custom widget and the plugin interface. Typically, this file only - has to specify that the plugin's project is to be built as a library, but - with specific plugin support for \QD. This is done with the following - declarations: - - \snippet examples/designer/customwidgetplugin/customwidgetplugin.pro 1 - - If Qt is configured to build in both debug and release modes, \QD will be - built in release mode. When this occurs, it is necessary to ensure that - plugins are also built in release mode. To do this, include the following - declaration in the plugin's \c{.pro} file: - - \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 3 - - If plugins are built in a mode that is incompatible with \QD, they will - not be loaded and installed. For more information about plugins, see the - \l{plugins-howto.html}{Plugins HOWTO} document. - - It is also necessary to ensure that the plugin is installed together with - other \QD widget plugins: - - \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 4 - - The \c $[QT_INSTALL_PLUGINS] variable is a placeholder to the location of - the installed Qt plugins. You can configure \QD to look for plugins in - other locations by setting the \c QT_PLUGIN_PATH environment variable - before running the application. - - \note \QD will look for a \c designer subdirectory in each path supplied. - - See QCoreApplication::libraryPaths() for more information about customizing - paths for libraries and plugins with Qt applications. - - \section2 Splitting up the Plugin - - In a real world scenario, you do not want to have dependencies of the - application making use of the custom widgets to the \QD headers and - libraries as introduced by the simple approach explained above. - - There are two ways to resolve this: - - \list - \i Create a \c{.pri} file that contains the headers sources and sources - of the custom widget: - - \code - INCLUDEPATH += $$PWD - HEADERS += $$PWD/analogclock.h - SOURCES += $$PWD/analogclock.cpp - \endcode - - This file would then be included by the \c{.pro} file of the plugin and - the application: - - \code - include(customwidget.pri) - \endcode - - Running \c{qmake -Wall} on the \c{.pro} files causes a warning to be - printed if an included \c{.pri} file cannot be found. - - \i Create a standalone shared library containing the custom widgets only - as described in - \l{sharedlibrary.html}{Creating Shared Libraries}. - - This library would then be used by the application as well as by the - \QD plugin. Care must be taken to ensure that the plugin can locate - the library at run-time. - \endlist - - \section1 Related Examples - - For more information on using custom widgets in \QD, refer to the - \l{designer/customwidgetplugin}{Custom Widget Plugin} and - \l{designer/worldtimeclockplugin}{World Time Clock Plugin} examples for more - information about using custom widgets in \QD. Also, you can use the - QDesignerCustomWidgetCollectionInterface class to combine several custom - widgets into a single library. -*/ - - -/*! - \page designer-creating-custom-widgets-extensions.html - \previouspage Creating Custom Widgets for Qt Designer - \nextpage Qt Designer's UI File Format - \contentspage {Qt Designer Manual}{Contents} - - \title Creating Custom Widget Extensions - - Once you have a custom widget plugin for \QD, you can provide it with the - expected behavior and functionality within \QD's workspace, using custom - widget extensions. - - - \section1 Extension Types - - There are several available types of extensions in \QD. You can use all of - these extensions in the same pattern, only replacing the respective - extension base class. - - QDesignerContainerExtension is necessary when implementing a custom - multi-page container. - - \table - \row - \i \inlineimage designer-manual-taskmenuextension.png - \i \bold{QDesignerTaskMenuExtension} - - QDesignerTaskMenuExtension is useful for custom widgets. It provides an - extension that allows you to add custom menu entries to \QD's task - menu. - - The \l{designer/taskmenuextension}{Task Menu Extension} example - illustrates how to use this class. - - \row - \i \inlineimage designer-manual-containerextension.png - \i \bold{QDesignerContainerExtension} - - QDesignerContainerExtension is necessary when implementing a custom - multi-page container. It provides an extension that allows you to add - and delete pages for a multi-page container plugin in \QD. - - The \l{designer/containerextension}{Container Extension} example - further explains how to use this class. - - \note It is not possible to add custom per-page properties for some - widgets (e.g., QTabWidget) due to the way they are implemented. - \endtable - - \table - \row - \i \inlineimage designer-manual-membersheetextension.png - \i \bold{QDesignerMemberSheetExtension} - - The QDesignerMemberSheetExtension class allows you to manipulate a - widget's member functions displayed when connecting signals and slots. - - \row - \i \inlineimage designer-manual-propertysheetextension.png - \i \bold{QDesignerPropertySheetExtension, - QDesignerDynamicPropertySheetExtension} - - These extension classes allow you to control how a widget's properties - are displayed in \QD's property editor. - \endtable - -\omit - \row - \o - \o \bold {QDesignerScriptExtension} - - The QDesignerScriptExtension class allows you to define script - snippets that are executed when a form is loaded. The extension - is primarily intended to be used to set up the internal states - of custom widgets. - \endtable -\endomit - - - \QD uses the QDesignerPropertySheetExtension and the - QDesignerMemberSheetExtension classes to feed its property and signal and - slot editors. Whenever a widget is selected in its workspace, \QD will - query for the widget's property sheet extension; likewise, whenever a - connection between two widgets is requested, \QD will query for the - widgets' member sheet extensions. - - \warning All widgets have default property and member sheets. If you - implement custom property sheet or member sheet extensions, your custom - extensions will override the default sheets. - - - \section1 Creating an Extension - - To create an extension you must inherit both QObject and the appropriate - base class, and reimplement its functions. Since we are implementing an - interface, we must ensure that it is made known to the meta object system - using the Q_INTERFACES() macro in the extension class's definition. For - example: - - \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 7 - - This enables \QD to use the qobject_cast() function to query for supported - interfaces using a QObject pointer only. - - - \section1 Exposing an Extension to Qt Designer - - In \QD the extensions are not created until they are required. For this - reason, when implementing extensions, you must subclass QExtensionFactory - to create a class that is able to make instances of your extensions. Also, - you must register your factory with \QD's extension manager; the extension - manager handles the construction of extensions. - - When an extension is requested, \QD's extension manager will run through - its registered factories calling QExtensionFactory::createExtension() for - each of them until it finds one that is able to create the requested - extension for the selected widget. This factory will then make an instance - of the extension. - - \image qtdesignerextensions.png - - - \section2 Creating an Extension Factory - - The QExtensionFactory class provides a standard extension factory, but it - can also be used as an interface for custom extension factories. - - The purpose is to reimplement the QExtensionFactory::createExtension() - function, making it able to create your extension, such as a - \l{designer/containerextension}{MultiPageWidget} container extension. - - You can either create a new QExtensionFactory and reimplement the - QExtensionFactory::createExtension() function: - - \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 8 - - or you can use an existing factory, expanding the - QExtensionFactory::createExtension() function to enable the factory to - create your custom extension as well: - - \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 9 - - - \section2 Accessing Qt Designer's Extension Manager - - When implementing a custom widget plugin, you must subclass the - QDesignerCustomWidgetInterface to expose your plugin to \QD. This is - covered in more detail in the - \l{Creating Custom Widgets for Qt Designer} section. The registration of - an extension factory is typically made in the - QDesignerCustomWidgetInterface::initialize() function: - - \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 10 - - The \c formEditor parameter in the - QDesignerCustomWidgetInterface::initialize() function is a pointer to \QD's - current QDesignerFormEditorInterface object. You must use the - QDesignerFormEditorInterface::extensionManager() function to retrieve an - interface to \QD's extension manager. Then you use the - QExtensionManager::registerExtensions() function to register your custom - extension factory. - - - \section1 Related Examples - - For more information on creating custom widget extensions in \QD, refer to - the \l{designer/taskmenuextension}{Task Menu Extension} and - \l{designer/containerextension}{Container Extension} examples. -*/ - - -/*! - \page designer-ui-file-format.html - \previouspage Creating Custom Widget Extensions - \contentspage {Qt Designer Manual}{Contents} - - \title Qt Designer's UI File Format - - The \c UI file format used by \QD is described by the - \l{http://www.w3.org/XML/Schema}{XML schema} presented below, - which we include for your convenience. Be aware that the format - may change in future Qt releases. - - \quotefile tools/designer/data/ui4.xsd -*/ - - -/*! - \page designer-recursive-shadow-casting.html - \title Implementation of the Recursive Shadow Casting Algorithm in Qt Designer - \contentspage {Qt Designer Manual}{Contents} - - \ingroup licensing - \brief License information for contributions to specific parts of the Qt - Designer source code. - - \legalese - Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). \BR - Copyright (C) 2005 Bjoern Bergstroem - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, modify, market, reproduce, - grant sublicenses and distribute subject to the following conditions: - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. These - files are provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE - WARRANTY OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - PURPOSE. - \endlegalese -*/ |