summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--FAQ.txt18
-rw-r--r--demos/browser/data/defaultbookmarks.xbel3
-rw-r--r--demos/browser/xbel.cpp109
-rw-r--r--demos/browser/xbel.h1
-rw-r--r--doc/src/bughowto.qdoc1
-rw-r--r--doc/src/classes.qdoc31
-rw-r--r--doc/src/classes/exportedfunctions.qdoc (renamed from doc/src/exportedfunctions.qdoc)0
-rw-r--r--doc/src/classes/phonon-namespace.qdoc (renamed from doc/src/qtassistant.qdoc)18
-rw-r--r--doc/src/classes/qtdesigner-api.qdoc1413
-rw-r--r--doc/src/demos/qtdemo.qdoc (renamed from doc/src/qtdemo.qdoc)0
-rw-r--r--doc/src/deployment/deployment-plugins.qdoc236
-rw-r--r--doc/src/deployment/deployment.qdoc (renamed from doc/src/deployment.qdoc)18
-rw-r--r--doc/src/deployment/qt-conf.qdoc (renamed from doc/src/qt-conf.qdoc)1
-rw-r--r--doc/src/deployment/qtconfig.qdoc (renamed from doc/src/qtconfig.qdoc)0
-rw-r--r--doc/src/desktop-integration.qdoc90
-rw-r--r--doc/src/development/activeqt-dumpcpp.qdoc (renamed from doc/src/activeqt-dumpcpp.qdoc)12
-rw-r--r--doc/src/development/activeqt-dumpdoc.qdoc (renamed from doc/src/activeqt-dumpdoc.qdoc)0
-rw-r--r--doc/src/development/activeqt-idc.qdoc (renamed from doc/src/activeqt-idc.qdoc)0
-rw-r--r--doc/src/development/activeqt-testcon.qdoc (renamed from doc/src/activeqt-testcon.qdoc)0
-rw-r--r--doc/src/development/assistant-manual.qdoc (renamed from doc/src/assistant-manual.qdoc)4
-rw-r--r--doc/src/development/debug.qdoc (renamed from doc/src/debug.qdoc)13
-rw-r--r--doc/src/development/designer-manual.qdoc (renamed from doc/src/designer-manual.qdoc)0
-rw-r--r--doc/src/development/developing-on-mac.qdoc (renamed from doc/src/developing-on-mac.qdoc)2
-rw-r--r--doc/src/development/developing-with-qt.qdoc (renamed from doc/src/classes/q3popupmenu.qdoc)60
-rw-r--r--doc/src/development/moc.qdoc (renamed from doc/src/moc.qdoc)1
-rw-r--r--doc/src/development/qmake-manual.qdoc (renamed from doc/src/qmake-manual.qdoc)5
-rw-r--r--doc/src/development/qmsdev.qdoc (renamed from doc/src/qmsdev.qdoc)37
-rw-r--r--doc/src/development/qtestlib.qdoc (renamed from doc/src/qtestlib.qdoc)3
-rw-r--r--doc/src/development/rcc.qdoc (renamed from doc/src/rcc.qdoc)1
-rw-r--r--doc/src/development/tools-list.qdoc (renamed from doc/src/tools-list.qdoc)1
-rw-r--r--doc/src/development/uic.qdoc (renamed from doc/src/uic.qdoc)1
-rw-r--r--doc/src/diagrams/dbus-examples.pngbin0 -> 19642 bytes
-rw-r--r--doc/src/distributingqt.qdoc154
-rw-r--r--doc/src/examples-overview.qdoc367
-rw-r--r--doc/src/examples.qdoc437
-rw-r--r--doc/src/examples/application.qdoc2
-rw-r--r--doc/src/examples/drilldown.qdoc4
-rw-r--r--doc/src/examples/qtscriptcalculator.qdoc1
-rw-r--r--doc/src/examples/qxmlstreambookmarks.qdoc13
-rw-r--r--doc/src/examples/trafficinfo.qdoc2
-rw-r--r--doc/src/files-and-resources/datastreamformat.qdoc (renamed from doc/src/datastreamformat.qdoc)13
-rw-r--r--doc/src/files-and-resources/resources.qdoc (renamed from doc/src/resources.qdoc)13
-rw-r--r--doc/src/frameworks-technologies/accessible.qdoc (renamed from doc/src/accessible.qdoc)32
-rw-r--r--doc/src/frameworks-technologies/activeqt-container.qdoc (renamed from doc/src/qaxcontainer.qdoc)48
-rw-r--r--doc/src/frameworks-technologies/activeqt-server.qdoc (renamed from doc/src/qaxserver.qdoc)54
-rw-r--r--doc/src/frameworks-technologies/activeqt.qdoc (renamed from doc/src/activeqt.qdoc)14
-rw-r--r--doc/src/frameworks-technologies/animation.qdoc (renamed from doc/src/animation.qdoc)17
-rw-r--r--doc/src/frameworks-technologies/containers.qdoc (renamed from doc/src/containers.qdoc)41
-rw-r--r--doc/src/frameworks-technologies/dbus-adaptors.qdoc (renamed from doc/src/qdbusadaptors.qdoc)56
-rw-r--r--doc/src/frameworks-technologies/dbus-intro.qdoc (renamed from doc/src/introtodbus.qdoc)4
-rw-r--r--doc/src/frameworks-technologies/desktop-integration.qdoc111
-rw-r--r--doc/src/frameworks-technologies/dnd.qdoc (renamed from doc/src/dnd.qdoc)129
-rw-r--r--doc/src/frameworks-technologies/eventsandfilters.qdoc (renamed from doc/src/eventsandfilters.qdoc)16
-rw-r--r--doc/src/frameworks-technologies/gestures.qdoc (renamed from doc/src/gestures.qdoc)2
-rw-r--r--doc/src/frameworks-technologies/graphicsview.qdoc (renamed from doc/src/graphicsview.qdoc)15
-rw-r--r--doc/src/frameworks-technologies/implicit-sharing.qdoc (renamed from doc/src/implicit-sharing.qdoc)16
-rw-r--r--doc/src/frameworks-technologies/ipc.qdoc (renamed from doc/src/ipc.qdoc)28
-rw-r--r--doc/src/frameworks-technologies/model-view-programming.qdoc (renamed from doc/src/model-view-programming.qdoc)17
-rw-r--r--doc/src/frameworks-technologies/phonon.qdoc (renamed from doc/src/phonon.qdoc)87
-rw-r--r--doc/src/frameworks-technologies/plugins-howto.qdoc (renamed from doc/src/plugins-howto.qdoc)265
-rw-r--r--doc/src/frameworks-technologies/qthelp.qdoc (renamed from doc/src/qthelp.qdoc)76
-rw-r--r--doc/src/frameworks-technologies/qundo.qdoc113
-rw-r--r--doc/src/frameworks-technologies/richtext.qdoc1226
-rw-r--r--doc/src/frameworks-technologies/statemachine.qdoc (renamed from doc/src/statemachine.qdoc)14
-rw-r--r--doc/src/frameworks-technologies/templates.qdoc (renamed from doc/src/templates.qdoc)1
-rw-r--r--doc/src/frameworks-technologies/threads.qdoc (renamed from doc/src/threads.qdoc)388
-rw-r--r--doc/src/frameworks-technologies/unicode.qdoc (renamed from doc/src/unicode.qdoc)27
-rw-r--r--doc/src/geometry.qdoc150
-rw-r--r--doc/src/getting-started/demos.qdoc (renamed from doc/src/demos.qdoc)21
-rw-r--r--doc/src/getting-started/examples.qdoc1108
-rw-r--r--doc/src/getting-started/how-to-learn-qt.qdoc (renamed from doc/src/how-to-learn-qt.qdoc)15
-rw-r--r--doc/src/getting-started/installation.qdoc (renamed from doc/src/installation.qdoc)16
-rw-r--r--doc/src/getting-started/known-issues.qdoc (renamed from doc/src/known-issues.qdoc)33
-rw-r--r--doc/src/getting-started/tutorials.qdoc103
-rw-r--r--doc/src/groups.qdoc487
-rw-r--r--doc/src/howtos/accelerators.qdoc (renamed from doc/src/accelerators.qdoc)3
-rw-r--r--doc/src/howtos/appicon.qdoc (renamed from doc/src/appicon.qdoc)15
-rw-r--r--doc/src/howtos/custom-types.qdoc (renamed from doc/src/custom-types.qdoc)3
-rw-r--r--doc/src/howtos/guibooks.qdoc (renamed from doc/src/guibooks.qdoc)3
-rw-r--r--doc/src/howtos/openvg.qdoc (renamed from doc/src/qtopenvg.qdoc)24
-rw-r--r--doc/src/howtos/qtdesigner.qdoc (renamed from doc/src/qtdesigner.qdoc)30
-rw-r--r--doc/src/howtos/restoring-geometry.qdoc87
-rw-r--r--doc/src/howtos/session.qdoc (renamed from doc/src/session.qdoc)3
-rw-r--r--doc/src/howtos/sharedlibrary.qdoc (renamed from doc/src/sharedlibrary.qdoc)16
-rw-r--r--doc/src/howtos/timers.qdoc (renamed from doc/src/timers.qdoc)3
-rw-r--r--doc/src/howtos/unix-signal-handlers.qdoc (renamed from doc/src/unix-signal-handlers.qdoc)4
-rw-r--r--doc/src/images/activeqt-examples.pngbin0 -> 6671 bytes
-rw-r--r--doc/src/images/animation-examples.pngbin0 -> 28060 bytes
-rw-r--r--doc/src/images/dbus-examples.pngbin0 -> 6181 bytes
-rw-r--r--doc/src/images/ipc-examples.pngbin0 -> 7727 bytes
-rw-r--r--doc/src/images/qq-thumbnail.pngbin0 -> 27022 bytes
-rw-r--r--doc/src/images/statemachine-examples.pngbin0 -> 3326 bytes
-rw-r--r--doc/src/images/webkit-examples.pngbin26874 -> 19323 bytes
-rw-r--r--doc/src/index.qdoc195
-rw-r--r--doc/src/internationalization/i18n.qdoc (renamed from doc/src/i18n.qdoc)19
-rw-r--r--doc/src/internationalization/linguist-manual.qdoc (renamed from doc/src/linguist-manual.qdoc)0
-rw-r--r--doc/src/legal/commercialeditions.qdoc3
-rw-r--r--doc/src/legal/editions.qdoc12
-rw-r--r--doc/src/legal/licenses.qdoc1
-rw-r--r--doc/src/modules.qdoc952
-rw-r--r--doc/src/network-programming/qtnetwork.qdoc (renamed from doc/src/qtnetwork.qdoc)50
-rw-r--r--doc/src/network-programming/ssl.qdoc (renamed from doc/src/classes/qpagesetupdialog.qdoc)55
-rw-r--r--doc/src/objectmodel/metaobjects.qdoc (renamed from doc/src/metaobjects.qdoc)1
-rw-r--r--doc/src/objectmodel/object.qdoc (renamed from doc/src/object.qdoc)9
-rw-r--r--doc/src/objectmodel/objecttrees.qdoc115
-rw-r--r--doc/src/objectmodel/properties.qdoc (renamed from doc/src/properties.qdoc)1
-rw-r--r--doc/src/objectmodel/signalsandslots.qdoc (renamed from doc/src/signalsandslots.qdoc)1
-rw-r--r--doc/src/objecttrees.qdoc117
-rw-r--r--doc/src/overviews.qdoc25
-rw-r--r--doc/src/painting-and-printing/coordsys.qdoc (renamed from doc/src/coordsys.qdoc)17
-rw-r--r--doc/src/painting-and-printing/paintsystem.qdoc (renamed from doc/src/paintsystem.qdoc)447
-rw-r--r--doc/src/painting-and-printing/printing.qdoc (renamed from doc/src/printing.qdoc)20
-rw-r--r--doc/src/platforms/atomic-operations.qdoc (renamed from doc/src/atomic-operations.qdoc)13
-rw-r--r--doc/src/platforms/compiler-notes.qdoc (renamed from doc/src/compiler-notes.qdoc)2
-rw-r--r--doc/src/platforms/emb-accel.qdoc (renamed from doc/src/emb-accel.qdoc)0
-rw-r--r--doc/src/platforms/emb-architecture.qdoc (renamed from doc/src/qtopiacore-architecture.qdoc)0
-rw-r--r--doc/src/platforms/emb-charinput.qdoc (renamed from doc/src/emb-charinput.qdoc)0
-rw-r--r--doc/src/platforms/emb-crosscompiling.qdoc (renamed from doc/src/emb-crosscompiling.qdoc)0
-rw-r--r--doc/src/platforms/emb-deployment.qdoc (renamed from doc/src/emb-deployment.qdoc)0
-rw-r--r--doc/src/platforms/emb-differences.qdoc (renamed from doc/src/emb-differences.qdoc)0
-rw-r--r--doc/src/platforms/emb-displaymanagement.qdoc (renamed from doc/src/qtopiacore-displaymanagement.qdoc)0
-rw-r--r--doc/src/platforms/emb-envvars.qdoc (renamed from doc/src/emb-envvars.qdoc)0
-rw-r--r--doc/src/platforms/emb-features.qdoc (renamed from doc/src/emb-features.qdoc)0
-rw-r--r--doc/src/platforms/emb-fonts.qdoc (renamed from doc/src/emb-fonts.qdoc)0
-rw-r--r--doc/src/platforms/emb-framebuffer-howto.qdoc (renamed from doc/src/emb-framebuffer-howto.qdoc)0
-rw-r--r--doc/src/platforms/emb-install.qdoc (renamed from doc/src/emb-install.qdoc)0
-rw-r--r--doc/src/platforms/emb-kmap2qmap.qdoc (renamed from doc/src/emb-kmap2qmap.qdoc)0
-rw-r--r--doc/src/platforms/emb-makeqpf.qdoc (renamed from doc/src/emb-makeqpf.qdoc)0
-rw-r--r--doc/src/platforms/emb-opengl.qdoc (renamed from doc/src/qtopiacore-opengl.qdoc)0
-rw-r--r--doc/src/platforms/emb-performance.qdoc (renamed from doc/src/emb-performance.qdoc)0
-rw-r--r--doc/src/platforms/emb-pointer.qdoc (renamed from doc/src/emb-pointer.qdoc)0
-rw-r--r--doc/src/platforms/emb-porting.qdoc (renamed from doc/src/emb-porting.qdoc)0
-rw-r--r--doc/src/platforms/emb-qvfb.qdoc (renamed from doc/src/emb-qvfb.qdoc)0
-rw-r--r--doc/src/platforms/emb-running.qdoc (renamed from doc/src/emb-running.qdoc)0
-rw-r--r--doc/src/platforms/emb-vnc.qdoc (renamed from doc/src/emb-vnc.qdoc)0
-rw-r--r--doc/src/platforms/mac-differences.qdoc (renamed from doc/src/mac-differences.qdoc)2
-rw-r--r--doc/src/platforms/platform-notes-rtos.qdoc (renamed from doc/src/platform-notes-rtos.qdoc)0
-rw-r--r--doc/src/platforms/platform-notes.qdoc (renamed from doc/src/platform-notes.qdoc)15
-rw-r--r--doc/src/platforms/qt-embedded-linux.qdoc (renamed from doc/src/qtopiacore.qdoc)16
-rw-r--r--doc/src/platforms/qt-embedded.qdoc (renamed from doc/src/qt-embedded.qdoc)2
-rw-r--r--doc/src/platforms/qtmac-as-native.qdoc (renamed from doc/src/qtmac-as-native.qdoc)2
-rw-r--r--doc/src/platforms/supported-platforms.qdoc (renamed from doc/src/supported-platforms.qdoc)2
-rw-r--r--doc/src/platforms/wince-customization.qdoc (renamed from doc/src/wince-customization.qdoc)0
-rw-r--r--doc/src/platforms/wince-introduction.qdoc (renamed from doc/src/wince-introduction.qdoc)34
-rw-r--r--doc/src/platforms/wince-opengl.qdoc (renamed from doc/src/wince-opengl.qdoc)0
-rw-r--r--doc/src/platforms/winsystem.qdoc (renamed from doc/src/winsystem.qdoc)3
-rw-r--r--doc/src/platforms/x11overlays.qdoc (renamed from doc/src/qtopengl.qdoc)69
-rw-r--r--doc/src/porting/porting-qsa.qdoc (renamed from doc/src/porting-qsa.qdoc)0
-rw-r--r--doc/src/porting/porting4-canvas.qdoc (renamed from doc/src/porting4-canvas.qdoc)1
-rw-r--r--doc/src/porting/porting4-designer.qdoc (renamed from doc/src/porting4-designer.qdoc)0
-rw-r--r--doc/src/porting/porting4-dnd.qdoc152
-rw-r--r--doc/src/porting/porting4-modifiedvirtual.qdocinc (renamed from doc/src/porting4-modifiedvirtual.qdocinc)0
-rw-r--r--doc/src/porting/porting4-obsoletedmechanism.qdocinc (renamed from doc/src/porting4-obsoletedmechanism.qdocinc)0
-rw-r--r--doc/src/porting/porting4-overview.qdoc (renamed from doc/src/porting4-overview.qdoc)0
-rw-r--r--doc/src/porting/porting4-removedenumvalues.qdocinc (renamed from doc/src/porting4-removedenumvalues.qdocinc)0
-rw-r--r--doc/src/porting/porting4-removedtypes.qdocinc (renamed from doc/src/porting4-removedtypes.qdocinc)0
-rw-r--r--doc/src/porting/porting4-removedvariantfunctions.qdocinc (renamed from doc/src/porting4-removedvariantfunctions.qdocinc)0
-rw-r--r--doc/src/porting/porting4-removedvirtual.qdocinc (renamed from doc/src/porting4-removedvirtual.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedclasses.qdocinc (renamed from doc/src/porting4-renamedclasses.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedenumvalues.qdocinc (renamed from doc/src/porting4-renamedenumvalues.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedfunctions.qdocinc (renamed from doc/src/porting4-renamedfunctions.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedstatic.qdocinc (renamed from doc/src/porting4-renamedstatic.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedtypes.qdocinc (renamed from doc/src/porting4-renamedtypes.qdocinc)0
-rw-r--r--doc/src/porting/porting4.qdoc (renamed from doc/src/porting4.qdoc)37
-rw-r--r--doc/src/porting/qt3to4.qdoc (renamed from doc/src/qt3to4.qdoc)0
-rw-r--r--doc/src/porting/qt4-accessibility.qdoc (renamed from doc/src/qt4-accessibility.qdoc)1
-rw-r--r--doc/src/porting/qt4-arthur.qdoc (renamed from doc/src/qt4-arthur.qdoc)0
-rw-r--r--doc/src/porting/qt4-designer.qdoc (renamed from doc/src/qt4-designer.qdoc)0
-rw-r--r--doc/src/porting/qt4-interview.qdoc (renamed from doc/src/qt4-interview.qdoc)0
-rw-r--r--doc/src/porting/qt4-mainwindow.qdoc (renamed from doc/src/qt4-mainwindow.qdoc)0
-rw-r--r--doc/src/porting/qt4-network.qdoc (renamed from doc/src/qt4-network.qdoc)0
-rw-r--r--doc/src/porting/qt4-scribe.qdoc (renamed from doc/src/qt4-scribe.qdoc)0
-rw-r--r--doc/src/porting/qt4-sql.qdoc (renamed from doc/src/qt4-sql.qdoc)0
-rw-r--r--doc/src/porting/qt4-styles.qdoc (renamed from doc/src/qt4-styles.qdoc)0
-rw-r--r--doc/src/porting/qt4-threads.qdoc (renamed from doc/src/qt4-threads.qdoc)0
-rw-r--r--doc/src/porting/qt4-tulip.qdoc (renamed from doc/src/qt4-tulip.qdoc)0
-rw-r--r--doc/src/qt-webpages.qdoc (renamed from doc/src/trolltech-webpages.qdoc)0
-rw-r--r--doc/src/qt3support.qdoc81
-rw-r--r--doc/src/qt4-intro.qdoc6
-rw-r--r--doc/src/qtdbus.qdoc124
-rw-r--r--doc/src/qtgui.qdoc59
-rw-r--r--doc/src/qtmain.qdoc93
-rw-r--r--doc/src/qtscripttools.qdoc72
-rw-r--r--doc/src/qtsvg.qdoc135
-rw-r--r--doc/src/qttest.qdoc70
-rw-r--r--doc/src/qtuiloader.qdoc82
-rw-r--r--doc/src/qundo.qdoc113
-rw-r--r--doc/src/richtext.qdoc1076
-rw-r--r--doc/src/scripting/ecmascript.qdoc (renamed from doc/src/ecmascript.qdoc)1
-rw-r--r--doc/src/scripting/qtscriptdebugger-manual.qdoc (renamed from doc/src/qtscriptdebugger-manual.qdoc)1
-rw-r--r--doc/src/scripting/qtscriptextensions.qdoc (renamed from doc/src/qtscriptextensions.qdoc)11
-rw-r--r--doc/src/scripting/scripting.qdoc (renamed from doc/src/qtscript.qdoc)61
-rw-r--r--doc/src/snippets/code/doc_src_qalgorithms.qdoc2
-rw-r--r--doc/src/snippets/code/doc_src_qtmultimedia.qdoc8
-rw-r--r--doc/src/sql-programming/qsqldatatype-table.qdoc (renamed from doc/src/qsqldatatype-table.qdoc)4
-rw-r--r--doc/src/sql-programming/sql-driver.qdoc (renamed from doc/src/sql-driver.qdoc)12
-rw-r--r--doc/src/sql-programming/sql-programming.qdoc (renamed from doc/src/qtsql.qdoc)153
-rw-r--r--doc/src/topics.qdoc290
-rw-r--r--doc/src/tutorials/addressbook-fr.qdoc3
-rw-r--r--doc/src/tutorials/addressbook.qdoc3
-rw-r--r--doc/src/tutorials/widgets-tutorial.qdoc15
-rw-r--r--doc/src/widgets-and-layouts/focus.qdoc (renamed from doc/src/focus.qdoc)17
-rw-r--r--doc/src/widgets-and-layouts/gallery-cde.qdoc (renamed from doc/src/gallery-cde.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-cleanlooks.qdoc (renamed from doc/src/gallery-cleanlooks.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-gtk.qdoc (renamed from doc/src/gallery-gtk.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-macintosh.qdoc (renamed from doc/src/gallery-macintosh.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-motif.qdoc (renamed from doc/src/gallery-motif.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-plastique.qdoc (renamed from doc/src/gallery-plastique.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-windows.qdoc (renamed from doc/src/gallery-windows.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-windowsvista.qdoc (renamed from doc/src/gallery-windowsvista.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery-windowsxp.qdoc (renamed from doc/src/gallery-windowsxp.qdoc)0
-rw-r--r--doc/src/widgets-and-layouts/gallery.qdoc (renamed from doc/src/gallery.qdoc)1
-rw-r--r--doc/src/widgets-and-layouts/layout.qdoc (renamed from doc/src/layout.qdoc)16
-rw-r--r--doc/src/widgets-and-layouts/styles.qdoc (renamed from doc/src/styles.qdoc)100
-rw-r--r--doc/src/widgets-and-layouts/stylesheet.qdoc (renamed from doc/src/stylesheet.qdoc)36
-rw-r--r--doc/src/widgets-and-layouts/widgets.qdoc187
-rw-r--r--doc/src/windows-and-dialogs/dialogs.qdoc (renamed from doc/src/qtcore.qdoc)40
-rw-r--r--doc/src/windows-and-dialogs/mainwindow.qdoc279
-rw-r--r--doc/src/xml-processing/xml-patterns.qdoc (renamed from doc/src/qtxmlpatterns.qdoc)76
-rw-r--r--doc/src/xml-processing/xml-processing.qdoc (renamed from doc/src/qtxml.qdoc)402
-rw-r--r--doc/src/xml-processing/xquery-introduction.qdoc (renamed from doc/src/xquery-introduction.qdoc)3
-rw-r--r--examples/network/googlesuggest/googlesuggest.cpp7
-rw-r--r--examples/xml/streambookmarks/xbelreader.cpp100
-rw-r--r--mkspecs/features/win32/rtti_off.prf1
-rw-r--r--qmake/Makefile.unix8
-rw-r--r--qmake/Makefile.win328
-rw-r--r--qmake/Makefile.win32-g++6
-rw-r--r--qmake/Makefile.win32-g++-sh6
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp4
-rw-r--r--qmake/qmake.pri2
-rw-r--r--src/3rdparty/easing/legal.qdoc2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp8
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp10
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc110
-rw-r--r--src/corelib/animation/qanimationgroup.cpp7
-rw-r--r--src/corelib/animation/qparallelanimationgroup_p.h2
-rw-r--r--src/corelib/animation/qpropertyanimation.cpp2
-rw-r--r--src/corelib/codecs/codecs.qdoc (renamed from doc/src/codecs.qdoc)12
-rw-r--r--src/corelib/concurrent/qfuture.cpp6
-rw-r--r--src/corelib/concurrent/qfuturesynchronizer.cpp6
-rw-r--r--src/corelib/concurrent/qfuturewatcher.cpp10
-rw-r--r--src/corelib/concurrent/qfuturewatcher_p.h2
-rw-r--r--src/corelib/concurrent/qrunnable.cpp2
-rw-r--r--src/corelib/concurrent/qtconcurrentfilter.cpp4
-rw-r--r--src/corelib/concurrent/qtconcurrentmap.cpp10
-rw-r--r--src/corelib/concurrent/qtconcurrentrun.cpp6
-rw-r--r--src/corelib/concurrent/qthreadpool.cpp4
-rw-r--r--src/corelib/global/qendian.qdoc (renamed from doc/src/classes/qtendian.qdoc)2
-rw-r--r--src/corelib/global/qglobal.cpp4
-rw-r--r--src/corelib/global/qglobal.h2
-rw-r--r--src/corelib/global/qlibraryinfo.cpp3
-rw-r--r--src/corelib/global/qnamespace.qdoc (renamed from doc/src/classes/qnamespace.qdoc)2
-rw-r--r--src/corelib/io/qdatastream.cpp2
-rw-r--r--src/corelib/io/qdebug.cpp3
-rw-r--r--src/corelib/io/qdir.cpp4
-rw-r--r--src/corelib/io/qfile.cpp2
-rw-r--r--src/corelib/io/qfileinfo_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents_p.h4
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice.cpp7
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice_p.h2
-rw-r--r--src/corelib/io/qprocess.cpp21
-rw-r--r--src/corelib/io/qresource.cpp2
-rw-r--r--src/corelib/io/qsettings.cpp3
-rw-r--r--src/corelib/io/qtemporaryfile.cpp2
-rw-r--r--src/corelib/io/qtextstream.cpp6
-rw-r--r--src/corelib/io/qurl.cpp8
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.cpp1
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp4
-rw-r--r--src/corelib/kernel/qbasictimer.cpp1
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp3
-rw-r--r--src/corelib/kernel/qcoreevent.cpp1
-rw-r--r--src/corelib/kernel/qcoreglobaldata.cpp2
-rw-r--r--src/corelib/kernel/qobject.cpp2
-rw-r--r--src/corelib/kernel/qpointer.cpp2
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp1
-rw-r--r--src/corelib/kernel/qsignalmapper.cpp4
-rw-r--r--src/corelib/kernel/qsocketnotifier.cpp1
-rw-r--r--src/corelib/kernel/qsystemsemaphore.cpp1
-rw-r--r--src/corelib/kernel/qtimer.cpp23
-rw-r--r--src/corelib/kernel/qtranslator.cpp2
-rw-r--r--src/corelib/kernel/qvariant.cpp3
-rw-r--r--src/corelib/kernel/qwineventnotifier_p.cpp2
-rw-r--r--src/corelib/plugin/qlibrary.cpp2
-rw-r--r--src/corelib/plugin/qplugin.qdoc (renamed from doc/src/classes/qplugin.qdoc)0
-rw-r--r--src/corelib/plugin/qpluginloader.cpp2
-rw-r--r--src/corelib/plugin/quuid.cpp1
-rw-r--r--src/corelib/thread/qmutex.cpp3
-rw-r--r--src/corelib/thread/qreadwritelock.cpp3
-rw-r--r--src/corelib/thread/qsemaphore.cpp1
-rw-r--r--src/corelib/thread/qthread.cpp2
-rw-r--r--src/corelib/thread/qthreadstorage.cpp2
-rw-r--r--src/corelib/thread/qwaitcondition.qdoc (renamed from doc/src/classes/qwaitcondition.qdoc)1
-rw-r--r--src/corelib/tools/qalgorithms.qdoc (renamed from doc/src/classes/qalgorithms.qdoc)2
-rw-r--r--src/corelib/tools/qbytearray.cpp4
-rw-r--r--src/corelib/tools/qbytearraymatcher.cpp2
-rw-r--r--src/corelib/tools/qcache.qdoc (renamed from doc/src/classes/qcache.qdoc)2
-rw-r--r--src/corelib/tools/qchar.cpp4
-rw-r--r--src/corelib/tools/qdatetime.cpp6
-rw-r--r--src/corelib/tools/qeasingcurve.cpp2
-rw-r--r--src/corelib/tools/qhash.cpp4
-rw-r--r--src/corelib/tools/qiterator.qdoc (renamed from doc/src/classes/qiterator.qdoc)0
-rw-r--r--src/corelib/tools/qline.cpp4
-rw-r--r--src/corelib/tools/qlinkedlist.cpp2
-rw-r--r--src/corelib/tools/qlist.cpp (renamed from src/corelib/tools/qlistdata.cpp)2
-rw-r--r--src/corelib/tools/qlocale.cpp4
-rw-r--r--src/corelib/tools/qmap.cpp4
-rw-r--r--src/corelib/tools/qpair.qdoc (renamed from doc/src/classes/qpair.qdoc)0
-rw-r--r--src/corelib/tools/qpoint.cpp4
-rw-r--r--src/corelib/tools/qqueue.cpp2
-rw-r--r--src/corelib/tools/qrect.cpp4
-rw-r--r--src/corelib/tools/qregexp.cpp3
-rw-r--r--src/corelib/tools/qset.qdoc (renamed from doc/src/classes/qset.qdoc)2
-rw-r--r--src/corelib/tools/qshareddata.cpp663
-rw-r--r--src/corelib/tools/qsharedpointer.cpp4
-rw-r--r--src/corelib/tools/qsize.cpp4
-rw-r--r--src/corelib/tools/qstack.cpp2
-rw-r--r--src/corelib/tools/qstring.cpp10
-rw-r--r--src/corelib/tools/qstringbuilder.cpp8
-rw-r--r--src/corelib/tools/qstringlist.cpp4
-rw-r--r--src/corelib/tools/qstringmatcher.cpp2
-rw-r--r--src/corelib/tools/qtextboundaryfinder.cpp2
-rw-r--r--src/corelib/tools/qtimeline.cpp2
-rw-r--r--src/corelib/tools/qvarlengtharray.qdoc (renamed from doc/src/classes/qvarlengtharray.qdoc)0
-rw-r--r--src/corelib/tools/qvector.cpp2
-rw-r--r--src/corelib/tools/tools.pri2
-rw-r--r--src/corelib/xml/qxmlstream.cpp115
-rw-r--r--src/corelib/xml/qxmlstream.h16
-rw-r--r--src/corelib/xml/qxmlutils.cpp4
-rw-r--r--src/corelib/xml/qxmlutils_p.h2
-rw-r--r--src/dbus/qdbus_symbols.cpp10
-rw-r--r--src/gui/accessible/qaccessible.cpp2
-rw-r--r--src/gui/dialogs/qabstractprintdialog.cpp5
-rw-r--r--src/gui/dialogs/qcolordialog.cpp4
-rw-r--r--src/gui/dialogs/qdialog.cpp4
-rw-r--r--src/gui/dialogs/qerrormessage.cpp3
-rw-r--r--src/gui/dialogs/qfiledialog.cpp4
-rw-r--r--src/gui/dialogs/qfontdialog.cpp5
-rw-r--r--src/gui/dialogs/qinputdialog.cpp4
-rw-r--r--src/gui/dialogs/qmessagebox.cpp4
-rw-r--r--src/gui/dialogs/qpagesetupdialog.cpp46
-rw-r--r--src/gui/dialogs/qprintdialog.qdoc (renamed from doc/src/classes/qprintdialog.qdoc)0
-rw-r--r--src/gui/dialogs/qprintpreviewdialog.cpp3
-rw-r--r--src/gui/dialogs/qprogressdialog.cpp4
-rw-r--r--src/gui/embedded/qdirectpainter_qws.cpp2
-rw-r--r--src/gui/embedded/qlock.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicsgridlayout.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp33
-rw-r--r--src/gui/graphicsview/qgraphicsitem.h9
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h10
-rw-r--r--src/gui/graphicsview/qgraphicsitemanimation.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicslayout.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicslayout.h2
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.h2
-rw-r--r--src/gui/graphicsview/qgraphicslinearlayout.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp10
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h1
-rw-r--r--src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp9
-rw-r--r--src/gui/graphicsview/qgraphicssceneindex.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicstransform.cpp1
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp3
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp5
-rw-r--r--src/gui/graphicsview/qgraphicswidget.h1
-rw-r--r--src/gui/image/qbitmap.cpp2
-rw-r--r--src/gui/image/qicon.cpp4
-rw-r--r--src/gui/image/qiconengine.cpp4
-rw-r--r--src/gui/image/qimage.cpp11
-rw-r--r--src/gui/image/qimagereader.cpp2
-rw-r--r--src/gui/image/qimagewriter.cpp2
-rw-r--r--src/gui/image/qmovie.cpp2
-rw-r--r--src/gui/image/qpicture.cpp6
-rw-r--r--src/gui/image/qpixmap.cpp4
-rw-r--r--src/gui/image/qpixmap_mac.cpp11
-rw-r--r--src/gui/image/qpixmapcache.cpp3
-rw-r--r--src/gui/image/qpixmapfilter.cpp8
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.cpp1
-rw-r--r--src/gui/itemviews/qabstractitemdelegate.cpp2
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp2
-rw-r--r--src/gui/itemviews/qcolumnview.cpp2
-rw-r--r--src/gui/itemviews/qheaderview.cpp5
-rw-r--r--src/gui/itemviews/qitemdelegate.cpp2
-rw-r--r--src/gui/itemviews/qitemselectionmodel.cpp22
-rw-r--r--src/gui/itemviews/qlistview.cpp12
-rw-r--r--src/gui/itemviews/qlistwidget.cpp2
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp179
-rw-r--r--src/gui/itemviews/qstringlistmodel.cpp2
-rw-r--r--src/gui/itemviews/qstyleditemdelegate.cpp2
-rw-r--r--src/gui/itemviews/qtableview.cpp2
-rw-r--r--src/gui/itemviews/qtablewidget.cpp2
-rw-r--r--src/gui/itemviews/qtreeview.cpp2
-rw-r--r--src/gui/itemviews/qtreewidget.cpp4
-rw-r--r--src/gui/kernel/qaction.cpp4
-rw-r--r--src/gui/kernel/qactiongroup.cpp2
-rw-r--r--src/gui/kernel/qapplication.cpp6
-rw-r--r--src/gui/kernel/qapplication_x11.cpp18
-rw-r--r--src/gui/kernel/qboxlayout.cpp5
-rw-r--r--src/gui/kernel/qclipboard.cpp4
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm77
-rw-r--r--src/gui/kernel/qcursor.cpp2
-rw-r--r--src/gui/kernel/qdesktopwidget.qdoc (renamed from doc/src/classes/qdesktopwidget.qdoc)2
-rw-r--r--src/gui/kernel/qeventdispatcher_mac.mm2
-rw-r--r--src/gui/kernel/qformlayout.cpp2
-rw-r--r--src/gui/kernel/qgridlayout.cpp3
-rw-r--r--src/gui/kernel/qkeymapper.cpp1
-rw-r--r--src/gui/kernel/qkeysequence.cpp3
-rw-r--r--src/gui/kernel/qlayout.cpp1
-rw-r--r--src/gui/kernel/qlayoutitem.cpp3
-rw-r--r--src/gui/kernel/qmime_mac.cpp3
-rw-r--r--src/gui/kernel/qmime_win.cpp2
-rw-r--r--src/gui/kernel/qpalette.cpp4
-rw-r--r--src/gui/kernel/qshortcut.cpp2
-rw-r--r--src/gui/kernel/qsizepolicy.qdoc (renamed from doc/src/classes/qsizepolicy.qdoc)1
-rw-r--r--src/gui/kernel/qsound.cpp2
-rw-r--r--src/gui/kernel/qstackedlayout.cpp2
-rw-r--r--src/gui/kernel/qtooltip.cpp2
-rw-r--r--src/gui/kernel/qwhatsthis.cpp2
-rw-r--r--src/gui/kernel/qwidget.cpp44
-rw-r--r--src/gui/kernel/qwidget_mac.mm98
-rw-r--r--src/gui/kernel/qwidgetaction.cpp5
-rw-r--r--src/gui/math3d/qgenericmatrix.cpp2
-rw-r--r--src/gui/math3d/qmatrix4x4.cpp22
-rw-r--r--src/gui/math3d/qquaternion.cpp1
-rw-r--r--src/gui/math3d/qvector2d.cpp2
-rw-r--r--src/gui/math3d/qvector3d.cpp1
-rw-r--r--src/gui/math3d/qvector4d.cpp1
-rw-r--r--src/gui/painting/painting.pri3
-rw-r--r--src/gui/painting/qblendfunctions.cpp633
-rw-r--r--src/gui/painting/qbrush.cpp10
-rw-r--r--src/gui/painting/qcolor.cpp4
-rw-r--r--src/gui/painting/qcolormap.qdoc (renamed from doc/src/classes/qcolormap.qdoc)2
-rw-r--r--src/gui/painting/qdrawhelper_p.h9
-rw-r--r--src/gui/painting/qmatrix.cpp2
-rw-r--r--src/gui/painting/qpaintdevice.cpp2
-rw-r--r--src/gui/painting/qpaintdevice.qdoc (renamed from doc/src/classes/qpaintdevice.qdoc)2
-rw-r--r--src/gui/painting/qpaintdevice_qws.cpp33
-rw-r--r--src/gui/painting/qpaintengine.cpp2
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp85
-rw-r--r--src/gui/painting/qpaintengine_x11.cpp16
-rw-r--r--src/gui/painting/qpainter.cpp4
-rw-r--r--src/gui/painting/qpainterpath.cpp4
-rw-r--r--src/gui/painting/qpen.cpp4
-rw-r--r--src/gui/painting/qpolygon.cpp4
-rw-r--r--src/gui/painting/qprinter.cpp6
-rw-r--r--src/gui/painting/qprinterinfo.qdoc (renamed from doc/src/classes/qprinterinfo.qdoc)2
-rw-r--r--src/gui/painting/qregion.cpp2
-rw-r--r--src/gui/painting/qstylepainter.cpp2
-rw-r--r--src/gui/painting/qtransform.cpp2
-rw-r--r--src/gui/styles/qmacstyle.qdoc (renamed from doc/src/classes/qmacstyle.qdoc)0
-rw-r--r--src/gui/styles/qstyleoption.cpp2
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.cpp2
-rw-r--r--src/gui/text/qfont.cpp9
-rw-r--r--src/gui/text/qfontdatabase.cpp6
-rw-r--r--src/gui/text/qfontmetrics.cpp6
-rw-r--r--src/gui/text/qsyntaxhighlighter.cpp2
-rw-r--r--src/gui/text/qtextcontrol.cpp2
-rw-r--r--src/gui/text/qtextcursor.cpp6
-rw-r--r--src/gui/text/qtextdocument.cpp4
-rw-r--r--src/gui/text/qtextdocumentfragment.cpp2
-rw-r--r--src/gui/text/qtextdocumentwriter.cpp2
-rw-r--r--src/gui/text/qtextformat.cpp20
-rw-r--r--src/gui/text/qtextlayout.cpp6
-rw-r--r--src/gui/text/qtextlist.cpp2
-rw-r--r--src/gui/text/qtextobject.cpp26
-rw-r--r--src/gui/text/qtextobject_p.h2
-rw-r--r--src/gui/text/qtextoption.cpp2
-rw-r--r--src/gui/text/qtexttable.cpp4
-rw-r--r--src/gui/text/qtexttable_p.h2
-rw-r--r--src/gui/util/qsystemtrayicon.cpp1
-rw-r--r--src/gui/util/qundogroup.cpp1
-rw-r--r--src/gui/util/qundostack.cpp2
-rw-r--r--src/gui/util/qundoview.cpp2
-rw-r--r--src/gui/widgets/qbuttongroup.cpp2
-rw-r--r--src/gui/widgets/qcalendarwidget.cpp2
-rw-r--r--src/gui/widgets/qcheckbox.cpp2
-rw-r--r--src/gui/widgets/qcombobox.cpp2
-rw-r--r--src/gui/widgets/qcommandlinkbutton.cpp2
-rw-r--r--src/gui/widgets/qdatetimeedit.cpp6
-rw-r--r--src/gui/widgets/qdial.cpp2
-rw-r--r--src/gui/widgets/qdialogbuttonbox.cpp4
-rw-r--r--src/gui/widgets/qdockwidget.cpp2
-rw-r--r--src/gui/widgets/qfocusframe.cpp2
-rw-r--r--src/gui/widgets/qfontcombobox.cpp1
-rw-r--r--src/gui/widgets/qframe.cpp2
-rw-r--r--src/gui/widgets/qgroupbox.cpp2
-rw-r--r--src/gui/widgets/qlabel.cpp2
-rw-r--r--src/gui/widgets/qlcdnumber.cpp2
-rw-r--r--src/gui/widgets/qlineedit.cpp4
-rw-r--r--src/gui/widgets/qmainwindow.cpp4
-rw-r--r--src/gui/widgets/qmdiarea.cpp4
-rw-r--r--src/gui/widgets/qmdisubwindow.cpp4
-rw-r--r--src/gui/widgets/qmenu.cpp4
-rw-r--r--src/gui/widgets/qmenubar.cpp5
-rw-r--r--src/gui/widgets/qplaintextedit.cpp7
-rw-r--r--src/gui/widgets/qprintpreviewwidget.cpp2
-rw-r--r--src/gui/widgets/qprogressbar.cpp2
-rw-r--r--src/gui/widgets/qpushbutton.cpp2
-rw-r--r--src/gui/widgets/qradiobutton.cpp2
-rw-r--r--src/gui/widgets/qrubberband.cpp3
-rw-r--r--src/gui/widgets/qscrollarea.cpp2
-rw-r--r--src/gui/widgets/qsizegrip.cpp3
-rw-r--r--src/gui/widgets/qslider.cpp2
-rw-r--r--src/gui/widgets/qspinbox.cpp4
-rw-r--r--src/gui/widgets/qsplashscreen.cpp3
-rw-r--r--src/gui/widgets/qsplitter.cpp2
-rw-r--r--src/gui/widgets/qstackedwidget.cpp3
-rw-r--r--src/gui/widgets/qstatusbar.cpp4
-rw-r--r--src/gui/widgets/qtabbar.cpp2
-rw-r--r--src/gui/widgets/qtabwidget.cpp2
-rw-r--r--src/gui/widgets/qtextbrowser.cpp2
-rw-r--r--src/gui/widgets/qtextedit.cpp4
-rw-r--r--src/gui/widgets/qtoolbar.cpp4
-rw-r--r--src/gui/widgets/qtoolbox.cpp2
-rw-r--r--src/gui/widgets/qtoolbutton.cpp2
-rw-r--r--src/gui/widgets/qvalidator.cpp9
-rw-r--r--src/gui/widgets/qworkspace.cpp1
-rw-r--r--src/network/access/qftp.cpp4
-rw-r--r--src/network/access/qhttp.cpp10
-rw-r--r--src/network/access/qnetworkcookie.cpp7
-rw-r--r--src/network/access/qnetworkrequest.cpp2
-rw-r--r--src/network/kernel/qauthenticator.cpp2
-rw-r--r--src/network/kernel/qhostaddress.cpp2
-rw-r--r--src/network/kernel/qhostinfo.cpp2
-rw-r--r--src/network/kernel/qnetworkinterface.cpp4
-rw-r--r--src/network/kernel/qnetworkproxy.cpp4
-rw-r--r--src/network/kernel/qurlinfo.cpp2
-rw-r--r--src/network/socket/qabstractsocket.cpp2
-rw-r--r--src/network/socket/qnativesocketengine.cpp2
-rw-r--r--src/network/socket/qtcpserver.cpp2
-rw-r--r--src/network/socket/qtcpsocket.cpp2
-rw-r--r--src/network/socket/qudpsocket.cpp2
-rw-r--r--src/network/ssl/qssl.cpp3
-rw-r--r--src/network/ssl/qsslcertificate.cpp2
-rw-r--r--src/network/ssl/qsslcipher.cpp2
-rw-r--r--src/network/ssl/qsslconfiguration.cpp2
-rw-r--r--src/network/ssl/qsslerror.cpp2
-rw-r--r--src/network/ssl/qsslkey.cpp2
-rw-r--r--src/network/ssl/qsslsocket.cpp2
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadersource_p.h6
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp37
-rw-r--r--src/opengl/qgl.cpp10
-rw-r--r--src/opengl/qglcolormap.cpp2
-rw-r--r--src/opengl/qglframebufferobject.cpp6
-rw-r--r--src/opengl/qglpixelbuffer.cpp2
-rw-r--r--src/opengl/qglshaderprogram.cpp2
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp10
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp65
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h1
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp208
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.h29
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp116
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h12
-rw-r--r--src/plugins/imageformats/tiff/qtiffhandler.cpp107
-rw-r--r--src/qt3support/sql/q3sqlfieldinfo.qdoc (renamed from doc/src/classes/q3sqlfieldinfo.qdoc)0
-rw-r--r--src/qt3support/sql/q3sqlrecordinfo.qdoc (renamed from doc/src/classes/q3sqlrecordinfo.qdoc)0
-rw-r--r--src/qt3support/tools/q3asciicache.qdoc (renamed from doc/src/classes/q3asciicache.qdoc)0
-rw-r--r--src/qt3support/tools/q3asciidict.qdoc (renamed from doc/src/classes/q3asciidict.qdoc)0
-rw-r--r--src/qt3support/tools/q3cache.qdoc (renamed from doc/src/classes/q3cache.qdoc)0
-rw-r--r--src/qt3support/tools/q3dict.qdoc (renamed from doc/src/classes/q3dict.qdoc)0
-rw-r--r--src/qt3support/tools/q3intcache.qdoc (renamed from doc/src/classes/q3intcache.qdoc)0
-rw-r--r--src/qt3support/tools/q3intdict.qdoc (renamed from doc/src/classes/q3intdict.qdoc)0
-rw-r--r--src/qt3support/tools/q3memarray.qdoc (renamed from doc/src/classes/q3memarray.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrdict.qdoc (renamed from doc/src/classes/q3ptrdict.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrlist.qdoc (renamed from doc/src/classes/q3ptrlist.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrqueue.qdoc (renamed from doc/src/classes/q3ptrqueue.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrstack.qdoc (renamed from doc/src/classes/q3ptrstack.qdoc)0
-rw-r--r--src/qt3support/tools/q3ptrvector.qdoc (renamed from doc/src/classes/q3ptrvector.qdoc)0
-rw-r--r--src/qt3support/tools/q3valuelist.qdoc (renamed from doc/src/classes/q3valuelist.qdoc)0
-rw-r--r--src/qt3support/tools/q3valuestack.qdoc (renamed from doc/src/classes/q3valuestack.qdoc)0
-rw-r--r--src/qt3support/tools/q3valuevector.qdoc (renamed from doc/src/classes/q3valuevector.qdoc)0
-rw-r--r--src/qt3support/widgets/q3popupmenu.cpp37
-rw-r--r--src/script/qscriptable.cpp2
-rw-r--r--src/script/qscriptclass.cpp2
-rw-r--r--src/script/qscriptcontext.cpp2
-rw-r--r--src/script/qscriptcontextinfo.cpp2
-rw-r--r--src/script/qscriptengine.cpp8
-rw-r--r--src/script/qscriptengineagent.cpp2
-rw-r--r--src/script/qscriptstring.cpp2
-rw-r--r--src/script/qscriptvalue.cpp2
-rw-r--r--src/script/qscriptvalueiterator.cpp2
-rw-r--r--src/scripttools/debugging/qscriptdebugger.cpp4
-rw-r--r--src/scripttools/debugging/qscriptenginedebugger.cpp4
-rw-r--r--src/sql/kernel/qsql.qdoc (renamed from doc/src/qsql.qdoc)2
-rw-r--r--src/sql/kernel/qsqldatabase.cpp2
-rw-r--r--src/sql/kernel/qsqlquery.cpp2
-rw-r--r--src/svg/qgraphicssvgitem.cpp1
-rw-r--r--src/svg/qsvggenerator.cpp2
-rw-r--r--src/svg/qsvgrenderer.cpp2
-rw-r--r--src/svg/qsvgstyle.cpp4
-rw-r--r--src/svg/qsvgtinydocument.cpp10
-rw-r--r--src/svg/qsvgwidget.cpp2
-rw-r--r--src/testlib/qsignalspy.qdoc (renamed from doc/src/classes/qsignalspy.qdoc)0
-rw-r--r--src/testlib/qtestcase.cpp9
-rw-r--r--src/testlib/qtestevent.h5
-rw-r--r--src/testlib/qtestevent.qdoc (renamed from doc/src/classes/qtestevent.qdoc)0
-rw-r--r--src/testlib/qtestkeyboard.h2
-rw-r--r--src/testlib/qtestmouse.h2
-rw-r--r--src/tools/bootstrap/bootstrap.pro2
-rw-r--r--src/xml/dom/qdom.cpp4
-rw-r--r--src/xml/sax/qxml.cpp2
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel.cpp3
-rw-r--r--src/xmlpatterns/api/qxmlquery.cpp4
-rw-r--r--src/xmlpatterns/utils/qautoptr.cpp2
-rw-r--r--tests/auto/auto.pro25
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/finddialog.cpp108
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.ts.result8
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/finddialog.cpp137
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.ts.result8
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.before6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.result6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergeui/project.ui40
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result22
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parseui/project.ts.result4
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parseui/project.ui40
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/bar.ts.result8
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/foo.ts.result12
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/project.ui40
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp139
-rw-r--r--tests/auto/math3d/math3d.pro2
-rw-r--r--tests/auto/math3d/qmatrixnxn/qmatrixnxn.pro5
-rw-r--r--tests/auto/math3d/qquaternion/qquaternion.pro5
-rw-r--r--tests/auto/math3d/qvectornd/qvectornd.pro5
-rw-r--r--tests/auto/math3d/shared/math3dincludes.h52
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp26
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp12
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_1.tiffbin0 -> 7740 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_2.tiffbin0 -> 9570 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_3.tiffbin0 -> 11392 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_4.tiffbin0 -> 11392 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_5.tiffbin0 -> 11392 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_6.tiffbin0 -> 11392 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_7.tiffbin0 -> 11392 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_8.tiffbin0 -> 11392 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/mono_orientation_1.tiffbin0 -> 2382 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/mono_orientation_2.tiffbin0 -> 1608 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/mono_orientation_3.tiffbin0 -> 1608 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/mono_orientation_4.tiffbin0 -> 1608 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/mono_orientation_5.tiffbin0 -> 1608 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/mono_orientation_6.tiffbin0 -> 1608 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/mono_orientation_7.tiffbin0 -> 1608 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/mono_orientation_8.tiffbin0 -> 1608 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/original_indexed.tiffbin0 -> 5922 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/original_mono.tiffbin0 -> 786 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/original_rgb.tiffbin0 -> 12608 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_1.tiffbin0 -> 15560 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_2.tiffbin0 -> 17972 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_3.tiffbin0 -> 17324 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_4.tiffbin0 -> 17324 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_5.tiffbin0 -> 17648 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_6.tiffbin0 -> 17324 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_7.tiffbin0 -> 17324 bytes
-rw-r--r--tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_8.tiffbin0 -> 17324 bytes
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp45
-rw-r--r--tests/auto/qmatrixnxn/qmatrixnxn.pro2
-rw-r--r--tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp (renamed from tests/auto/math3d/qmatrixnxn/tst_qmatrixnxn.cpp)2
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp1
-rw-r--r--tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp54
-rw-r--r--tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp28
-rw-r--r--tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp28
-rw-r--r--tests/auto/qquaternion/qquaternion.pro2
-rw-r--r--tests/auto/qquaternion/tst_qquaternion.cpp (renamed from tests/auto/math3d/qquaternion/tst_qquaternion.cpp)2
-rw-r--r--tests/auto/qsharedpointer/tst_qsharedpointer.cpp37
-rw-r--r--tests/auto/qtableview/tst_qtableview.cpp1
-rw-r--r--tests/auto/qtoolbutton/tst_qtoolbutton.cpp6
-rw-r--r--tests/auto/qurl/tst_qurl.cpp4
-rw-r--r--tests/auto/qvectornd/qvectornd.pro2
-rw-r--r--tests/auto/qvectornd/tst_qvectornd.cpp (renamed from tests/auto/math3d/qvectornd/tst_qvectornd.cpp)4
-rw-r--r--tests/auto/qxmlstream/tst_qxmlstream.cpp70
-rw-r--r--tests/auto/symbols/tst_symbols.cpp10
-rw-r--r--tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui.h4
-rw-r--r--tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui.h4
-rw-r--r--tests/auto/uic/baseline/Dialog_without_Buttons.ui.h4
-rw-r--r--tests/auto/uic/baseline/Main_Window.ui.h4
-rw-r--r--tests/auto/uic/baseline/Widget.ui.h4
-rw-r--r--tests/auto/uic/baseline/addlinkdialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/addtorrentform.ui.h4
-rw-r--r--tests/auto/uic/baseline/authenticationdialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/backside.ui.h4
-rw-r--r--tests/auto/uic/baseline/batchtranslation.ui.h10
-rw-r--r--tests/auto/uic/baseline/bookmarkdialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/bookwindow.ui.h4
-rw-r--r--tests/auto/uic/baseline/browserwidget.ui.h4
-rw-r--r--tests/auto/uic/baseline/calculator.ui.h4
-rw-r--r--tests/auto/uic/baseline/calculatorform.ui.h4
-rw-r--r--tests/auto/uic/baseline/certificateinfo.ui.h4
-rw-r--r--tests/auto/uic/baseline/chatdialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/chatmainwindow.ui.h4
-rw-r--r--tests/auto/uic/baseline/chatsetnickname.ui.h4
-rw-r--r--tests/auto/uic/baseline/config.ui.h10
-rw-r--r--tests/auto/uic/baseline/connectdialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/controller.ui.h4
-rw-r--r--tests/auto/uic/baseline/cookies.ui.h4
-rw-r--r--tests/auto/uic/baseline/cookiesexceptions.ui.h4
-rw-r--r--tests/auto/uic/baseline/default.ui.h4
-rw-r--r--tests/auto/uic/baseline/dialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/downloaditem.ui.h4
-rw-r--r--tests/auto/uic/baseline/downloads.ui.h4
-rw-r--r--tests/auto/uic/baseline/embeddeddialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/filespage.ui.h4
-rw-r--r--tests/auto/uic/baseline/filternamedialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/filterpage.ui.h4
-rw-r--r--tests/auto/uic/baseline/finddialog.ui.h10
-rw-r--r--tests/auto/uic/baseline/form.ui.h4
-rw-r--r--tests/auto/uic/baseline/formwindowsettings.ui.h10
-rw-r--r--tests/auto/uic/baseline/generalpage.ui.h4
-rw-r--r--tests/auto/uic/baseline/gridpanel.ui.h4
-rw-r--r--tests/auto/uic/baseline/helpdialog.ui.h10
-rw-r--r--tests/auto/uic/baseline/history.ui.h4
-rw-r--r--tests/auto/uic/baseline/identifierpage.ui.h4
-rw-r--r--tests/auto/uic/baseline/imagedialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/inputpage.ui.h4
-rw-r--r--tests/auto/uic/baseline/installdialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/languagesdialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/listwidgeteditor.ui.h10
-rw-r--r--tests/auto/uic/baseline/mainwindow.ui.h4
-rw-r--r--tests/auto/uic/baseline/mainwindowbase.ui.h10
-rw-r--r--tests/auto/uic/baseline/mydialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/myform.ui.h4
-rw-r--r--tests/auto/uic/baseline/newactiondialog.ui.h10
-rw-r--r--tests/auto/uic/baseline/newdynamicpropertydialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/newform.ui.h10
-rw-r--r--tests/auto/uic/baseline/orderdialog.ui.h10
-rw-r--r--tests/auto/uic/baseline/outputpage.ui.h4
-rw-r--r--tests/auto/uic/baseline/pagefold.ui.h4
-rw-r--r--tests/auto/uic/baseline/paletteeditor.ui.h10
-rw-r--r--tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h10
-rw-r--r--tests/auto/uic/baseline/passworddialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/pathpage.ui.h4
-rw-r--r--tests/auto/uic/baseline/phrasebookbox.ui.h10
-rw-r--r--tests/auto/uic/baseline/plugindialog.ui.h10
-rw-r--r--tests/auto/uic/baseline/preferencesdialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/previewconfigurationwidget.ui.h4
-rw-r--r--tests/auto/uic/baseline/previewdialogbase.ui.h4
-rw-r--r--tests/auto/uic/baseline/previewwidget.ui.h10
-rw-r--r--tests/auto/uic/baseline/previewwidgetbase.ui.h10
-rw-r--r--tests/auto/uic/baseline/proxy.ui.h4
-rw-r--r--tests/auto/uic/baseline/qfiledialog.ui.h12
-rw-r--r--tests/auto/uic/baseline/qpagesetupwidget.ui.h4
-rw-r--r--tests/auto/uic/baseline/qprintpropertieswidget.ui.h4
-rw-r--r--tests/auto/uic/baseline/qprintsettingsoutput.ui.h4
-rw-r--r--tests/auto/uic/baseline/qprintwidget.ui.h4
-rw-r--r--tests/auto/uic/baseline/qsqlconnectiondialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/qtgradientdialog.ui.h10
-rw-r--r--tests/auto/uic/baseline/qtgradienteditor.ui.h69
-rw-r--r--tests/auto/uic/baseline/qtgradientview.ui.h4
-rw-r--r--tests/auto/uic/baseline/qtgradientviewdialog.ui.h10
-rw-r--r--tests/auto/uic/baseline/qtresourceeditordialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/qttoolbardialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/querywidget.ui.h4
-rw-r--r--tests/auto/uic/baseline/remotecontrol.ui.h4
-rw-r--r--tests/auto/uic/baseline/saveformastemplate.ui.h10
-rw-r--r--tests/auto/uic/baseline/settings.ui.h4
-rw-r--r--tests/auto/uic/baseline/signalslotdialog.ui.h4
-rw-r--r--tests/auto/uic/baseline/sslclient.ui.h4
-rw-r--r--tests/auto/uic/baseline/sslerrors.ui.h4
-rw-r--r--tests/auto/uic/baseline/statistics.ui.h10
-rw-r--r--tests/auto/uic/baseline/stringlisteditor.ui.h10
-rw-r--r--tests/auto/uic/baseline/stylesheeteditor.ui.h4
-rw-r--r--tests/auto/uic/baseline/tabbedbrowser.ui.h10
-rw-r--r--tests/auto/uic/baseline/tablewidgeteditor.ui.h10
-rw-r--r--tests/auto/uic/baseline/tetrixwindow.ui.h4
-rw-r--r--tests/auto/uic/baseline/textfinder.ui.h4
-rw-r--r--tests/auto/uic/baseline/topicchooser.ui.h4
-rw-r--r--tests/auto/uic/baseline/translatedialog.ui.h10
-rw-r--r--tests/auto/uic/baseline/translationsettings.ui.h4
-rw-r--r--tests/auto/uic/baseline/treewidgeteditor.ui.h10
-rw-r--r--tests/auto/uic/baseline/trpreviewtool.ui.h10
-rw-r--r--tests/auto/uic/baseline/validators.ui.h4
-rw-r--r--tests/auto/uic/baseline/wateringconfigdialog.ui.h4
-rw-r--r--tests/auto/utf8/tst_utf8.cpp11
-rw-r--r--tools/assistant/compat/lib/qassistantclient.cpp1
-rw-r--r--tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp78
-rw-r--r--tools/assistant/lib/qhelpsearchindexwriter_clucene_p.h2
-rw-r--r--tools/configure/configure.pro2
-rw-r--r--tools/designer/src/lib/sdk/abstractdnditem.qdoc112
-rw-r--r--tools/designer/src/lib/sdk/abstracticoncache.qdoc130
-rw-r--r--tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc94
-rw-r--r--tools/designer/src/lib/sdk/layoutdecoration.qdoc163
-rw-r--r--tools/designer/src/lib/sdk/membersheet.qdoc263
-rw-r--r--tools/designer/src/lib/sdk/propertysheet.qdoc302
-rw-r--r--tools/designer/src/lib/sdk/taskmenu.qdoc152
-rw-r--r--tools/designer/src/lib/uilib/container.qdoc186
-rw-r--r--tools/designer/src/lib/uilib/customwidget.qdoc309
-rw-r--r--tools/linguist/lupdate/cpp.cpp240
-rw-r--r--tools/qdoc3/cppcodeparser.cpp4
-rw-r--r--tools/qdoc3/node.h6
-rw-r--r--tools/qdoc3/test/classic.css21
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf48
-rw-r--r--tools/qdoc3/tree.cpp2
-rw-r--r--tools/qtestlib/wince/cetest/bootstrapped.pri2
-rw-r--r--translations/qt_ar.ts3
801 files changed, 11783 insertions, 10151 deletions
diff --git a/FAQ.txt b/FAQ.txt
deleted file mode 100644
index 1d2266d..0000000
--- a/FAQ.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-This is a list of Frequently Asked Questions regarding this Qt release.
-
-Q: I'm using a Unix system and I downloaded the Zip package. However, when I try
-to run the configure script, I get the following error message:
-"bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory"
-A: The problem here is converting files from Windows style line endings (CRLF)
-to Unix style line endings (LF). To avoid this problem, uncompress the file
-again and give the option "-a" to unzip, which will then add the correct line
-endings.
-
-Q: I'm running Windows XP and I downloaded the qt-win-eval-%VERSION%-vs2008.exe
-version of Qt. However, when I try to run the examples I get an error saying:
-"The application failed to start because the application configuration is
-incorrect. Reinstalling the application may fix this problem.". I reinstalled
-the package but the error persists. What am I doing wrong?
-A: The problem is an incorrect version of the CRT. Visual studio requires CRT90
-while Windows XP comes with CRT80. To solve this problem, please install the
-2008 CRT redistributable package from Microsoft.
diff --git a/demos/browser/data/defaultbookmarks.xbel b/demos/browser/data/defaultbookmarks.xbel
index 1d20ac0..dce5297 100644
--- a/demos/browser/data/defaultbookmarks.xbel
+++ b/demos/browser/data/defaultbookmarks.xbel
@@ -30,6 +30,9 @@
<bookmark href="http://xkcd.com/">
<title>xkcd</title>
</bookmark>
+ <bookmark href="http://twitter.com/qtbynokia">
+ <title>Twitter</title>
+ </bookmark>
</folder>
<folder folded="yes">
<title>Bookmarks Menu</title>
diff --git a/demos/browser/xbel.cpp b/demos/browser/xbel.cpp
index ed62868..66b49a4 100644
--- a/demos/browser/xbel.cpp
+++ b/demos/browser/xbel.cpp
@@ -133,16 +133,13 @@ BookmarkNode *XbelReader::read(QIODevice *device)
{
BookmarkNode *root = new BookmarkNode(BookmarkNode::Root);
setDevice(device);
- while (!atEnd()) {
- readNext();
- if (isStartElement()) {
- QString version = attributes().value(QLatin1String("version")).toString();
- if (name() == QLatin1String("xbel")
- && (version.isEmpty() || version == QLatin1String("1.0"))) {
- readXBEL(root);
- } else {
- raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
- }
+ if (readNextStartElement()) {
+ QString version = attributes().value(QLatin1String("version")).toString();
+ if (name() == QLatin1String("xbel")
+ && (version.isEmpty() || version == QLatin1String("1.0"))) {
+ readXBEL(root);
+ } else {
+ raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
}
}
return root;
@@ -152,21 +149,15 @@ void XbelReader::readXBEL(BookmarkNode *parent)
{
Q_ASSERT(isStartElement() && name() == QLatin1String("xbel"));
- while (!atEnd()) {
- readNext();
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == QLatin1String("folder"))
- readFolder(parent);
- else if (name() == QLatin1String("bookmark"))
- readBookmarkNode(parent);
- else if (name() == QLatin1String("separator"))
- readSeparator(parent);
- else
- skipUnknownElement();
- }
+ while (readNextStartElement()) {
+ if (name() == QLatin1String("folder"))
+ readFolder(parent);
+ else if (name() == QLatin1String("bookmark"))
+ readBookmarkNode(parent);
+ else if (name() == QLatin1String("separator"))
+ readSeparator(parent);
+ else
+ skipCurrentElement();
}
}
@@ -177,26 +168,19 @@ void XbelReader::readFolder(BookmarkNode *parent)
BookmarkNode *folder = new BookmarkNode(BookmarkNode::Folder, parent);
folder->expanded = (attributes().value(QLatin1String("folded")) == QLatin1String("no"));
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == QLatin1String("title"))
- readTitle(folder);
- else if (name() == QLatin1String("desc"))
- readDescription(folder);
- else if (name() == QLatin1String("folder"))
- readFolder(folder);
- else if (name() == QLatin1String("bookmark"))
- readBookmarkNode(folder);
- else if (name() == QLatin1String("separator"))
- readSeparator(folder);
- else
- skipUnknownElement();
- }
+ while (readNextStartElement()) {
+ if (name() == QLatin1String("title"))
+ readTitle(folder);
+ else if (name() == QLatin1String("desc"))
+ readDescription(folder);
+ else if (name() == QLatin1String("folder"))
+ readFolder(folder);
+ else if (name() == QLatin1String("bookmark"))
+ readBookmarkNode(folder);
+ else if (name() == QLatin1String("separator"))
+ readSeparator(folder);
+ else
+ skipCurrentElement();
}
}
@@ -224,39 +208,18 @@ void XbelReader::readBookmarkNode(BookmarkNode *parent)
Q_ASSERT(isStartElement() && name() == QLatin1String("bookmark"));
BookmarkNode *bookmark = new BookmarkNode(BookmarkNode::Bookmark, parent);
bookmark->url = attributes().value(QLatin1String("href")).toString();
- while (!atEnd()) {
- readNext();
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == QLatin1String("title"))
- readTitle(bookmark);
- else if (name() == QLatin1String("desc"))
- readDescription(bookmark);
- else
- skipUnknownElement();
- }
+ while (readNextStartElement()) {
+ if (name() == QLatin1String("title"))
+ readTitle(bookmark);
+ else if (name() == QLatin1String("desc"))
+ readDescription(bookmark);
+ else
+ skipCurrentElement();
}
if (bookmark->title.isEmpty())
bookmark->title = QObject::tr("Unknown title");
}
-void XbelReader::skipUnknownElement()
-{
- Q_ASSERT(isStartElement());
-
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement())
- skipUnknownElement();
- }
-}
-
XbelWriter::XbelWriter()
{
diff --git a/demos/browser/xbel.h b/demos/browser/xbel.h
index 2bdffe1..ec9008e 100644
--- a/demos/browser/xbel.h
+++ b/demos/browser/xbel.h
@@ -87,7 +87,6 @@ public:
BookmarkNode *read(QIODevice *device);
private:
- void skipUnknownElement();
void readXBEL(BookmarkNode *parent);
void readTitle(BookmarkNode *parent);
void readDescription(BookmarkNode *parent);
diff --git a/doc/src/bughowto.qdoc b/doc/src/bughowto.qdoc
index b6520f3..645154b 100644
--- a/doc/src/bughowto.qdoc
+++ b/doc/src/bughowto.qdoc
@@ -43,7 +43,6 @@
\page bughowto.html
\title How to Report a Bug
\brief Information about ways to report bugs in Qt.
- \ingroup howto
If you think you have found a bug in Qt, we would like to hear
about it so that we can fix it.
diff --git a/doc/src/classes.qdoc b/doc/src/classes.qdoc
index d9a0ae9..864445f 100644
--- a/doc/src/classes.qdoc
+++ b/doc/src/classes.qdoc
@@ -40,6 +40,18 @@
****************************************************************************/
/*!
+ \group classlists
+ \title Class and Function Indexes
+ \brief Collections of classes and functions grouped together into lists.
+
+ The following documents contain collections of classes, grouped by
+ subject area or related to particular functionality, or comprehensive
+ lists of classes and functions.
+
+ \generatelist{related}
+*/
+
+/*!
\group groups
\title Grouped Classes
\ingroup classlists
@@ -56,11 +68,9 @@
\title Qt's Classes
\ingroup classlists
- This is a list of all Qt classes. For a shorter list of the most
- frequently used Qt classes, see \l{Qt's Main Classes}. For a list
- of the classes provided for compatibility with Qt3, see \l{Qt 3
- compatibility classes}. For classes that have been deprecated, see
- the \l{Obsolete Classes} list.
+ This is a list of all Qt classes. For a list of the classes provided
+ for compatibility with Qt3, see \l{Qt 3 compatibility classes}. For
+ classes that have been deprecated, see the \l{Obsolete Classes} list.
\generatelist classes
@@ -128,17 +138,6 @@
*/
/*!
- \page mainclasses.html
- \title Qt's Main Classes
- \ingroup classlists
-
- These are the most frequently used Qt classes. For the complete
- list see \link classes.html Qt's Classes \endlink.
-
- \generatelist mainclasses
-*/
-
-/*!
\page compatclasses.html
\title Qt 3 Compatibility Classes
\ingroup classlists
diff --git a/doc/src/exportedfunctions.qdoc b/doc/src/classes/exportedfunctions.qdoc
index c51ace4..c51ace4 100644
--- a/doc/src/exportedfunctions.qdoc
+++ b/doc/src/classes/exportedfunctions.qdoc
diff --git a/doc/src/qtassistant.qdoc b/doc/src/classes/phonon-namespace.qdoc
index 9e52ccf..8007ddf 100644
--- a/doc/src/qtassistant.qdoc
+++ b/doc/src/classes/phonon-namespace.qdoc
@@ -40,15 +40,15 @@
****************************************************************************/
/*!
- \module QtAssistant
- \title QtAssistant Module
- \contentspage Qt's Modules
- \previouspage QtHelp
- \nextpage QtTest
- \ingroup modules
+ \namespace Phonon
+ \brief The Phonon namespace contains classes and functions for multimedia applications.
+ \since 4.4
- \brief The QtAssistant module provides a means of launching \QA
- to provide online help.
+ This namespace contains classes to access multimedia functions for
+ audio and video playback. Those classes are not dependent on any specific
+ framework, but rather use exchangeable backends to do the work.
- \sa {Qt Assistant Manual}
+ See the \l{Phonon Module} page for general information about the
+ framework and the \l{Phonon Overview} for an introductory tour of its
+ features.
*/
diff --git a/doc/src/classes/qtdesigner-api.qdoc b/doc/src/classes/qtdesigner-api.qdoc
deleted file mode 100644
index 60dd9f8..0000000
--- a/doc/src/classes/qtdesigner-api.qdoc
+++ /dev/null
@@ -1,1413 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QDesignerMemberSheetExtension
-
- \brief The QDesignerMemberSheetExtension class allows you to
- manipulate a widget's member functions which is displayed when
- configuring connections using Qt Designer's mode for editing
- signals and slots.
-
- \inmodule QtDesigner
-
- QDesignerMemberSheetExtension is a collection of functions that is
- typically used to query a widget's member functions, and to
- manipulate the member functions' appearance in \QD's signals and
- slots editing mode. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 2
-
- When implementing a custom widget plugin, a pointer to \QD's
- current QDesignerFormEditorInterface object (\c formEditor in the
- example above) is provided by the
- QDesignerCustomWidgetInterface::initialize() function's parameter.
-
- The member sheet (and any other extension), can be retrieved by
- querying \QD's extension manager using the qt_extension()
- function. When you want to release the extension, you only need to
- delete the pointer.
-
- All widgets have a default member sheet used in \QD's signals and
- slots editing mode with the widget's member functions. But
- QDesignerMemberSheetExtension also provides an interface for
- creating custom member sheet extensions.
-
- \warning \QD uses the QDesignerMemberSheetExtension to facilitate
- the signal and slot editing mode. Whenever a connection between
- two widgets is requested, \QD will query for the widgets' member
- sheet extensions. If a widget has an implemented member sheet
- extension, this extension will override the default member sheet.
-
- To create a member sheet extension, your extension class must
- inherit from both QObject and QDesignerMemberSheetExtension. Then,
- since we are implementing an interface, we must ensure that it's
- made known to the meta object system using the Q_INTERFACES()
- macro:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 3
-
- This enables \QD to use qobject_cast() to query for
- supported interfaces using nothing but a QObject pointer.
-
- In \QD the extensions are not created until they are
- required. For that reason, when implementing a member sheet
- extension, you must also create a QExtensionFactory, i.e a class
- that is able to make an instance of your extension, and register
- it using \QD's \l {QExtensionManager}{extension manager}.
-
- When a widget's member sheet extension is required, \QD's \l
- {QExtensionManager}{extension manager} will run through all its
- registered factories calling QExtensionFactory::createExtension()
- for each until the first one that is able to create a member sheet
- extension for that widget, is found. This factory will then make
- an instance of the extension. If no such factory is found, \QD
- will use the default member sheet.
-
- There are four available types of extensions in \QD:
- QDesignerContainerExtension, QDesignerMemberSheetExtension,
- QDesignerPropertySheetExtension and
- QDesignerTaskMenuExtension. \QD's behavior is the same whether the
- requested extension is associated with a multi page container, a
- member sheet, a property sheet or a task menu.
-
- The QExtensionFactory class provides a standard extension
- factory, and can also be used as an interface for custom
- extension factories. You can either create a new
- QExtensionFactory and reimplement the
- QExtensionFactory::createExtension() function. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 4
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a member sheet extension as well. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 5
-
- For a complete example using an extension class, see \l
- {designer/taskmenuextension}{Task Menu Extension example}. The
- example shows how to create a custom widget plugin for Qt
- Designer, and how to to use the QDesignerTaskMenuExtension class
- to add custom items to \QD's task menu.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerMemberSheetExtension::~QDesignerMemberSheetExtension()
-
- Destroys the member sheet extension.
-*/
-
-/*!
- \fn int QDesignerMemberSheetExtension::count() const
-
- Returns the extension's number of member functions.
-*/
-
-/*!
- \fn int QDesignerMemberSheetExtension::indexOf(const QString &name) const
-
- Returns the index of the member function specified by the given \a
- name.
-
- \sa memberName()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::memberName(int index) const
-
- Returns the name of the member function with the given \a index.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::memberGroup(int index) const
-
- Returns the name of the member group specified for the function
- with the given \a index.
-
- \sa indexOf(), setMemberGroup()
-*/
-
-/*!
- \fn void QDesignerMemberSheetExtension::setMemberGroup(int index, const QString &group)
-
- Sets the member group of the member function with the given \a
- index, to \a group.
-
- \sa indexOf(), memberGroup()
-*/
-
-/*!
- \fn bool QDesignerMemberSheetExtension::isVisible(int index) const
-
- Returns true if the member function with the given \a index is
- visible in \QD's signal and slot editor, otherwise false.
-
- \sa indexOf(), setVisible()
-*/
-
-/*!
- \fn void QDesignerMemberSheetExtension::setVisible(int index, bool visible)
-
- If \a visible is true, the member function with the given \a index
- is visible in \QD's signals and slots editing mode; otherwise the
- member function is hidden.
-
- \sa indexOf(), isVisible()
-*/
-
-/*!
- \fn virtual bool QDesignerMemberSheetExtension::isSignal(int index) const
-
- Returns true if the member function with the given \a index is a
- signal, otherwise false.
-
- \sa indexOf()
-*/
-
-/*!
- \fn bool QDesignerMemberSheetExtension::isSlot(int index) const
-
- Returns true if the member function with the given \a index is a
- slot, otherwise false.
-
- \sa indexOf()
-*/
-
-/*!
- \fn bool QDesignerMemberSheetExtension::inheritedFromWidget(int index) const
-
- Returns true if the member function with the given \a index is
- inherited from QWidget, otherwise false.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::declaredInClass(int index) const
-
- Returns the name of the class in which the member function with
- the given \a index is declared.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::signature(int index) const
-
- Returns the signature of the member function with the given \a
- index.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QList<QByteArray> QDesignerMemberSheetExtension::parameterTypes(int index) const
-
- Returns the parameter types of the member function with the given
- \a index, as a QByteArray list.
-
- \sa indexOf(), parameterNames()
-*/
-
-/*!
- \fn QList<QByteArray> QDesignerMemberSheetExtension::parameterNames(int index) const
-
- Returns the parameter names of the member function with the given
- \a index, as a QByteArray list.
-
- \sa indexOf(), parameterTypes()
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerLayoutDecorationExtension
- \brief The QDesignerLayoutDecorationExtension class provides an extension to a layout in \QD.
- \inmodule QtDesigner
- \internal
-*/
-
-/*!
- \enum QDesignerLayoutDecorationExtension::InsertMode
-
- This enum describes the modes that are used to insert items into a layout.
-
- \value InsertWidgetMode Widgets are inserted into empty cells in a layout.
- \value InsertRowMode Whole rows are inserted into a vertical or grid layout.
- \value InsertColumnMode Whole columns are inserted into a horizontal or grid layout.
-*/
-
-/*!
- \fn virtual QDesignerLayoutDecorationExtension::~QDesignerLayoutDecorationExtension()
-
- Destroys the extension.
-*/
-
-/*!
- \fn virtual QList<QWidget*> QDesignerLayoutDecorationExtension::widgets(QLayout *layout) const
-
- Returns the widgets that are managed by the given \a layout.
-
- \sa insertWidget(), removeWidget()
-*/
-
-/*!
- \fn QRect QDesignerLayoutDecorationExtension::itemInfo(int index) const
-
- Returns the rectangle covered by the item at the given \a index in the layout.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::indexOf(QWidget *widget) const
-
- Returns the index of the specified \a widget in the layout.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::indexOf(QLayoutItem *item) const
-
- Returns the index of the specified layout \a item.
-*/
-
-/*!
- \fn QDesignerLayoutDecorationExtension::InsertMode QDesignerLayoutDecorationExtension::currentInsertMode() const
-
- Returns the current insertion mode.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::currentIndex() const
-
- Returns the current index in the layout.
-*/
-
-/*!
- \fn QPair<int, int> QDesignerLayoutDecorationExtension::currentCell() const
-
- Returns a pair containing the row and column of the current cell in the layout.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::insertWidget(QWidget *widget, const QPair<int, int> &cell)
-
- Inserts the given \a widget into the specified \a cell in the layout.
-
- \sa removeWidget()
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::removeWidget(QWidget *widget)
-
- Removes the specified \a widget from the layout.
-
- \sa insertWidget()
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::insertRow(int row)
-
- Inserts a new row into the form at the position specified by \a row.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::insertColumn(int column)
-
- Inserts a new column into the form at the position specified by \a column.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::simplify()
-
- Simplifies the layout by removing unnecessary empty rows and columns, and by changing the
- number of rows or columns spanned by widgets.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::findItemAt(const QPoint &position) const
-
- Returns the index of the item in the layout that covers the given \a position.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::findItemAt(int row, int column) const
-
- Returns the item in the layout that occupies the specified \a row and \a column in the layout.
-
- Currently, this only applies to grid layouts.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::adjustIndicator(const QPoint &position, int index)
-
- Adjusts the indicator for the item specified by \a index so that
- it lies at the given \a position on the form.
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerContainerExtension
- \brief The QDesignerContainerExtension class allows you to add pages to
- a custom multi-page container in Qt Designer's workspace.
- \inmodule QtDesigner
-
- QDesignerContainerExtension provide an interface for creating
- custom container extensions. A container extension consists of a
- collection of functions that \QD needs to manage a multi-page
- container plugin, and a list of the container's pages.
-
- \image containerextension-example.png
-
- \warning This is \e not an extension for container plugins in
- general, only custom \e multi-page containers.
-
- To create a container extension, your extension class must inherit
- from both QObject and QDesignerContainerExtension. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 6
-
- Since we are implementing an interface, we must ensure that it's
- made known to the meta object system using the Q_INTERFACES()
- macro. This enables \QD to use the qobject_cast() function to
- query for supported interfaces using nothing but a QObject
- pointer.
-
- You must reimplement several functions to enable \QD to manage a
- custom multi-page container widget: \QD uses count() to keep track
- of the number pages in your container, widget() to return the page
- at a given index in the list of the container's pages, and
- currentIndex() to return the list index of the selected page. \QD
- uses the addWidget() function to add a given page to the
- container, expecting it to be appended to the list of pages, while
- it expects the insertWidget() function to add a given page to the
- container by inserting it at a given index.
-
- In \QD the extensions are not created until they are
- required. For that reason you must also create a
- QExtensionFactory, i.e a class that is able to make an instance of
- your extension, and register it using \QD's \l
- {QExtensionManager}{extension manager}.
-
- When a container extension is required, \QD's \l
- {QExtensionManager}{extension manager} will run through all its
- registered factories calling QExtensionFactory::createExtension()
- for each until the first one that is able to create a container
- extension, is found. This factory will then create the extension
- for the plugin.
-
- There are four available types of extensions in \QD:
- QDesignerContainerExtension , QDesignerMemberSheetExtension,
- QDesignerPropertySheetExtension and QDesignerTaskMenuExtension.
- \QD's behavior is the same whether the requested extension is
- associated with a multi page container, a member sheet, a property
- sheet or a task menu.
-
- The QExtensionFactory class provides a standard extension factory,
- and can also be used as an interface for custom extension
- factories. You can either create a new QExtensionFactory and
- reimplement the QExtensionFactory::createExtension() function. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 7
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a container extension as well. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 8
-
- For a complete example using the QDesignerContainerExtension
- class, see the \l {designer/containerextension}{Container
- Extension example}. The example shows how to create a custom
- multi-page plugin for \QD.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerContainerExtension::~QDesignerContainerExtension()
-
- Destroys the extension.
-*/
-
-/*!
- \fn int QDesignerContainerExtension::count() const
-
- Returns the number of pages in the container.
-*/
-
-/*!
- \fn QWidget *QDesignerContainerExtension::widget(int index) const
-
- Returns the page at the given \a index in the extension's list of
- pages.
-
- \sa addWidget(), insertWidget()
-*/
-
-/*!
- \fn int QDesignerContainerExtension::currentIndex() const
-
- Returns the index of the currently selected page in the
- container.
-
- \sa setCurrentIndex()
-*/
-
-/*!
- \fn void QDesignerContainerExtension::setCurrentIndex(int index)
-
- Sets the currently selected page in the container to be the
- page at the given \a index in the extension's list of pages.
-
- \sa currentIndex()
-*/
-
-/*!
- \fn void QDesignerContainerExtension::addWidget(QWidget *page)
-
- Adds the given \a page to the container by appending it to the
- extension's list of pages.
-
- \sa insertWidget(), remove(), widget()
-*/
-
-/*!
- \fn void QDesignerContainerExtension::insertWidget(int index, QWidget *page)
-
- Adds the given \a page to the container by inserting it at the
- given \a index in the extension's list of pages.
-
- \sa addWidget(), remove(), widget()
-*/
-
-/*!
- \fn void QDesignerContainerExtension::remove(int index)
-
- Removes the page at the given \a index from the extension's list
- of pages.
-
- \sa addWidget(), insertWidget()
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerTaskMenuExtension
- \brief The QDesignerTaskMenuExtension class allows you to add custom
- menu entries to Qt Designer's task menu.
- \inmodule QtDesigner
-
- QDesignerTaskMenuExtension provides an interface for creating
- custom task menu extensions. It is typically used to create task
- menu entries that are specific to a plugin in \QD.
-
- \QD uses the QDesignerTaskMenuExtension to feed its task
- menu. Whenever a task menu is requested, \QD will query
- for the selected widget's task menu extension.
-
- \image taskmenuextension-example-faded.png
-
- A task menu extension is a collection of QActions. The actions
- appear as entries in the task menu when the plugin with the
- specified extension is selected. The image above shows the custom
- \gui {Edit State...} action which appears in addition to \QD's
- default task menu entries: \gui Cut, \gui Copy, \gui Paste etc.
-
- To create a custom task menu extension, your extension class must
- inherit from both QObject and QDesignerTaskMenuExtension. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 9
-
- Since we are implementing an interface, we must ensure that it
- is made known to the meta-object system using the Q_INTERFACES()
- macro. This enables \QD to use the qobject_cast() function to
- query for supported interfaces using nothing but a QObject
- pointer.
-
- You must reimplement the taskActions() function to return a list
- of actions that will be included in \QD task menu. Optionally, you
- can reimplement the preferredEditAction() function to set the
- action that is invoked when selecting your plugin and pressing
- \key F2. The preferred edit action must be one of the actions
- returned by taskActions() and, if it's not defined, pressing the
- \key F2 key will simply be ignored.
-
- In \QD, extensions are not created until they are required. A
- task menu extension, for example, is created when you click the
- right mouse button over a widget in \QD's workspace. For that
- reason you must also construct an extension factory, using either
- QExtensionFactory or a subclass, and register it using \QD's
- \l {QExtensionManager}{extension manager}.
-
- When a task menu extension is required, \QD's \l
- {QExtensionManager}{extension manager} will run through all its
- registered factories calling QExtensionFactory::createExtension()
- for each until it finds one that is able to create a task menu
- extension for the selected widget. This factory will then make an
- instance of the extension.
-
- There are four available types of extensions in \QD:
- QDesignerContainerExtension, QDesignerMemberSheetExtension,
- QDesignerPropertySheetExtension, and QDesignerTaskMenuExtension.
- \QD's behavior is the same whether the requested extension is
- associated with a container, a member sheet, a property sheet or a
- task menu.
-
- The QExtensionFactory class provides a standard extension factory,
- and can also be used as an interface for custom extension
- factories. You can either create a new QExtensionFactory and
- reimplement the QExtensionFactory::createExtension() function. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 10
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a task menu extension as well. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 11
-
- For a complete example using the QDesignerTaskMenuExtension class,
- see the \l {designer/taskmenuextension}{Task Menu Extension
- example}. The example shows how to create a custom widget plugin
- for \QD, and how to to use the QDesignerTaskMenuExtension
- class to add custom items to \QD's task menu.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()
-
- Destroys the task menu extension.
-*/
-
-/*!
- \fn QAction *QDesignerTaskMenuExtension::preferredEditAction() const
-
- Returns the action that is invoked when selecting a plugin with
- the specified extension and pressing \key F2.
-
- The action must be one of the actions returned by taskActions().
-*/
-
-/*!
- \fn QList<QAction*> QDesignerTaskMenuExtension::taskActions() const
-
- Returns the task menu extension as a list of actions which will be
- included in \QD's task menu when a plugin with the specified
- extension is selected.
-
- The function must be reimplemented to add actions to the list.
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerCustomWidgetCollectionInterface
-
- \brief The QDesignerCustomWidgetCollectionInterface class allows
- you to include several custom widgets in one single library.
-
- \inmodule QtDesigner
-
- When implementing a custom widget plugin, you build it as a
- separate library. If you want to include several custom widget
- plugins in the same library, you must in addition subclass
- QDesignerCustomWidgetCollectionInterface.
-
- QDesignerCustomWidgetCollectionInterface contains one single
- function returning a list of the collection's
- QDesignerCustomWidgetInterface objects. For example, if you have
- several custom widgets \c CustomWidgetOne, \c CustomWidgetTwo and
- \c CustomWidgetThree, the class definition may look like this:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 12
-
- In the class constructor you add the interfaces to your custom
- widgets to the list which you return in the customWidgets()
- function:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 13
-
- Note that instead of exporting each custom widget plugin using the
- Q_EXPORT_PLUGIN2() macro, you export the entire collection. The
- Q_EXPORT_PLUGIN2() macro ensures that \QD can access and construct
- the custom widgets. Without this macro, there is no way for \QD to
- use them.
-
- \sa QDesignerCustomWidgetInterface, {Creating Custom Widgets for
- Qt Designer}
-*/
-
-/*!
- \fn QDesignerCustomWidgetCollectionInterface::~QDesignerCustomWidgetCollectionInterface() {
-
- Destroys the custom widget collection interface.
-*/
-
-/*!
- \fn QList<QDesignerCustomWidgetInterface*> QDesignerCustomWidgetCollectionInterface::customWidgets() const
-
- Returns a list of interfaces to the collection's custom widgets.
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerCustomWidgetInterface
-
- \brief The QDesignerCustomWidgetInterface class enables Qt Designer
- to access and construct custom widgets.
-
- \inmodule QtDesigner
-
- QDesignerCustomWidgetInterface provides a custom widget with an
- interface. The class contains a set of functions that must be subclassed
- to return basic information about the widget, such as its class name and
- the name of its header file. Other functions must be implemented to
- initialize the plugin when it is loaded, and to construct instances of
- the custom widget for \QD to use.
-
- When implementing a custom widget you must subclass
- QDesignerCustomWidgetInterface to expose your widget to \QD. For
- example, this is the declaration for the plugin used in the
- \l{Custom Widget Plugin Example}{Custom Widget Plugin example} that
- enables an analog clock custom widget to be used by \QD:
-
- \snippet examples/designer/customwidgetplugin/customwidgetplugin.h 0
-
- Note that the only part of the class definition that is specific
- to this particular custom widget is the class name. In addition,
- since we are implementing an interface, we must ensure that it's
- made known to the meta object system using the Q_INTERFACES()
- macro. This enables \QD to use the qobject_cast() function to
- query for supported interfaces using nothing but a QObject
- pointer.
-
- After \QD loads a custom widget plugin, it calls the interface's
- initialize() function to enable it to set up any resources that it
- may need. This function is called with a QDesignerFormEditorInterface
- parameter that provides the plugin with a gateway to all of \QD's API.
-
- \QD constructs instances of the custom widget by calling the plugin's
- createWidget() function with a suitable parent widget. Plugins must
- construct and return an instance of a custom widget with the specified
- parent widget.
-
- In the implementation of the class you must remember to export
- your custom widget plugin to \QD using the Q_EXPORT_PLUGIN2()
- macro. For example, if a library called \c libcustomwidgetplugin.so
- (on Unix) or \c libcustomwidget.dll (on Windows) contains a widget
- class called \c MyCustomWidget, we can export it by adding the
- following line to the file containing the plugin implementation:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 14
-
- This macro ensures that \QD can access and construct the custom widget.
- Without this macro, there is no way for \QD to use it.
-
- When implementing a custom widget plugin, you build it as a
- separate library. If you want to include several custom widget
- plugins in the same library, you must in addition subclass
- QDesignerCustomWidgetCollectionInterface.
-
- \warning If your custom widget plugin contains QVariant
- properties, be aware that only the following \l
- {QVariant::Type}{types} are supported:
-
- \list
- \o QVariant::ByteArray
- \o QVariant::Bool
- \o QVariant::Color
- \o QVariant::Cursor
- \o QVariant::Date
- \o QVariant::DateTime
- \o QVariant::Double
- \o QVariant::Int
- \o QVariant::Point
- \o QVariant::Rect
- \o QVariant::Size
- \o QVariant::SizePolicy
- \o QVariant::String
- \o QVariant::Time
- \o QVariant::UInt
- \endlist
-
- For a complete example using the QDesignerCustomWidgetInterface
- class, see the \l {designer/customwidgetplugin}{Custom Widget
- Example}. The example shows how to create a custom widget plugin
- for \QD.
-
- \sa QDesignerCustomWidgetCollectionInterface {Creating Custom
- Widgets for Qt Designer}
-*/
-
-/*!
- \fn QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface()
-
- Destroys the custom widget interface.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::name() const
-
- Returns the class name of the custom widget supplied by the interface.
-
- The name returned \e must be identical to the class name used for the
- custom widget.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::group() const
-
- Returns the name of the group to which the custom widget belongs.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::toolTip() const
-
- Returns a short description of the widget that can be used by \QD
- in a tool tip.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::whatsThis() const
-
- Returns a description of the widget that can be used by \QD in
- "What's This?" help for the widget.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::includeFile() const
-
- Returns the path to the include file that \l uic uses when
- creating code for the custom widget.
-*/
-
-/*!
- \fn QIcon QDesignerCustomWidgetInterface::icon() const
-
- Returns the icon used to represent the custom widget in \QD's
- widget box.
-*/
-
-/*!
- \fn bool QDesignerCustomWidgetInterface::isContainer() const
-
- Returns true if the custom widget is intended to be used as a
- container; otherwise returns false.
-
- Most custom widgets are not used to hold other widgets, so their
- implementations of this function will return false, but custom
- containers will return true to ensure that they behave correctly
- in \QD.
-*/
-
-/*!
- \fn QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)
-
- Returns a new instance of the custom widget, with the given \a
- parent.
-*/
-
-/*!
- \fn bool QDesignerCustomWidgetInterface::isInitialized() const
-
- Returns true if the widget has been initialized; otherwise returns
- false.
-
- \sa initialize()
-*/
-
-/*!
- \fn void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)
-
- Initializes the widget for use with the specified \a formEditor
- interface.
-
- \sa isInitialized()
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::domXml() const
-
- Returns the XML that is used to describe the custom widget's
- properties to \QD.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::codeTemplate() const
-
- This function is reserved for future use by \QD.
-
- \omit
- Returns the code template that \QD includes in forms that contain
- the custom widget when they are saved.
- \endomit
-*/
-
-/*!
- \macro QDESIGNER_WIDGET_EXPORT
- \relates QDesignerCustomWidgetInterface
- \since 4.1
-
- This macro is used when defining custom widgets to ensure that they are
- correctly exported from plugins for use with \QD.
-
- On some platforms, the symbols required by \QD to create new widgets
- are removed from plugins by the build system, making them unusable.
- Using this macro ensures that the symbols are retained on those platforms,
- and has no side effects on other platforms.
-
- For example, the \l{designer/worldtimeclockplugin}{World Time Clock Plugin}
- example exports a custom widget class with the following declaration:
-
- \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 0
- \dots
- \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 2
-
- \sa {Creating Custom Widgets for Qt Designer}
-*/
-
-
-// Doc: Abstract class
-
-/*!
- \class QDesignerDnDItemInterface
- \brief The QDesignerDnDItemInterface class provides an interface that is used to manage items
- during a drag and drop operation.
- \inmodule QtDesigner
- \internal
-*/
-
-/*!
- \enum QDesignerDnDItemInterface::DropType
-
- This enum describes the result of a drag and drop operation.
-
- \value MoveDrop The item was moved.
- \value CopyDrop The item was copied.
-*/
-
-/*!
- \fn QDesignerDnDItemInterface::QDesignerDnDItemInterface()
-
- Constructs a new interface to a drag and drop item.
-*/
-
-/*!
- \fn QDesignerDnDItemInterface::~QDesignerDnDItemInterface()
-
- Destroys the interface to the item.
-*/
-
-/*!
- \fn DomUI *QDesignerDnDItemInterface::domUi() const
-
- Returns a user interface object for the item.
-*/
-
-/*!
- \fn QWidget *QDesignerDnDItemInterface::widget() const
-
- Returns the widget being copied or moved in the drag and drop operation.
-
- \sa source()
-*/
-
-/*!
- \fn QWidget *QDesignerDnDItemInterface::decoration() const
-
- Returns the widget used to represent the item.
-*/
-
-/*!
- \fn QPoint QDesignerDnDItemInterface::hotSpot() const
-
- Returns the cursor's hotspot.
-
- \sa QDrag::hotSpot()
-*/
-
-/*!
- \fn DropType QDesignerDnDItemInterface::type() const
-
- Returns the type of drag and drop operation in progress.
-*/
-
-/*!
- \fn QWidget *QDesignerDnDItemInterface::source() const
-
- Returns the widget that is the source of the drag and drop operation; i.e. the original
- container of the widget being dragged.
-
- \sa widget()
-*/
-
-
-// Doc: Abstract class
-
-/*!
- \class QDesignerIconCacheInterface
- \brief The QDesignerIconCacheInterface class provides an interface to \QD's icon cache.
- \inmodule QtDesigner
- \internal
-*/
-
-/*!
- \fn QDesignerIconCacheInterface::QDesignerIconCacheInterface(QObject *parent)
-
- Constructs a new interface with the given \a parent.
-*/
-
-/*!
- \fn QIcon QDesignerIconCacheInterface::nameToIcon(const QString &filePath, const QString &qrcPath)
-
- Returns the icon associated with the name specified by \a filePath in the resource
- file specified by \a qrcPath.
-
- If \a qrcPath refers to a valid resource file, the name used for the file path is a path
- within those resources; otherwise the file path refers to a local file.
-
- \sa {The Qt Resource System}, nameToPixmap()
-*/
-
-/*!
- \fn QPixmap QDesignerIconCacheInterface::nameToPixmap(const QString &filePath, const QString &qrcPath)
-
- Returns the pixmap associated with the name specified by \a filePath in the resource
- file specified by \a qrcPath.
-
- If \a qrcPath refers to a valid resource file, the name used for the file path is a path
- within those resources; otherwise the file path refers to a local file.
-
- \sa {The Qt Resource System}, nameToIcon()
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::iconToFilePath(const QIcon &icon) const
-
- Returns the file path associated with the given \a icon. The file path is a path within
- an application resources.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::iconToQrcPath(const QIcon &icon) const
-
- Returns the path to the resource file that refers to the specified \a icon. The resource
- path refers to a local file.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::pixmapToFilePath(const QPixmap &pixmap) const
-
- Returns the file path associated with the given \a pixmap. The file path is a path within
- an application resources.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::pixmapToQrcPath(const QPixmap &pixmap) const
-
- Returns the path to the resource file that refers to the specified \a pixmap. The resource
- path refers to a local file.
-*/
-
-/*!
- \fn QList<QPixmap> QDesignerIconCacheInterface::pixmapList() const
-
- Returns a list of pixmaps for the icons provided by the icon cache.
-*/
-
-/*!
- \fn QList<QIcon> QDesignerIconCacheInterface::iconList() const
-
- Returns a list of icons provided by the icon cache.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::resolveQrcPath(const QString &filePath, const QString &qrcPath, const QString &workingDirectory) const
-
- Returns a path to a resource specified by the \a filePath within
- the resource file located at \a qrcPath. If \a workingDirectory is
- a valid path to a directory, the path returned will be relative to
- that directory; otherwise an absolute path is returned.
-
- \omit
- ### Needs checking
- \endomit
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerPropertySheetExtension
-
- \brief The QDesignerPropertySheetExtension class allows you to
- manipulate a widget's properties which is displayed in Qt
- Designer's property editor.
-
- \sa QDesignerDynamicPropertySheetExtension
-
- \inmodule QtDesigner
-
- QDesignerPropertySheetExtension provides a collection of functions that
- are typically used to query a widget's properties, and to
- manipulate the properties' appearance in the property editor. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 15
-
- Note that if you change the value of a property using the
- QDesignerPropertySheetExtension::setProperty() function, the undo
- stack is not updated. To ensure that a property's value can be
- reverted using the undo stack, you must use the
- QDesignerFormWindowCursorInterface::setProperty() function, or its
- buddy \l
- {QDesignerFormWindowCursorInterface::setWidgetProperty()}{setWidgetProperty()},
- instead.
-
- When implementing a custom widget plugin, a pointer to \QD's
- current QDesignerFormEditorInterface object (\c formEditor in the
- example above) is provided by the
- QDesignerCustomWidgetInterface::initialize() function's parameter.
-
- The property sheet, or any other extension, can be retrieved by
- querying \QD's extension manager using the qt_extension()
- function. When you want to release the extension, you only need to
- delete the pointer.
-
- All widgets have a default property sheet which populates \QD's
- property editor with the widget's properties (i.e the ones defined
- with the Q_PROPERTY() macro). But QDesignerPropertySheetExtension
- also provides an interface for creating custom property sheet
- extensions.
-
- \warning \QD uses the QDesignerPropertySheetExtension to feed its
- property editor. Whenever a widget is selected in its workspace,
- \QD will query for the widget's property sheet extension. If the
- selected widget has an implemented property sheet extension, this
- extension will override the default property sheet.
-
- To create a property sheet extension, your extension class must
- inherit from both QObject and
- QDesignerPropertySheetExtension. Then, since we are implementing
- an interface, we must ensure that it's made known to the meta
- object system using the Q_INTERFACES() macro:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 16
-
- This enables \QD to use qobject_cast() to query for supported
- interfaces using nothing but a QObject pointer.
-
- In \QD the extensions are not created until they are
- required. For that reason, when implementing a property sheet
- extension, you must also create a QExtensionFactory, i.e a class
- that is able to make an instance of your extension, and register
- it using \QD's \l {QExtensionManager}{extension manager}.
-
- When a property sheet extension is required, \QD's \l
- {QExtensionManager}{extension manager} will run through all its
- registered factories calling QExtensionFactory::createExtension()
- for each until the first one that is able to create a property
- sheet extension for the selected widget, is found. This factory
- will then make an instance of the extension. If no such factory
- can be found, \QD will use the default property sheet.
-
- There are four available types of extensions in \QD:
- QDesignerContainerExtension, QDesignerMemberSheetExtension,
- QDesignerPropertySheetExtension and QDesignerTaskMenuExtension. Qt
- Designer's behavior is the same whether the requested extension is
- associated with a multi page container, a member sheet, a property
- sheet or a task menu.
-
- The QExtensionFactory class provides a standard extension factory,
- and can also be used as an interface for custom extension
- factories. You can either create a new QExtensionFactory and
- reimplement the QExtensionFactory::createExtension() function. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 17
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a property sheet extension extension as well. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 18
-
- For a complete example using an extension class, see the \l
- {designer/taskmenuextension}{Task Menu Extension example}. The
- example shows how to create a custom widget plugin for Qt
- Designer, and how to to use the QDesignerTaskMenuExtension class
- to add custom items to \QD's task menu.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerPropertySheetExtension::~QDesignerPropertySheetExtension()
-
- Destroys the property sheet extension.
-*/
-
-/*!
- \fn int QDesignerPropertySheetExtension::count() const
-
- Returns the selected widget's number of properties.
-*/
-
-/*!
- \fn int QDesignerPropertySheetExtension::indexOf(const QString &name) const
-
- Returns the index for a given property \a name.
-
- \sa propertyName()
-*/
-
-/*!
- \fn QString QDesignerPropertySheetExtension::propertyName(int index) const
-
- Returns the name of the property at the given \a index.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerPropertySheetExtension::propertyGroup(int index) const
-
- Returns the property group for the property at the given \a index.
-
- \QD's property editor supports property groups, i.e. sections of
- related properties. A property can be related to a group using the
- setPropertyGroup() function. The default group of any property is
- the name of the class that defines it. For example, the
- QObject::objectName property appears within the QObject property
- group.
-
- \sa indexOf(), setPropertyGroup()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setPropertyGroup(int index, const QString &group)
-
- Sets the property group for the property at the given \a index to
- \a group.
-
- Relating a property to a group makes it appear within that group's
- section in the property editor. The default property group of any
- property is the name of the class that defines it. For example,
- the QObject::objectName property appears within the QObject
- property group.
-
- \sa indexOf(), property(), propertyGroup()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::hasReset(int index) const
-
- Returns true if the property at the given \a index has a reset
- button in \QD's property editor, otherwise false.
-
- \sa indexOf(), reset()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::reset(int index)
-
- Resets the value of the property at the given \a index, to the
- default value. Returns true if a default value could be found, otherwise false.
-
- \sa indexOf(), hasReset(), isChanged()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::isVisible(int index) const
-
- Returns true if the property at the given \a index is visible in
- \QD's property editor, otherwise false.
-
- \sa indexOf(), setVisible()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setVisible(int index, bool visible)
-
- If \a visible is true, the property at the given \a index is
- visible in \QD's property editor; otherwise the property is
- hidden.
-
- \sa indexOf(), isVisible()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::isAttribute(int index) const
-
- Returns true if the property at the given \a index is an attribute,
- which will be \e excluded from the UI file, otherwise false.
-
- \sa indexOf(), setAttribute()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setAttribute(int index, bool attribute)
-
- If \a attribute is true, the property at the given \a index is
- made an attribute which will be \e excluded from the UI file;
- otherwise it will be included.
-
- \sa indexOf(), isAttribute()
-*/
-
-/*!
- \fn QVariant QDesignerPropertySheetExtension::property(int index) const
-
- Returns the value of the property at the given \a index.
-
- \sa indexOf(), setProperty(), propertyGroup()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setProperty(int index, const QVariant &value)
-
- Sets the \a value of the property at the given \a index.
-
- \warning If you change the value of a property using this
- function, the undo stack is not updated. To ensure that a
- property's value can be reverted using the undo stack, you must
- use the QDesignerFormWindowCursorInterface::setProperty()
- function, or its buddy \l
- {QDesignerFormWindowCursorInterface::setWidgetProperty()}{setWidgetProperty()},
- instead.
-
- \sa indexOf(), property(), propertyGroup()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::isChanged(int index) const
-
- Returns true if the value of the property at the given \a index
- differs from the property's default value, otherwise false.
-
- \sa indexOf(), setChanged(), reset()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setChanged(int index, bool changed)
-
- Sets whether the property at the given \a index is different from
- its default value, or not, depending on the \a changed parameter.
-
- \sa indexOf(), isChanged()
-*/
-
-// Doc: Interface only
-
-/*!
- \class QDesignerDynamicPropertySheetExtension
-
- \brief The QDesignerDynamicPropertySheetExtension class allows you to
- manipulate a widget's dynamic properties in Qt Designer's property editor.
-
- \sa QDesignerPropertySheetExtension, {QObject#Dynamic Properties}{Dynamic Properties}
-
- \inmodule QtDesigner
- \since 4.3
-*/
-
-/*!
- \fn QDesignerDynamicPropertySheetExtension::~QDesignerDynamicPropertySheetExtension()
-
- Destroys the dynamic property sheet extension.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::dynamicPropertiesAllowed() const
-
- Returns true if the widget supports dynamic properties; otherwise returns false.
-*/
-
-/*!
- \fn int QDesignerDynamicPropertySheetExtension::addDynamicProperty(const QString &propertyName, const QVariant &value)
-
- Adds a dynamic property named \a propertyName and sets its value to \a value.
- Returns the index of the property if it was added successfully; otherwise returns -1 to
- indicate failure.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::removeDynamicProperty(int index)
-
- Removes the dynamic property at the given \a index.
- Returns true if the operation succeeds; otherwise returns false.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::isDynamicProperty(int index) const
-
- Returns true if the property at the given \a index is a dynamic property; otherwise
- returns false.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::canAddDynamicProperty(const QString &propertyName) const
-
- Returns true if \a propertyName is a valid, unique name for a dynamic
- property; otherwise returns false.
-
-*/
diff --git a/doc/src/qtdemo.qdoc b/doc/src/demos/qtdemo.qdoc
index 60f896a..60f896a 100644
--- a/doc/src/qtdemo.qdoc
+++ b/doc/src/demos/qtdemo.qdoc
diff --git a/doc/src/deployment/deployment-plugins.qdoc b/doc/src/deployment/deployment-plugins.qdoc
new file mode 100644
index 0000000..b02bdd8
--- /dev/null
+++ b/doc/src/deployment/deployment-plugins.qdoc
@@ -0,0 +1,236 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page deployment-plugins.html
+ \title Deploying Plugins
+ \brief A guide to plugins-specific aspects of deploying Qt and Qt Application
+
+ This document explains how to deploy plugin libraries that Qt or
+ your application should load at runtime. If you use
+ \l{How to Create Qt Plugins#Static Plugins}{static plugins}, then the
+ plugin code is already part of your application executable, and no
+ separate deployment steps are required.
+
+ \tableofcontents
+
+ \section1 The Plugin Directory
+
+ When the application is run, Qt will first treat the application's
+ executable directory as the \c{pluginsbase}. For example if the
+ application is in \c{C:\Program Files\MyApp} and has a style plugin,
+ Qt will look in \c{C:\Program Files\MyApp\styles}. (See
+ QCoreApplication::applicationDirPath() for how to find out where
+ the application's executable is.) Qt will also look in the
+ directory specified by
+ QLibraryInfo::location(QLibraryInfo::PluginsPath), which typically
+ is located in \c QTDIR/plugins (where \c QTDIR is the directory
+ where Qt is installed). If you want Qt to look in additional
+ places you can add as many paths as you need with calls to
+ QCoreApplication::addLibraryPath(). And if you want to set your
+ own path or paths you can use QCoreApplication::setLibraryPaths().
+ You can also use a \c qt.conf file to override the hard-coded
+ paths that are compiled into the Qt library. For more information,
+ see the \l {Using qt.conf} documentation. Yet another possibility
+ is to set the \c QT_PLUGIN_PATH environment variable before running
+ the application. If set, Qt will look for plugins in the
+ paths (separated by the system path separator) specified in the variable.
+
+ \section1 Loading and Verifying Plugins Dynamically
+
+ When loading plugins, the Qt library does some sanity checking to
+ determine whether or not the plugin can be loaded and used. This
+ provides the ability to have multiple versions and configurations of
+ the Qt library installed side by side.
+
+ \list
+ \o Plugins linked with a Qt library that has a higher version number
+ will not be loaded by a library with a lower version number.
+
+ \br
+ \bold{Example:} Qt 4.3.0 will \e{not} load a plugin built with Qt 4.3.1.
+
+ \o Plugins linked with a Qt library that has a lower major version
+ number will not be loaded by a library with a higher major version
+ number.
+
+ \br
+ \bold{Example:} Qt 4.3.1 will \e{not} load a plugin built with Qt 3.3.1.
+ \br
+ \bold{Example:} Qt 4.3.1 will load plugins built with Qt 4.3.0 and Qt 4.2.3.
+
+ \o The Qt library and all plugins are built using a \e {build
+ key}. The build key in the Qt library is examined against the build
+ key in the plugin, and if they match, the plugin is loaded. If the
+ build keys do not match, then the Qt library refuses to load the
+ plugin.
+
+ \br \bold{Rationale:} See the \l{#The Build Key}{The Build Key} section below.
+ \endlist
+
+ When building plugins to extend an application, it is important to ensure
+ that the plugin is configured in the same way as the application. This means
+ that if the application was built in release mode, plugins should be built
+ in release mode, too.
+
+ If you configure Qt to be built in both debug and release modes,
+ but only build applications in release mode, you need to ensure that your
+ plugins are also built in release mode. By default, if a debug build of Qt is
+ available, plugins will \e only be built in debug mode. To force the
+ plugins to be built in release mode, add the following line to the plugin's
+ project file:
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 3
+
+ This will ensure that the plugin is compatible with the version of the library
+ used in the application.
+
+ \section2 The Build Key
+
+ When loading plugins, Qt checks the build key of each plugin against its
+ own configuration to ensure that only compatible plugins are loaded; any
+ plugins that are configured differently are not loaded.
+
+ The build key contains the following information:
+ \list
+ \o Architecture, operating system and compiler.
+
+ \e {Rationale:}
+ In cases where different versions of the same compiler do not
+ produce binary compatible code, the version of the compiler is
+ also present in the build key.
+
+ \o Configuration of the Qt library. The configuration is a list
+ of the missing features that affect the available API in the
+ library.
+
+ \e {Rationale:}
+ Two different configurations of the same version of
+ the Qt library are not binary compatible. The Qt library that
+ loads the plugin uses the list of (missing) features to
+ determine if the plugin is binary compatible.
+
+ \e {Note:} There are cases where a plugin can use features that are
+ available in two different configurations. However, the
+ developer writing plugins would need to know which features are
+ in use, both in their plugin and internally by the utility
+ classes in Qt. The Qt library would require complex feature
+ and dependency queries and verification when loading plugins.
+ Requiring this would place an unnecessary burden on the developer, and
+ increase the overhead of loading a plugin. To reduce both
+ development time and application runtime costs, a simple string
+ comparision of the build keys is used.
+
+ \o Optionally, an extra string may be specified on the configure
+ script command line.
+
+ \e {Rationale:}
+ When distributing binaries of the Qt library with an
+ application, this provides a way for developers to write
+ plugins that can only be loaded by the library with which the
+ plugins were linked.
+ \endlist
+
+ For debugging purposes, it is possible to override the run-time build key
+ checks by configuring Qt with the \c QT_NO_PLUGIN_CHECK preprocessor macro
+ defined.
+
+ \section1 The Plugin Cache
+
+ In order to speed up loading and validation of plugins, some of
+ the information that is collected when plugins are loaded is cached
+ through QSettings. This includes information about whether or not
+ a plugin was successfully loaded, so that subsequent load operations
+ don't try to load an invalid plugin. However, if the "last modified"
+ timestamp of a plugin has changed, the plugin's cache entry is
+ invalidated and the plugin is reloaded regardless of the values in
+ the cache entry, and the cache entry itself is updated with the new
+ result.
+
+ This also means that the timestamp must be updated each time the
+ plugin or any dependent resources (such as a shared library) is
+ updated, since the dependent resources might influence the result
+ of loading a plugin.
+
+ Sometimes, when developing plugins, it is necessary to remove entries
+ from the plugin cache. Since Qt uses QSettings to manage the plugin
+ cache, the locations of plugins are platform-dependent; see
+ \l{QSettings#Platform-Specific Notes}{the QSettings documentation}
+ for more information about each platform.
+
+ For example, on Windows the entries are stored in the registry, and the
+ paths for each plugin will typically begin with either of these two strings:
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 6
+
+ \section1 Debugging Plugins
+
+ There are a number of issues that may prevent correctly-written plugins from
+ working with the applications that are designed to use them. Many of these
+ are related to differences in the way that plugins and applications have been
+ built, often arising from separate build systems and processes.
+
+ The following table contains descriptions of the common causes of problems
+ developers experience when creating plugins:
+
+ \table
+ \header \o Problem \o Cause \o Solution
+ \row \o Plugins sliently fail to load even when opened directly by the
+ application. \QD shows the plugin libraries in its
+ \gui{Help|About Plugins} dialog, but no plugins are listed under each
+ of them.
+ \o The application and its plugins are built in different modes.
+ \o Either share the same build information or build the plugins in both
+ debug and release modes by appending the \c debug_and_release to
+ the \l{qmake Variable Reference#CONFIG}{CONFIG} variable in each of
+ their project files.
+ \row \o A valid plugin that replaces an invalid (or broken) plugin fails to load.
+ \o The entry for the plugin in the plugin cache indicates that the original
+ plugin could not be loaded, causing Qt to ignore the replacement.
+ \o Either ensure that the plugin's timestamp is updated, or delete the
+ entry in the \l{#The Plugin Cache}{plugin cache}.
+ \endtable
+
+ You can also use the \c QT_DEBUG_PLUGINS environment variable to obtain
+ diagnostic information from Qt about each plugin it tries to load. Set this
+ variable to a non-zero value in the environment from which your application is
+ launched.
+*/
diff --git a/doc/src/deployment.qdoc b/doc/src/deployment/deployment.qdoc
index 9f8ee8f..75b870f 100644
--- a/doc/src/deployment.qdoc
+++ b/doc/src/deployment/deployment.qdoc
@@ -39,20 +39,9 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
- \group deployment
+ \page deployment.html
\title Deploying Qt Applications
- \ingroup buildsystem
Deploying an Qt application does not require any C++
programming. All you need to do is to build Qt and your
@@ -200,7 +189,7 @@
\o \l{Deploying Qt for Embedded Linux Applications}{Qt for Embedded Linux}
\endlist
- \sa Installation {Window System Specific Notes}
+ \sa Installation {Platform-Specific Documentation}
*/
/*!
@@ -208,7 +197,6 @@
\contentspage Deploying Qt Applications
\title Deploying an Application on X11 Platforms
- \ingroup deployment
Due to the proliferation of Unix systems (commercial Unices, Linux
distributions, etc.), deployment on Unix is a complex
@@ -529,7 +517,6 @@
\contentspage Deploying Qt Applications
\title Deploying an Application on Windows
- \ingroup deployment
This documentation will describe how to determine which files you
should include in your distribution, and how to make sure that the
@@ -933,7 +920,6 @@
\contentspage Deploying Qt Applications
\title Deploying an Application on Mac OS X
- \ingroup deployment
Starting with version 4.5, Qt now includes a \l {macdeploy}{deployment tool}
that automates the prodecures described in this document.
diff --git a/doc/src/qt-conf.qdoc b/doc/src/deployment/qt-conf.qdoc
index ce32aa8..229fa45 100644
--- a/doc/src/qt-conf.qdoc
+++ b/doc/src/deployment/qt-conf.qdoc
@@ -43,7 +43,6 @@
\page qt-conf.html
\title Using qt.conf
- \ingroup deployment
The \c qt.conf file overrides the hard-coded paths that are
compiled into the Qt library. These paths are accessible using the
diff --git a/doc/src/qtconfig.qdoc b/doc/src/deployment/qtconfig.qdoc
index 2e02fe6..2e02fe6 100644
--- a/doc/src/qtconfig.qdoc
+++ b/doc/src/deployment/qtconfig.qdoc
diff --git a/doc/src/desktop-integration.qdoc b/doc/src/desktop-integration.qdoc
deleted file mode 100644
index 1c10ed9..0000000
--- a/doc/src/desktop-integration.qdoc
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page desktop-integration.html
- \title Desktop Integration
- \ingroup gui-programming
-
- Various classes in Qt are designed to help developers integrate applications into
- users' desktop environments. These classes enable developers to take advantage
- of native services while still using a cross-platform API.
-
- \tableofcontents
-
- \section1 Opening External Resources
-
- Although Qt provides facilities to handle and display resources, such as
- \l{QImageIOHandler}{common image formats} and \l{QTextDocument}{HTML},
- it is sometimes necessary to open files and external resources using external
- applications.
-
- QDesktopServices provides an interface to services offered by the user's desktop
- environment. In particular, the \l{QDesktopServices::}{openUrl()} function is
- used to open resources using the appropriate application, which may have been
- specifically configured by the user.
-
- \section1 System Tray Icons
-
- Many modern desktop environments feature docks or panels with \e{system trays}
- in which applications can install icons. Applications often use system tray icons
- to display status information, either by updating the icon itself or by showing
- information in "balloon messages". Additionally, many applications provide
- pop-up menus that can be accessed via their system tray icons.
-
- The QSystemTrayIcon class exposes all of the above features via an intuitive
- Qt-style API that can be used on all desktop platforms.
-
- \section1 Desktop Widgets
-
- On systems where the user's desktop is displayed using more than one screen,
- certain types of applications may need to obtain information about the
- configuration of the user's workspace to ensure that new windows and dialogs
- are opened in appropriate locations.
-
- The QDesktopWidget class can be used to monitor the positions of widgets and
- notify applications about changes to the way the desktop is split over the
- available screens. This enables applications to implement policies for
- positioning new windows so that, for example, they do not distract a user
- who is working on a specific task.
-
-
-*/
diff --git a/doc/src/activeqt-dumpcpp.qdoc b/doc/src/development/activeqt-dumpcpp.qdoc
index 63e35ee..8c743a1 100644
--- a/doc/src/activeqt-dumpcpp.qdoc
+++ b/doc/src/development/activeqt-dumpcpp.qdoc
@@ -93,15 +93,15 @@
for each \c coclass and \c interface declared in the type library. coclasses marked with
the \c control attribute will be wrapped by a QAxWidget subclass.
- Those classes that wrap creatable coclasses (i.e. coclasses that are not marked
+ Those classes that wrap creatable coclasses (i.e. coclasses that are not marked
as \c noncreatable) have a default constructor; this is typically a single class
of type \c Application.
\snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 0
All other classes can only be created by passing an IDispatch interface pointer
- to the constructor; those classes should however not be created explicitly.
- Instead, use the appropriate API of already created objects.
+ to the constructor; those classes should however not be created explicitly.
+ Instead, use the appropriate API of already created objects.
\snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 1
@@ -123,16 +123,16 @@
By default, methods and property returning subobjects will use the type as in
the type library. The caller of the function is responsible for deleting or
- reparenting the object returned. If the \c -compat switch is set, properties
+ reparenting the object returned. If the \c -compat switch is set, properties
and method returning a COM object have the return type \c IDispatch*, and
- the namespace will not declare wrapper classes for interfaces.
+ the namespace will not declare wrapper classes for interfaces.
In this case, create the correct wrapper class explicitly:
\snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 4
You can of course use the IDispatch* returned directly, in which case you have to
- call \c Release() when finished with the interface.
+ call \c Release() when finished with the interface.
All classes in the namespace are tagged with a macro that allows you to export
or import them from a DLL. To do that, declare the macro to expand to
diff --git a/doc/src/activeqt-dumpdoc.qdoc b/doc/src/development/activeqt-dumpdoc.qdoc
index 55ab2d7..55ab2d7 100644
--- a/doc/src/activeqt-dumpdoc.qdoc
+++ b/doc/src/development/activeqt-dumpdoc.qdoc
diff --git a/doc/src/activeqt-idc.qdoc b/doc/src/development/activeqt-idc.qdoc
index 974eddc..974eddc 100644
--- a/doc/src/activeqt-idc.qdoc
+++ b/doc/src/development/activeqt-idc.qdoc
diff --git a/doc/src/activeqt-testcon.qdoc b/doc/src/development/activeqt-testcon.qdoc
index 9fcfed6..9fcfed6 100644
--- a/doc/src/activeqt-testcon.qdoc
+++ b/doc/src/development/activeqt-testcon.qdoc
diff --git a/doc/src/assistant-manual.qdoc b/doc/src/development/assistant-manual.qdoc
index 1b82b1a..b26efcc 100644
--- a/doc/src/assistant-manual.qdoc
+++ b/doc/src/development/assistant-manual.qdoc
@@ -642,8 +642,8 @@
\endtable
In addition to those \QA specific tags, the tags for generating and registering
- documentation can be used. See \l{QtHelp Module#Creating a Qt Help Collection}{Qt Help Collection}
- documentation for more information.
+ documentation can be used. See \l{The Qt Help Framework#Creating a Qt Help Collection}
+ {Qt Help Collection} documentation for more information.
An example of a help collection file that uses all the available tags is shown below:
diff --git a/doc/src/debug.qdoc b/doc/src/development/debug.qdoc
index bedf73d..f0fe128 100644
--- a/doc/src/debug.qdoc
+++ b/doc/src/development/debug.qdoc
@@ -39,22 +39,9 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Qt Debugging Techniques
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page debug.html
\title Debugging Techniques
- \ingroup buildsystem
Here we present some useful hints to help you with debugging your
Qt-based software.
diff --git a/doc/src/designer-manual.qdoc b/doc/src/development/designer-manual.qdoc
index 5d8587a..5d8587a 100644
--- a/doc/src/designer-manual.qdoc
+++ b/doc/src/development/designer-manual.qdoc
diff --git a/doc/src/developing-on-mac.qdoc b/doc/src/development/developing-on-mac.qdoc
index 2546ef1..dee6d4d 100644
--- a/doc/src/developing-on-mac.qdoc
+++ b/doc/src/development/developing-on-mac.qdoc
@@ -44,7 +44,7 @@
\title Developing Qt Applications on Mac OS X
\brief A overview of items to be aware of when developing Qt applications
on Mac OS X
- \ingroup platform-notes
+ \ingroup platform-specific
\tableofcontents
diff --git a/doc/src/classes/q3popupmenu.qdoc b/doc/src/development/developing-with-qt.qdoc
index c20dadc..9fa2242 100644
--- a/doc/src/classes/q3popupmenu.qdoc
+++ b/doc/src/development/developing-with-qt.qdoc
@@ -40,37 +40,35 @@
****************************************************************************/
/*!
- \class Q3PopupMenu
- \brief The Q3PopupMenu class is a thin compatibility wrapper around QMenu.
- \compat
+ \page developing-with-qt.html
+ \title Cross Platform Development with Qt
- Use QMenu in new applications. Note that the menu's actions must
- be \l {Q3Action}s.
-*/
-
-/*!
- \fn Q3PopupMenu::Q3PopupMenu(QWidget *parent, const char *name)
-
- Constructs a menu with the given \a parent and \a name.
-*/
-
-/*!
- \fn int Q3PopupMenu::exec()
-
- Pops up the menu and returns the ID of the action that was
- selected.
-
- \sa QMenu::exec()
-*/
-
-/*!
- \fn int Q3PopupMenu::exec(const QPoint & pos, int indexAtPoint)
-
- Pops up the menu at coordinate \a pos and returns the ID of the
- action that was selected.
-
- If \a indexAtPoint is specified, the menu will pop up with the
- item at index \a indexAtPoint under the mouse cursor.
+ Qt is provided with a set of build tools to help developers automate
+ the process of building and installing Qt applications.
- \sa QMenu::exec()
+ \table 100%
+ \header \o Development \o Cross-Platform Issues \o Specific Tools
+ \row
+ \o
+ \list
+ \o \l {Debugging Techniques}
+ \o \l {Qt's Tools}
+ \o \l {The Qt Resource System}
+ \o \l {Using Precompiled Headers}
+ \endlist
+ \o
+ \list
+ \o \l {Cross Compiling Qt for Embedded Linux Applications}
+ \o \l {Deploying Qt Applications}
+ \o \l {Installation}{Installing Qt}
+ \o \l {Window System Specific Notes}
+ \endlist
+ \o
+ \list
+ \o \l lupdate and \l lrelease
+ \o \l {moc}{Meta-Object Compiler (moc)}
+ \o \l {User Interface Compiler (uic)}
+ \o \l {Resource Compiler (rcc)}
+ \endlist
+ \endtable
*/
diff --git a/doc/src/moc.qdoc b/doc/src/development/moc.qdoc
index ee57f7e..747c68d 100644
--- a/doc/src/moc.qdoc
+++ b/doc/src/development/moc.qdoc
@@ -42,7 +42,6 @@
/*!
\page moc.html
\title Using the Meta-Object Compiler (moc)
- \ingroup buildsystem
\ingroup qttools
\keyword moc
diff --git a/doc/src/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 2a0ad9a..181ba6a 100644
--- a/doc/src/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -45,7 +45,6 @@
\startpage {index.html}{Qt Reference Documentation}
\nextpage qmake Tutorial
- \ingroup buildsystem
\ingroup qttools
\keyword qmake
@@ -3843,7 +3842,6 @@
\contentspage {qmake Manual}{Contents}
\previouspage qmake Advanced Usage
\nextpage qmake Reference
- \ingroup buildsystem
\target Introduction
@@ -4262,8 +4260,7 @@
\snippet examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro 0
- See the \l{Qt Examples#Qt Designer}{Qt Designer examples} for more
- examples of plugin-based projects.
+ See the \l{Qt Designer Examples} for more examples of plugin-based projects.
\section1 Building and Installing in Debug and Release Modes
diff --git a/doc/src/qmsdev.qdoc b/doc/src/development/qmsdev.qdoc
index b6126a5..ceed4c1 100644
--- a/doc/src/qmsdev.qdoc
+++ b/doc/src/development/qmsdev.qdoc
@@ -1,12 +1,41 @@
/****************************************************************************
**
-** Documentation of Visual Studio Integration Plugin.
-**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/qtestlib.qdoc b/doc/src/development/qtestlib.qdoc
index 57683e6..13a5b7c 100644
--- a/doc/src/qtestlib.qdoc
+++ b/doc/src/development/qtestlib.qdoc
@@ -42,9 +42,9 @@
/*!
\page qtestlib-manual.html
\title QTestLib Manual
- \ingroup architecture
\brief An overview of Qt's unit testing framework.
+ \ingroup frameworks-technologies
\keyword qtestlib
The QTestLib framework, provided by Nokia, is a tool for unit
@@ -383,7 +383,6 @@
\nextpage {Chapter 1: Writing a Unit Test}{Chapter 1}
\title QTestLib Tutorial
- \ingroup howto
This tutorial gives a short introduction to how to use some of the
features of the QTestLib framework. It is divided into four
diff --git a/doc/src/rcc.qdoc b/doc/src/development/rcc.qdoc
index 5eb5547..1da641c 100644
--- a/doc/src/rcc.qdoc
+++ b/doc/src/development/rcc.qdoc
@@ -42,7 +42,6 @@
/*!
\page rcc.html
\title Resource Compiler (rcc)
- \ingroup buildsystem
\ingroup qttools
\keyword rcc
diff --git a/doc/src/tools-list.qdoc b/doc/src/development/tools-list.qdoc
index 509a1e7..01f71d3 100644
--- a/doc/src/tools-list.qdoc
+++ b/doc/src/development/tools-list.qdoc
@@ -42,7 +42,6 @@
/*!
\group qttools
\title Qt's Tools
- \ingroup buildsystem
Qt is supplied with several command line and graphical tools to
ease and speed the development process. Each tool is listed here
diff --git a/doc/src/uic.qdoc b/doc/src/development/uic.qdoc
index f774fa8..b05643c 100644
--- a/doc/src/uic.qdoc
+++ b/doc/src/development/uic.qdoc
@@ -42,7 +42,6 @@
/*!
\page uic.html
\title User Interface Compiler (uic)
- \ingroup buildsystem
\ingroup qttools
\keyword uic
diff --git a/doc/src/diagrams/dbus-examples.png b/doc/src/diagrams/dbus-examples.png
new file mode 100644
index 0000000..816a9ab
--- /dev/null
+++ b/doc/src/diagrams/dbus-examples.png
Binary files differ
diff --git a/doc/src/distributingqt.qdoc b/doc/src/distributingqt.qdoc
deleted file mode 100644
index 0739976..0000000
--- a/doc/src/distributingqt.qdoc
+++ /dev/null
@@ -1,154 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Documentation on deploying Qt.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*
-\page distributingqt.html
-
-\title Deploying Qt Applications
-
-This document lists the platform-specific files needed to distribute
-Qt applications. We do not include any compiler-specific files that
-may also be required. (See also, \link winsystem.html Window
-System-specific Notes\endlink.)
-
-\tableofcontents
-
-Also see the "deployment" articles in
-\e{\link http://qt.nokia.com/doc/qq/ Qt Quarterly\endlink}:
-\list
-\i \link http://qt.nokia.com/doc/qq/qq09-mac-deployment.html
-Deploying Applications on Mac OS X\endlink
-\i \link http://qt.nokia.com/doc/qq/qq10-windows-deployment.html
-Deploying Applications on Windows\endlink
-\i \link http://qt.nokia.com/doc/qq/qq11-unix-deployment.html
-Deploying Applications on X11\endlink
-\endlist
-
-\section1 Static Qt Applications
-
-To distribute static Qt applications, you need the following file for
-all platforms:
-
-\list
-\i your application's executable
-\endlist
-
-\section1 Dynamic Qt Applications
-
-To distribute dynamic Qt applications, you will need the following
-files for all platforms:
-
-\list
-\i application executable
-\i the Qt library
-\endlist
-
-The Qt library must either be in the same directory as the application
-executable or in a directory which is included in the system library
-path.
-
-The library is provided by the following platform specific files:
-
-\table
-\header \i Platform \i File
-\row \i Windows \i \c qt[version].dll
-\row \i Unix/Linux \i \c libqt[version].so
-\row \i Mac \i \c libqt[version].dylib
-\endtable
-
-\e version includes the three version numbers.
-
-\section2 Distributing Plugins
-
-You must include any plugin files required by the application.
-
-Plugins must be put into a subdirectory under a directory known to
-Qt as a plugin directory. The subdirectory must have the name of the
-plugin category (e.g. \c styles, \c sqldrivers, \c designer, etc.).
-
-Qt searches in the following directories for plugin categories:
-
-\list
-\i Application specific plugin paths
-\i Build-directory of Qt
-\i The application directory
-\endlist
-
-Application specific plugin paths can be added using
-QCoreApplication::addLibraryPath(). The build-directory of Qt is hardcoded
-in the Qt library and can be changed as a part of the installation
-process.
-
-\section1 Dynamic Dialogs
-
-For dynamic dialogs if you use QWidgetFactory, you need the following
-files for all platforms:
-
-\list
-\i The same files as used for dynamic Qt applications
-\i The QUI Library
-\endlist
-
-The QUI library is provided by the following platform specific files:
-\table
-\header \i Platform \i File
-\row \i Windows \i\c qui.lib
-\row \i Unix/Linux \i\c libqui.so
-\row \i Mac \i \c libqui.dylib
-\endtable
-
-The QUI library must either be in the same directory as the
-application executable or in a directory which is included in the
-system library path.
-
-*/
diff --git a/doc/src/examples-overview.qdoc b/doc/src/examples-overview.qdoc
deleted file mode 100644
index 50c19fa..0000000
--- a/doc/src/examples-overview.qdoc
+++ /dev/null
@@ -1,367 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page examples-overview.html
- \title An Overview of Qt's Examples
- \brief A short guide to the different categories of examples included with Qt.
- \ingroup howto
-
- Qt is supplied with a variety of examples that cover almost every aspect
- of development. These examples are ordered by functional area, but many
- examples often use features from many parts of Qt to highlight one area
- in particular.
-
- This document provides a brief overview of each example category and
- provides links to the more formal \l{Qt Examples}{list of examples}.
-
- \section1 \l{Qt Examples#Widgets}{Widgets}
-
- \l{Qt Examples#Widgets}{\inlineimage widget-examples.png
- }
-
- Qt comes with a large range of standard widgets that users of modern
- applications have come to expect.
-
- You can also develop your own custom widgets and controls, and use them
- alongside standard widgets.
-
- It is even possible to provide custom styles and themes for widgets that can
- be used to change the appearance of standard widgets and appropriately
- written custom widgets.
-
- \section1 \l{Qt Examples#Dialogs}{Dialogs}
-
- \l{Qt Examples#Dialogs}{\inlineimage dialog-examples.png
- }
-
- Qt includes standard dialogs for many common operations, such as file
- selection, printing, and color selection.
-
- Custom dialogs can also be created for specialized modal or modeless
- interactions with users.
-
- \section1 \l{Qt Examples#Main Windows}{Main Windows}
-
- \l{Qt Examples#Main Windows}{\inlineimage mainwindow-examples.png
- }
-
- All the standard features of application main windows are provided by Qt.
-
- Main windows can have pull down menus, tool bars, and dock windows. These
- separate forms of user input are unified in an integrated action system that
- also supports keyboard shortcuts and accelerator keys in menu items.
-
- \section1 \l{Qt Examples#Layouts}{Layouts}
-
- \l{Qt Examples#Layouts}{\inlineimage layout-examples.png
- }
-
- Qt uses a layout-based approach to widget management. Widgets are arranged in
- the optimal positions in windows based on simple layout rules, leading to a
- consistent look and feel.
-
- Custom layouts can be used to provide more control over the positions and
- sizes of child widgets.
-
- \section1 \l{Qt Examples#Painting}{Painting}
-
- \l{Qt Examples#Painting}{\inlineimage painting-examples.png
- }
-
- Qt's painting system is able to render vector graphics, images, and outline
- font-based text with sub-pixel accuracy accuracy using anti-aliasing to
- improve rendering quality.
-
- These examples show the most common techniques that are used when painting
- with Qt, from basic concepts such as drawing simple primitives to the use of
- transformations.
-
- \section1 \l{Qt Examples#Item Views}{Item Views}
-
- \l{Qt Examples#Item Views}{\inlineimage itemview-examples.png
- }
-
- Item views are widgets that typically display data sets. Qt 4's model/view
- framework lets you handle large data sets by separating the underlying data
- from the way it is represented to the user, and provides support for
- customized rendering through the use of delegates.
-
- \section1 \l{Qt Examples#Graphics View}{Graphics View}
-
- \l{Qt Examples#Graphics View}{\inlineimage graphicsview-examples.png
- }
-
- Qt is provided with a comprehensive canvas through the GraphicsView
- classes.
-
- These examples demonstrate the fundamental aspects of canvas programming
- with Qt.
-
- \section1 \l{Qt Examples#Rich Text}{Rich Text}
-
- \l{Qt Examples#Rich Text}{\inlineimage richtext-examples.png
- }
-
- Qt provides powerful document-oriented rich text engine that supports Unicode
- and right-to-left scripts. Documents can be manipulated using a cursor-based
- API, and their contents can be imported and exported as both HTML and in a
- custom XML format.
-
- \section1 \l{Qt Examples#Tools}{Tools}
-
- \l{Qt Examples#Tools}{\inlineimage tool-examples.png
- }
-
- Qt is equipped with a range of capable tool classes, from containers and
- iterators to classes for string handling and manipulation.
-
- Other classes provide application infrastructure support, handling plugin
- loading and managing configuration files.
-
- \section1 \l{Qt Examples#Desktop}{Desktop}
-
- \l{Qt Examples#Desktop}{\inlineimage desktop-examples.png
- }
-
- Qt provides features to enable applications to integrate with the user's
- preferred desktop environment.
-
- Features such as system tray icons, access to the desktop widget, and
- support for desktop services can be used to improve the appearance of
- applications and take advantage of underlying desktop facilities.
-
- \section1 \l{Qt Examples#Drag and Drop}{Drag and Drop}
-
- \l{Qt Examples#Drag and Drop}{\inlineimage draganddrop-examples.png
- }
-
- Qt supports native drag and drop on all platforms via an extensible
- MIME-based system that enables applications to send data to each other in the
- most appropriate formats.
-
- Drag and drop can also be implemented for internal use by applications.
-
- \section1 \l{Qt Examples#Threads}{Threads}
-
- \l{Qt Examples#Threads}{\inlineimage thread-examples.png
- }
-
- Qt 4 makes it easier than ever to write multithreaded applications. More
- classes have been made usable from non-GUI threads, and the signals and slots
- mechanism can now be used to communicate between threads.
-
- Additionally, it is now possible to move objects between threads.
-
- \section1 \l{Qt Examples#Concurrent Programming}{Concurrent Programming}
-
- The QtConcurrent namespace includes a collection of classes and functions
- for straightforward concurrent programming.
-
- These examples show how to apply the basic techniques of concurrent
- programming to simple problems.
-
- \section1 \l{Qt Examples#Network}{Network}
-
- \l{Qt Examples#Network}{\inlineimage network-examples.png
- }
-
- Qt is provided with an extensive set of network classes to support both
- client-based and server side network programming.
-
- These examples demonstrate the fundamental aspects of network programming
- with Qt.
-
- \section1 \l{Qt Examples#XML}{XML}
-
- \l{Qt Examples#XML}{\inlineimage xml-examples.png
- }
-
- XML parsing and handling is supported through SAX and DOM compliant APIs.
-
- Qt's SAX compliant classes allow you to parse XML incrementally; the DOM
- classes enable more complex document-level operations to be performed on
- XML files.
-
- \section1 \l{Qt Examples#XQuery, XPath}{XQuery, XPath}
-
- Qt provides an XQuery/XPath engine, QtXmlPatterns, for querying XML
- files and custom data models, similar to the model/view framework.
-
- \section1 \l{Qt Examples#OpenGL}{OpenGL}
-
- \l{Qt Examples#OpenGL}{\inlineimage opengl-examples.png
- }
-
- Qt provides support for integration with OpenGL implementations on all
- platforms, giving developers the opportunity to display hardware accelerated
- 3D graphics alongside a more conventional user interface.
-
- These examples demonstrate the basic techniques used to take advantage of
- OpenGL in Qt applications.
-
- \section1 \l{Qt Examples#Multimedia}{Multimedia}
-
- \l{Qt Examples#Multimedia}
-
- Qt provides low-level audio support on linux,windows and mac platforms by default and
- an audio plugin API to allow developers to implement there own audio support for
- custom devices and platforms.
-
- These examples demonstrate the basic techniques used to take advantage of
- Audio API in Qt applications.
-
- \section1 \l{Qt Examples#SQL}{SQL}
-
- \l{Qt Examples#SQL}{\inlineimage sql-examples.png
- }
-
- Qt provides extensive database interoperability, with support for products
- from both open source and proprietary vendors.
-
- SQL support is integrated with Qt's model/view architecture, making it easier
- to provide GUI integration for your database applications.
-
- \section1 \l{Qt Examples#Help System}{Help System}
-
- \l{Qt Examples#Help System}{\inlineimage assistant-examples.png
- }
-
- Support for interactive help is provided by the Qt Assistant application.
- Developers can take advantages of the facilities it offers to display
- specially-prepared documentation to users of their applications.
-
- \section1 \l{Qt Examples#Qt Designer}{Qt Designer}
-
- \l{Qt Examples#Qt Designer}{\inlineimage designer-examples.png
- }
-
- Qt Designer is a capable graphical user interface designer that lets you
- create and configure forms without writing code. GUIs created with
- Qt Designer can be compiled into an application or created at run-time.
-
- \section1 \l{Qt Examples#UiTools}{UiTools}
-
- \l{Qt Examples#UiTools}{\inlineimage uitools-examples.png
- }
-
- Qt is equipped with a range of capable tool classes, from containers and
- iterators to classes for string handling and manipulation.
-
- Other classes provide application infrastructure support, handling plugin
- loading and managing configuration files.
-
- \section1 \l{Qt Examples#Qt Linguist}{Qt Linguist}
-
- \l{Qt Examples#Qt Linguist}{\inlineimage linguist-examples.png
- }
-
- Internationalization is a core feature of Qt. These examples show how to
- access translation and localization facilities at run-time.
-
- \section1 \l{Qt Examples#Qt Script}{Qt Script}
-
- \l{Qt Examples#Qt Script}{\inlineimage qtscript-examples.png
- }
-
- Qt is provided with a powerful embedded scripting environment through the QtScript
- classes.
-
- These examples demonstrate the fundamental aspects of scripting applications
- with Qt.
-
- \section1 \l{Qt Examples#Phonon Multimedia Framework}{Phonon Multimedia Framework}
-
- \l{Qt Examples#Phonon Multimedia Framework}{\inlineimage phonon-examples.png
- }
-
- The Phonon Multimedia Framework brings multimedia support to Qt applications.
-
- The examples and demonstrations provided show how to play music and movies
- using the Phonon API.
-
- \section1 \l{Qt Examples#WebKit}{WebKit}
-
- \l{Qt Examples#WebKit}{\inlineimage webkit-examples.png
- }
-
- Qt provides an integrated Web browser component based on WebKit, the popular
- open source browser engine.
-
- These examples and demonstrations show a range of different uses for WebKit,
- from displaying Web pages within a Qt user interface to an implementation of
- a basic function Web browser.
-
- \section1 \l{Qt Examples#State Machine}{State Machine}
-
- Qt provides a powerful hierchical finite state machine through the Qt State
- Machine classes.
-
- These examples demonstrate the fundamental aspects of implementing
- Statecharts with Qt.
-
- \section1 \l{Qt Examples#Qt for Embedded Linux}{Qt for Embedded Linux}
-
- \l{Qt Examples#Qt for Embedded Linux}{\inlineimage qt-embedded-examples.png
- }
-
- These examples show how to take advantage of features specifically designed
- for use on systems with limited resources, specialized hardware, and small
- screens.
-
- \section1 \l{Qt Examples#ActiveQt}{ActiveQt}
-
- Qt is supplied with a number of example applications and demonstrations that
- have been written to provide developers with examples of the Qt API in use,
- highlight good programming practice, and showcase features found in each of
- Qt's core technologies.
-
- The example and demo launcher can be used to explore the different categories
- available. It provides an overview of each example, lets you view the
- documentation in Qt Assistant, and is able to launch examples and demos.
-
- \section1 \l{http://qt.nokia.com/doc/qq}{Another Source of Examples}
-
- One more valuable source for examples and explanations of Qt
- features is the archive of the \l {http://qt.nokia.com/doc/qq}
- {Qt Quarterly}.
-
-*/
diff --git a/doc/src/examples.qdoc b/doc/src/examples.qdoc
deleted file mode 100644
index 0181e09..0000000
--- a/doc/src/examples.qdoc
+++ /dev/null
@@ -1,437 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page examples.html
- \title Qt Examples
- \brief Information about the example programs provided with Qt.
- \ingroup howto
-
- This is the list of examples in Qt's \c examples directory. The
- examples demonstrate Qt features in small, self-contained
- programs. They are not all designed to be impressive when you run
- them, but their source code is carefully written to show good Qt
- programming practices. You can launch any of these programs from the
- \l{Examples and Demos Launcher} application.
-
- If you are new to Qt, you should probably start by going through
- the \l{Tutorials} before you have a look at the
- \l{mainwindows/application}{Application} example.
-
- In addition to the examples and the tutorial, Qt includes a
- \l{Qt Demonstrations}{selection of demos} that deliberately show off
- Qt's features. You might want to look at these as well.
-
- One more valuable source for examples and explanations of Qt
- features is the archive of the \l {Qt Quarterly}.
-
- In the list below, examples marked with an asterisk (*) are fully
- documented. Eventually, all the examples will be fully documented,
- but sometimes we include an example before we have time to write
- about it, because someone might need it right now.
-
- Categories:
-
- \tableofcontents
-
- \section1 ActiveQt
-
- \list
- \o \l{activeqt/comapp}{COM App}\raisedaster
- \o \l{Dot Net Example (ActiveQt)}{Dot Net}\raisedaster
- \o \l{activeqt/hierarchy}{Hierarchy}\raisedaster
- \o \l{activeqt/menus}{Menus}\raisedaster
- \o \l{activeqt/multiple}{Multiple}\raisedaster
- \o \l{activeqt/opengl}{OpenGL}\raisedaster
- \o \l{activeqt/qutlook}{Qutlook}\raisedaster
- \o \l{activeqt/simple}{Simple}\raisedaster
- \o \l{activeqt/webbrowser}{Web Browser}\raisedaster
- \o \l{activeqt/wrapper}{Wrapper}\raisedaster
- \endlist
-
- \section1 Animation
-
- \list
- \o \l{animation/moveblocks}{Move Blocks}\raisedaster
- \o \l{animation/stickman}{Stick man}\raisedaster
- \endlist
-
- \section1 Concurrent Programming
-
- \list
- \o \l{qtconcurrent/imagescaling}{QtConcurrent Asynchronous Image Scaling}
- \o \l{qtconcurrent/map}{QtConcurrent Map}
- \o \l{qtconcurrent/progressdialog}{QtConcurrent Progress Dialog}
- \o \l{qtconcurrent/runfunction}{QtConcurrent Run Function}
- \o \l{qtconcurrent/wordcount}{QtConcurrent Word Count}
- \endlist
-
- \section1 D-Bus
- \list
- \o \l{dbus/dbus-chat}{Chat}
- \o \l{dbus/complexpingpong}{Complex Ping Pong}
- \o \l{dbus/listnames}{List Names}
- \o \l{dbus/pingpong}{Ping Pong}
- \o \l{dbus/remotecontrolledcar}{Remote Controlled Car}
- \endlist
-
- \section1 Desktop
-
- \list
- \o \l{desktop/screenshot}{Screenshot}\raisedaster
- \o \l{desktop/systray}{System Tray}\raisedaster
- \endlist
-
- \section1 Dialogs
-
- \list
- \o \l{dialogs/classwizard}{Class Wizard}\raisedaster
- \o \l{dialogs/configdialog}{Config Dialog}
- \o \l{dialogs/extension}{Extension}\raisedaster
- \o \l{dialogs/findfiles}{Find Files}\raisedaster
- \o \l{dialogs/licensewizard}{License Wizard}\raisedaster
- \o \l{dialogs/standarddialogs}{Standard Dialogs}
- \o \l{dialogs/tabdialog}{Tab Dialog}\raisedaster
- \o \l{dialogs/trivialwizard}{Trivial Wizard}
- \endlist
-
- \section1 Drag and Drop
-
- \list
- \o \l{draganddrop/delayedencoding}{Delayed Encoding}\raisedaster
- \o \l{draganddrop/draggableicons}{Draggable Icons}
- \o \l{draganddrop/draggabletext}{Draggable Text}
- \o \l{draganddrop/dropsite}{Drop Site}
- \o \l{draganddrop/fridgemagnets}{Fridge Magnets}\raisedaster
- \o \l{draganddrop/puzzle}{Drag and Drop Puzzle}
- \endlist
-
- \section1 Graphics View
-
- \list
- \o \l{graphicsview/collidingmice}{Colliding Mice}\raisedaster
- \o \l{graphicsview/diagramscene}{Diagram Scene}\raisedaster
- \o \l{graphicsview/dragdroprobot}{Drag and Drop Robot}
- \o \l{graphicsview/elasticnodes}{Elastic Nodes}
- \o \l{graphicsview/portedasteroids}{Ported Asteroids}
- \o \l{graphicsview/portedcanvas}{Ported Canvas}
- \endlist
-
- \section1 Help System
-
- \list
- \o \l{help/simpletextviewer}{Simple Text Viewer}\raisedaster
- \endlist
-
- \section1 Item Views
-
- \list
- \o \l{itemviews/addressbook}{Address Book}\raisedaster
- \o \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model}
- \o \l{itemviews/chart}{Chart}
- \o \l{itemviews/coloreditorfactory}{Color Editor Factory}\raisedaster
- \o \l{itemviews/combowidgetmapper}{Combo Widget Mapper}\raisedaster
- \o \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model}\raisedaster
- \o \l{itemviews/dirview}{Dir View}
- \o \l{itemviews/editabletreemodel}{Editable Tree Model}\raisedaster
- \o \l{itemviews/fetchmore}{Fetch More}\raisedaster
- \o \l{itemviews/frozencolumn}{Frozen Column}\raisedaster
- \o \l{itemviews/pixelator}{Pixelator}\raisedaster
- \o \l{itemviews/puzzle}{Puzzle}
- \o \l{itemviews/simpledommodel}{Simple DOM Model}\raisedaster
- \o \l{itemviews/simpletreemodel}{Simple Tree Model}\raisedaster
- \o \l{itemviews/simplewidgetmapper}{Simple Widget Mapper}\raisedaster
- \o \l{itemviews/spinboxdelegate}{Spin Box Delegate}\raisedaster
- \o \l{itemviews/stardelegate}{Star Delegate}\raisedaster
- \endlist
-
- \section1 Layouts
-
- \list
- \o \l{layouts/basiclayouts}{Basic Layouts}\raisedaster
- \o \l{layouts/borderlayout}{Border Layout}
- \o \l{layouts/dynamiclayouts}{Dynamic Layouts}
- \o \l{layouts/flowlayout}{Flow Layout}
- \endlist
-
- \section1 Main Windows
-
- \list
- \o \l{mainwindows/application}{Application}\raisedaster
- \o \l{mainwindows/dockwidgets}{Dock Widgets}\raisedaster
- \o \l{mainwindows/mdi}{MDI}
- \o \l{mainwindows/menus}{Menus}\raisedaster
- \o \l{mainwindows/recentfiles}{Recent Files}
- \o \l{mainwindows/sdi}{SDI}
- \endlist
-
- \section1 Network
-
- \list
- \o \l{network/blockingfortuneclient}{Blocking Fortune Client}\raisedaster
- \o \l{network/broadcastreceiver}{Broadcast Receiver}
- \o \l{network/broadcastsender}{Broadcast Sender}
- \o \l{network/network-chat}{Network Chat}
- \o \l{network/fortuneclient}{Fortune Client}\raisedaster
- \o \l{network/fortuneserver}{Fortune Server}\raisedaster
- \o \l{network/ftp}{FTP}\raisedaster
- \o \l{network/http}{HTTP}
- \o \l{network/loopback}{Loopback}
- \o \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster
- \o \l{network/torrent}{Torrent}
- \o \l{network/googlesuggest}{Google Suggest}
- \endlist
-
- \section1 OpenGL
-
- \list
- \o \l{opengl/2dpainting}{2D Painting}\raisedaster
- \o \l{opengl/framebufferobject}{Framebuffer Object}
- \o \l{opengl/framebufferobject2}{Framebuffer Object 2}
- \o \l{opengl/grabber}{Grabber}
- \o \l{opengl/hellogl}{Hello GL}\raisedaster
- \o \l{opengl/overpainting}{Overpainting}\raisedaster
- \o \l{opengl/pbuffers}{Pixel Buffers}
- \o \l{opengl/pbuffers2}{Pixel Buffers 2}
- \o \l{opengl/samplebuffers}{Sample Buffers}
- \o \l{opengl/textures}{Textures}
- \endlist
-
- \section1 Painting
-
- \list
- \o \l{painting/basicdrawing}{Basic Drawing}\raisedaster
- \o \l{painting/concentriccircles}{Concentric Circles}\raisedaster
- \o \l{painting/fontsampler}{Font Sampler}
- \o \l{painting/imagecomposition}{Image Composition}\raisedaster
- \o \l{painting/painterpaths}{Painter Paths}\raisedaster
- \o \l{painting/svggenerator}{SVG Generator}\raisedaster
- \o \l{painting/svgviewer}{SVG Viewer}
- \o \l{painting/transformations}{Transformations}\raisedaster
- \endlist
-
- \section1 Phonon Multimedia Framework
-
- \list
- \o \l{phonon/capabilities}{Capabilities}\raisedaster
- \o \l{phonon/musicplayer}{Music Player}\raisedaster
- \endlist
-
- \section1 Multimedia
-
- \list
- \o \l{multimedia/audio/audiodevices}{Audio Devices}\raisedaster
- \o \l{multimedia/audio/audiooutput}{Audio Output}\raisedaster
- \o \l{multimedia/audio/audioinput}{Audio Input}\raisedaster
- \endlist
-
- \section1 Qt Designer
-
- \list
- \o \l{designer/calculatorbuilder}{Calculator Builder}\raisedaster
- \o \l{designer/calculatorform}{Calculator Form}\raisedaster
- \o \l{designer/customwidgetplugin}{Custom Widget Plugin}\raisedaster
- \o \l{designer/taskmenuextension}{Task Menu Extension}\raisedaster
- \o \l{designer/containerextension}{Container Extension}\raisedaster
- \o \l{designer/worldtimeclockbuilder}{World Time Clock Builder}\raisedaster
- \o \l{designer/worldtimeclockplugin}{World Time Clock Plugin}\raisedaster
- \endlist
-
- \section1 Qt Linguist
-
- \list
- \o \l{linguist/hellotr}{Hello tr()}\raisedaster
- \o \l{linguist/arrowpad}{Arrow Pad}\raisedaster
- \o \l{linguist/trollprint}{Troll Print}\raisedaster
- \endlist
-
- \section1 Qt for Embedded Linux
-
- \list
- \o \l{qws/svgalib}{Accelerated Graphics Driver}\raisedaster
- \o \l{qws/dbscreen}{Double Buffered Graphics Driver}\raisedaster
- \o \l{qws/mousecalibration}{Mouse Calibration}\raisedaster
- \o \l{qws/ahigl}{OpenGL for Embedded Systems}\raisedaster
- \o \l{qws/simpledecoration}{Simple Decoration}\raisedaster
- \endlist
-
- \section1 Qt Script
-
- \list
- \o \l{script/calculator}{Calculator}\raisedaster
- \o \l{script/context2d}{Context2D}\raisedaster
- \o \l{script/defaultprototypes}{Default Prototypes}\raisedaster
- \o \l{script/helloscript}{Hello Script}\raisedaster
- \o \l{script/qstetrix}{Qt Script Tetrix}\raisedaster
- \o \l{script/customclass}{Custom Script Class}\raisedaster
- \endlist
-
- \section1 Rich Text
-
- \list
- \o \l{richtext/calendar}{Calendar}\raisedaster
- \o \l{richtext/orderform}{Order Form}\raisedaster
- \o \l{richtext/syntaxhighlighter}{Syntax Highlighter}\raisedaster
- \o \l{richtext/textobject}{Text Object}\raisedaster
- \endlist
-
- \section1 SQL
-
- \list
- \o \l{sql/cachedtable}{Cached Table}\raisedaster
- \o \l{sql/drilldown}{Drill Down}\raisedaster
- \o \l{sql/querymodel}{Query Model}
- \o \l{sql/relationaltablemodel}{Relational Table Model}
- \o \l{sql/tablemodel}{Table Model}
- \o \l{sql/sqlwidgetmapper}{SQL Widget Mapper}\raisedaster
- \endlist
-
- \section1 State Machine
-
- \list
- \o \l{statemachine/eventtransitions}{Event Transitions}\raisedaster
- \o \l{statemachine/factorial}{Factorial States}\raisedaster
- \o \l{statemachine/pingpong}{Ping Pong States}\raisedaster
- \o \l{statemachine/rogue}{Rogue}\raisedaster
- \o \l{statemachine/trafficlight}{Traffic Light}\raisedaster
- \o \l{statemachine/twowaybutton}{Two-way Button}\raisedaster
- \endlist
-
- \section1 Threads
-
- \list
- \o \l{threads/queuedcustomtype}{Queued Custom Type}\raisedaster
- \o \l{threads/mandelbrot}{Mandelbrot}\raisedaster
- \o \l{threads/semaphores}{Semaphores}\raisedaster
- \o \l{threads/waitconditions}{Wait Conditions}\raisedaster
- \endlist
-
- \section1 Tools
-
- \list
- \o \l{tools/codecs}{Codecs}
- \o \l{tools/completer}{Completer}\raisedaster
- \o \l{tools/customcompleter}{Custom Completer}\raisedaster
- \o \l{tools/customtype}{Custom Type}\raisedaster
- \o \l{tools/customtypesending}{Custom Type Sending}\raisedaster
- \o \l{tools/echoplugin}{Echo Plugin}\raisedaster
- \o \l{tools/i18n}{I18N}
- \o \l{tools/plugandpaint}{Plug & Paint}\raisedaster
- \o Plug & Paint Plugins: \l{tools/plugandpaintplugins/basictools}{Basic Tools}\raisedaster
- and \l{tools/plugandpaintplugins/extrafilters}{Extra Filters}\raisedaster
- \o \l{tools/regexp}{RegExp}
- \o \l{tools/settingseditor}{Settings Editor}
- \o \l{tools/styleplugin}{Style Plugin}\raisedaster
- \o \l{tools/treemodelcompleter}{Tree Model Completer}\raisedaster
- \o \l{tools/undoframework}{Undo Framework}\raisedaster
- \endlist
-
- \section1 UiTools
-
- \list
- \o \l{uitools/multipleinheritance}{Multiple Inheritance}\raisedaster
- \o \l{uitools/textfinder}{Text Finder}\raisedaster
- \endlist
-
- \section1 WebKit
-
- \list
- \o \l{webkit/previewer}{Previewer}\raisedaster
- \o \l{webkit/formextractor}{Form Extractor}
- \o \l{webkit/googlechat}{Google Chat}
- \o \l{webkit/fancybrowser}{Fancy Browser}
- \endlist
-
- \section1 Widgets
-
- \list
- \o \l{widgets/analogclock}{Analog Clock}\raisedaster
- \o \l{widgets/calculator}{Calculator}\raisedaster
- \o \l{widgets/calendarwidget}{Calendar Widget}\raisedaster
- \o \l{widgets/charactermap}{Character Map}\raisedaster
- \o \l{widgets/codeeditor}{Code Editor}\raisedaster
- \o \l{widgets/digitalclock}{Digital Clock}\raisedaster
- \o \l{widgets/groupbox}{Group Box}\raisedaster
- \o \l{widgets/icons}{Icons}\raisedaster
- \o \l{widgets/imageviewer}{Image Viewer}\raisedaster
- \o \l{widgets/lineedits}{Line Edits}\raisedaster
- \o \l{widgets/movie}{Movie}
- \o \l{widgets/scribble}{Scribble}\raisedaster
- \o \l{widgets/shapedclock}{Shaped Clock}\raisedaster
- \o \l{widgets/sliders}{Sliders}\raisedaster
- \o \l{widgets/spinboxes}{Spin Boxes}\raisedaster
- \o \l{widgets/styles}{Styles}\raisedaster
- \o \l{widgets/stylesheet}{Style Sheet}\raisedaster
- \o \l{widgets/tablet}{Tablet}\raisedaster
- \o \l{widgets/tetrix}{Tetrix}\raisedaster
- \o \l{widgets/tooltips}{Tooltips}\raisedaster
- \o \l{widgets/wiggly}{Wiggly}\raisedaster
- \o \l{widgets/windowflags}{Window Flags}\raisedaster
- \endlist
-
- \section1 XML
-
- \list
- \o \l{xml/dombookmarks}{DOM Bookmarks}
- \o \l{xml/saxbookmarks}{SAX Bookmarks}
- \o \l{xml/streambookmarks}{QXmlStream Bookmarks}\raisedaster
- \o \l{xml/rsslisting}{RSS-Listing}
- \o \l{xml/xmlstreamlint}{XML Stream Lint Example}\raisedaster
- \endlist
-
- \section1 XQuery, XPath
-
- \list
- \o \l{xmlpatterns/recipes}{Recipes}
- \o \l{xmlpatterns/filetree}{File System Example}
- \o \l{xmlpatterns/qobjectxmlmodel}{QObject XML Model Example}
- \o \l{xmlpatterns/xquery/globalVariables}{C++ Source Code Analyzer Example}
- \o \l{xmlpatterns/trafficinfo}{Traffic Info}\raisedaster
- \o \l{xmlpatterns/schema}{XML Schema Validation}\raisedaster
- \endlist
-
- \section1 Inter-Process Communication
- \list
- \o \l{ipc/localfortuneclient}{Local Fortune Client}\raisedaster
- \o \l{ipc/localfortuneserver}{Local Fortune Server}\raisedaster
- \o \l{ipc/sharedmemory}{Shared Memory}\raisedaster
- \endlist
-*/
diff --git a/doc/src/examples/application.qdoc b/doc/src/examples/application.qdoc
index 7b7b881..dcab9e7 100644
--- a/doc/src/examples/application.qdoc
+++ b/doc/src/examples/application.qdoc
@@ -289,7 +289,7 @@
When restoring the position and size of a window, it's important
to call QWidget::resize() before QWidget::move(). The reason why
- is given in the \l{geometry.html}{Window Geometry} overview.
+ is given in the \l{Window Geometry} overview.
\snippet examples/mainwindows/application/mainwindow.cpp 37
\snippet examples/mainwindows/application/mainwindow.cpp 39
diff --git a/doc/src/examples/drilldown.qdoc b/doc/src/examples/drilldown.qdoc
index fff3b60..b62ecc5 100644
--- a/doc/src/examples/drilldown.qdoc
+++ b/doc/src/examples/drilldown.qdoc
@@ -389,9 +389,7 @@
the item's hover events, animating the item when the mouse cursor
is hovering over the image (by default, no items accept hover
events). Please see the \l{The Graphics View Framework}
- documentation and the
- \l{Qt Examples#Graphics View}{Graphics View examples} for more
- details.
+ documentation and the \l{Graphics View Examples} for more details.
\snippet examples/sql/drilldown/view.cpp 5
diff --git a/doc/src/examples/qtscriptcalculator.qdoc b/doc/src/examples/qtscriptcalculator.qdoc
index e9156b3..0e6e153 100644
--- a/doc/src/examples/qtscriptcalculator.qdoc
+++ b/doc/src/examples/qtscriptcalculator.qdoc
@@ -42,7 +42,6 @@
/*!
\example script/calculator
\title QtScript Calculator Example
- \ingroup scripting
In this simple QtScript example, we show how to implement the
functionality of a calculator widget.
diff --git a/doc/src/examples/qxmlstreambookmarks.qdoc b/doc/src/examples/qxmlstreambookmarks.qdoc
index def4c47..26964c4 100644
--- a/doc/src/examples/qxmlstreambookmarks.qdoc
+++ b/doc/src/examples/qxmlstreambookmarks.qdoc
@@ -106,19 +106,18 @@
of reading only takes place if the file is a valid XBEL 1.0 file.
Note that the XML input needs to be well-formed to be accepted by
QXmlStreamReader. Otherwise, the \l{QXmlStreamReader::raiseError()}
- {raiseError()} function is used to display an error message.
+ {raiseError()} function is used to display an error message. Since the
+ XBEL reader is only concerned with reading XML elements, it makes
+ extensive use of the \l{QXmlStreamReader::readNextStartElement()}
+ convenience function.
\snippet examples/xml/streambookmarks/xbelreader.cpp 1
- The \c readUnknownElement() function reads an unknown element. The
- Q_ASSERT() macro is used to provide a pre-condition for the function.
-
- \snippet examples/xml/streambookmarks/xbelreader.cpp 2
-
The \c readXBEL() function reads the name of a startElement and calls
the appropriate function to read it, depending on whether if its a
"folder", "bookmark" or "separator". Otherwise, it calls
- \c readUnknownElement().
+ \l{QXmlStreamReader::skipCurrentElement()}. The Q_ASSERT() macro is used
+ to provide a pre-condition for the function.
\snippet examples/xml/streambookmarks/xbelreader.cpp 3
diff --git a/doc/src/examples/trafficinfo.qdoc b/doc/src/examples/trafficinfo.qdoc
index 76d0810..500cf31 100644
--- a/doc/src/examples/trafficinfo.qdoc
+++ b/doc/src/examples/trafficinfo.qdoc
@@ -159,5 +159,5 @@
The rest of the code in this example is just for representing the time and
station information to the user, and uses techniques described in the
- \l{Qt Examples#Widgets}{Widgets examples}.
+ \l{Widgets Examples}.
*/
diff --git a/doc/src/datastreamformat.qdoc b/doc/src/files-and-resources/datastreamformat.qdoc
index eac550c..4226d0b 100644
--- a/doc/src/datastreamformat.qdoc
+++ b/doc/src/files-and-resources/datastreamformat.qdoc
@@ -39,22 +39,9 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Documentation of the Format of the QDataStream operators.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page datastreamformat.html
\title Format of the QDataStream Operators
- \ingroup architecture
\brief Representations of data types that can be serialized by QDataStream.
The \l QDataStream allows you to serialize some of the Qt data types.
diff --git a/doc/src/resources.qdoc b/doc/src/files-and-resources/resources.qdoc
index f8e9124..a799646 100644
--- a/doc/src/resources.qdoc
+++ b/doc/src/files-and-resources/resources.qdoc
@@ -40,9 +40,20 @@
****************************************************************************/
/*!
+ \group io
+ \title Input/Output and Networking
+ \ingroup groups
+
+ \brief Classes providing file input and output along with directory and
+ network handling.
+
+ These classes are used to handle input and output to and from external
+ devices, processes, files etc. as well as manipulating files and directories.
+*/
+
+/*!
\page resources.html
\title The Qt Resource System
- \ingroup buildsystem
\keyword resource system
diff --git a/doc/src/accessible.qdoc b/doc/src/frameworks-technologies/accessible.qdoc
index 8daff5a..7f1a2b1 100644
--- a/doc/src/accessible.qdoc
+++ b/doc/src/frameworks-technologies/accessible.qdoc
@@ -40,9 +40,15 @@
****************************************************************************/
/*!
+ \group accessibility
+ \title Accessibility Classes
+*/
+
+/*!
\page accessible.html
\title Accessibility
- \ingroup accessibility
+
+ \ingroup frameworks-technologies
\tableofcontents
@@ -90,6 +96,10 @@
accessibility.
\section2 Accessibility in Qt
+
+ These classes provide support for accessible applications.
+
+ \annotatedlist accessibility
When we communicate with the assistive technologies, we need to
describe Qt's user interface in a way that they can understand. Qt
@@ -249,6 +259,19 @@
produce interfaces. We will give examples of both approaches
later.
+ \section2 Enabling Accessibility Support
+
+ By default, Qt applications are run with accessibility support
+ enabled on Windows and Mac OS X. On Unix/X11 platforms, applications
+ must be launched in an environment with the \c QT_ACCESSIBILITY
+ variable set to 1. For example, this is set in the following way with
+ the bash shell:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc environment
+
+ Accessibility features are built into Qt by default when the libraries
+ are configured and built.
+
\section1 Implementing Accessibility
To provide accessibility support for a widget or other user
@@ -274,9 +297,10 @@
\endlist
In general, it is recommended that you are somewhat familiar with
- MSAA, which Qt originally was built for. You should also study
- the enum values of QAccessible, which describe the roles, actions,
- relationships, and events that you need to consider.
+ MSAA, which Qt's accessibility support originally was built for.
+ You should also study the enum values of QAccessible, which
+ describe the roles, actions, relationships, and events that you
+ need to consider.
Note that you can examine how Qt's widgets implement their
accessibility. One major problem with the MSAA standard is that
diff --git a/doc/src/qaxcontainer.qdoc b/doc/src/frameworks-technologies/activeqt-container.qdoc
index 59f059f..47be4be 100644
--- a/doc/src/qaxcontainer.qdoc
+++ b/doc/src/frameworks-technologies/activeqt-container.qdoc
@@ -40,12 +40,8 @@
****************************************************************************/
/*!
- \module QAxContainer
- \title QAxContainer Module
- \contentspage Qt's Modules
- \previouspage QtTest
- \nextpage QAxServer
- \ingroup modules
+ \page activeqt-container.html
+ \title Using ActiveX controls and COM objects in Qt
\brief The QAxContainer module is a Windows-only extension for
accessing ActiveX controls and COM objects.
@@ -69,7 +65,7 @@
interface to the Windows Script Host.
\endlist
- Some \l{Qt Examples#ActiveQt}{example applications} that use
+ Some \l{ActiveQt Examples}{example applications} that use
standard ActiveX controls to provide high-level user interface
functionality are provided.
@@ -219,42 +215,4 @@
that doesn't provide introspection (ie. ActivePython or
ActivePerl). You need to call the function directly on the
respective QAxScript object.
-
- \section1 License Information
-
- The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
- the \l{GNU Lesser General Public License (LGPL)}, or the
- \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
- the following license.
-
- \legalese
- Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
- All rights reserved.
-
- Contact: Nokia Corporation (qt-info@nokia.com)\br
-
- You may use this file under the terms of the BSD license as follows:\br
-
- "Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list
- of conditions and the following disclaimer.\br
- * Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution.\br
- * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the names of
- its contributors may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
- SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
- \endlegalese
*/
diff --git a/doc/src/qaxserver.qdoc b/doc/src/frameworks-technologies/activeqt-server.qdoc
index 63c1e13..4491be3 100644
--- a/doc/src/qaxserver.qdoc
+++ b/doc/src/frameworks-technologies/activeqt-server.qdoc
@@ -40,15 +40,11 @@
****************************************************************************/
/*!
- \module QAxServer
- \title QAxServer Module
- \contentspage Qt's Modules
- \previouspage QAxContainer
- \nextpage QtDBus module
- \ingroup modules
+ \page activeqt-server.html
+ \title Building ActiveX servers and controls with Qt
\brief The QAxServer module is a Windows-only static library that
- you can use to turn a standard Qt binary into a COM server.
+ you can use to turn a standard Qt binary into a COM server.
The QAxServer module is part of the \l ActiveQt framework. It
consists of three classes:
@@ -60,7 +56,7 @@
\o QAxAggregated can be subclassed to implement additional COM interfaces.
\endlist
- Some \l{Qt Examples#ActiveQt}{example implementations} of ActiveX
+ Some \l{ActiveQt Examples}{example implementations} of ActiveX
controls and COM objects are provided.
\sa {ActiveQt Framework}
@@ -625,8 +621,8 @@
If the web browser supports scripting use JavaScript, VBScript
and forms to script the control. The
- \l{Qt Examples#ActiveQt}{ActiveQt examples} include demonstration
- HTML pages for the example controls.
+ \l{ActiveQt Examples} include demonstration HTML pages for the example
+ controls.
\section2 Supported and Unsupported ActiveX Clients
@@ -857,42 +853,4 @@
QAxAggregated subclass.
\snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 20
-
- \section1 License Information
-
- The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
- the \l{GNU Lesser General Public License (LGPL)}, or the
- \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
- the following license.
-
- \legalese
- Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
- All rights reserved.
-
- Contact: Nokia Corporation (qt-info@nokia.com)\br
-
- You may use this file under the terms of the BSD license as follows:\br
-
- "Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list
- of conditions and the following disclaimer.\br
- * Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution.\br
- * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the names of
- its contributors may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
- SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
- \endlegalese
*/
diff --git a/doc/src/activeqt.qdoc b/doc/src/frameworks-technologies/activeqt.qdoc
index b3f0856..75c598a 100644
--- a/doc/src/activeqt.qdoc
+++ b/doc/src/frameworks-technologies/activeqt.qdoc
@@ -40,11 +40,23 @@
****************************************************************************/
/*!
+ \group activeqt-tools
+ \title Tools for ActiveQt
+ \brief Tools to help integrate Qt applications with ActiveX components.
+
+ These tools provide support for integrating Qt with ActiveX components.
+
+ \generatelist{related}
+
+ \sa {ActiveQt Framework}
+*/
+
+/*!
\page activeqt.html
\title ActiveQt Framework
\brief An overview of Qt's ActiveX and COM integration on Windows.
- \ingroup platform-notes
+ \ingroup platform-specific
\keyword ActiveQt
Qt's ActiveX and COM support allows Qt for Windows developers to:
diff --git a/doc/src/animation.qdoc b/doc/src/frameworks-technologies/animation.qdoc
index 7fd7850..d495aeb 100644
--- a/doc/src/animation.qdoc
+++ b/doc/src/frameworks-technologies/animation.qdoc
@@ -40,12 +40,18 @@
****************************************************************************/
/*!
+ \group animation
+ \title Animation Framework
+*/
+
+/*!
\page animation-overview.html
\title The Animation Framework
- \ingroup architecture
- \ingroup animation
+
\brief An overview of the Animation Framework
+ \ingroup frameworks-technologies
+
\keyword Animation
The animation framework is part of the Kinetic project, and aims
@@ -108,6 +114,13 @@
For detailed descriptions of the classes' function and roles in
the framework, please look up their class descriptions.
+ \section1 Classes in the Animation Framework
+
+ These classes provide a framework for creating both simple and complex
+ animations.
+
+ \annotatedlist animation
+
\section1 Animating Qt Properties
As mentioned in the previous section, the QPropertyAnimation class
diff --git a/doc/src/containers.qdoc b/doc/src/frameworks-technologies/containers.qdoc
index 49dae63..2d19b7e 100644
--- a/doc/src/containers.qdoc
+++ b/doc/src/frameworks-technologies/containers.qdoc
@@ -40,9 +40,25 @@
****************************************************************************/
/*!
- \group containers
+ \group tools
+ \title Non-GUI Classes
+ \ingroup groups
+
+ \brief Collection classes such as list, queue, stack and string, along
+ with other classes that can be used without needing QApplication.
+
+ The non-GUI classes are general-purpose collection and string classes
+ that may be used independently of the GUI classes.
+
+ In particular, these classes do not depend on QApplication at all,
+ and so can be used in non-GUI programs.
+
+*/
+
+/*!
+ \page containers.html
\title Generic Containers
- \ingroup architecture
+ \ingroup frameworks-technologies
\ingroup groups
\keyword container class
\keyword container classes
@@ -82,7 +98,23 @@
\section1 The Container Classes
- Qt provides the following container classes:
+ Qt provides the following sequential containers: QList,
+ QLinkedList, QVector, QStack, and QQueue. For most
+ applications, QList is the best type to use. Although it is
+ implemented as an array-list, it provides very fast prepends and
+ appends. If you really need a linked-list, use QLinkedList; if you
+ want your items to occupy consecutive memory locations, use QVector.
+ QStack and QQueue are convenience classes that provide LIFO and
+ FIFO semantics.
+
+ Qt also provides these associative containers: QMap,
+ QMultiMap, QHash, QMultiHash, and QSet. The "Multi" containers
+ conveniently support multiple values associated with a single
+ key. The "Hash" containers provide faster lookup by using a hash
+ function instead of a binary search on a sorted set.
+
+ As special cases, the QCache and QContiguousCache classes provide
+ efficient hash-lookup of objects in a limited cache storage.
\table
\header \o Class \o Summary
@@ -607,6 +639,9 @@
\o QCache<Key, T> provides a cache to store objects of a certain
type T associated with keys of type Key.
+ \o QContiguousCache<T> provides an efficient way of caching data
+ that is typically accessed in a contiguous way.
+
\o QPair<T1, T2> stores a pair of elements.
\endlist
diff --git a/doc/src/qdbusadaptors.qdoc b/doc/src/frameworks-technologies/dbus-adaptors.qdoc
index 92a618d..0a4dea7 100644
--- a/doc/src/qdbusadaptors.qdoc
+++ b/doc/src/frameworks-technologies/dbus-adaptors.qdoc
@@ -39,50 +39,12 @@
**
****************************************************************************/
-/** -*- mode: C++ -*-
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
/*!
\page usingadaptors.html
\title Using QtDBus Adaptors
+ \ingroup best-practices
+
Adaptors are special classes that are attached to any QObject-derived class
and provide the interface to the external world using D-Bus. Adaptors are
intended to be lightweight classes whose main purpose is to relay calls to
@@ -129,6 +91,9 @@
\page qdbusadaptorexample.html
\title D-Bus Adaptor Example
+ \previouspage The QtDBus Type System
+ \contentspage Using QtDBus Adaptors
+
The following example code shows how a D-Bus interface can be implemented
using an adaptor.
@@ -246,6 +211,9 @@
\page qdbusdeclaringslots.html
\title Declaring Slots in D-Bus Adaptors
+ \contentspage Using QtDBus Adaptors
+ \nextpage Declaring Signals in D-Bus Adaptors
+
Slots in D-Bus adaptors are declared just like normal, public slots, but their
parameters must follow certain rules (see \l{The QtDBus Type System} for more
information). Slots whose parameters do not follow those rules or that are not
@@ -374,6 +342,10 @@
\page qdbusdeclaringsignals.html
\title Declaring Signals in D-Bus Adaptors
+ \previouspage Declaring Slots in D-Bus Adaptors
+ \contentspage Using QtDBus Adaptors
+ \nextpage The QtDBus Type System
+
Any signal in a class derived from QDBusAbstractAdaptor will be automatically
relayed into D-Bus, provided that the signal's parameters conform to certain
rules (see \l{The QtDBus Type System} for more information). No special code
@@ -399,6 +371,10 @@
\page qdbustypesystem.html
\title The QtDBus Type System
+ \previouspage Declaring Signals in D-Bus Adaptors
+ \contentspage Using QtDBus Adaptors
+ \nextpage D-Bus Adaptor Example
+
D-Bus has an extensible type system based on a few primitives and
composition of the primitives in arrays and structures. QtDBus
implements the interface to that type system through the
diff --git a/doc/src/introtodbus.qdoc b/doc/src/frameworks-technologies/dbus-intro.qdoc
index bd1aefc..b1fcc44 100644
--- a/doc/src/introtodbus.qdoc
+++ b/doc/src/frameworks-technologies/dbus-intro.qdoc
@@ -42,10 +42,10 @@
/*!
\page intro-to-dbus.html
\title Introduction to D-Bus
+ \brief An introduction to Inter-Process Communication and Remote Procedure Calling with D-Bus.
\keyword QtDBus
- \ingroup architecture
- \brief An introduction to Inter-Process Communication and Remote Procedure Calling with D-Bus.
+ \ingroup frameworks-technologies
\section1 Introduction
diff --git a/doc/src/frameworks-technologies/desktop-integration.qdoc b/doc/src/frameworks-technologies/desktop-integration.qdoc
new file mode 100644
index 0000000..73a810f
--- /dev/null
+++ b/doc/src/frameworks-technologies/desktop-integration.qdoc
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \group desktop
+ \title Desktop Integration Classes
+*/
+
+/*!
+ \page desktop-integration.html
+ \title Desktop Integration
+ \brief Integrating with the user's desktop environment.
+
+ \ingroup best-practices
+
+ Qt applications behave well in the user's desktop environment, but certain
+ integrations require additional, and sometimes platform specific, techniques.
+
+ \tableofcontents
+
+ \section1 Useful Classes
+
+ Various classes in Qt are designed to help developers integrate applications into
+ users' desktop environments. These classes enable developers to take advantage
+ of native services while still using a cross-platform API.
+
+ \annotatedlist desktop
+
+ \section1 Setting the Application Icon
+
+ In order to change the icon of the executable application file
+ itself, as it is presented on the desktop (i.e., prior to
+ application execution), it is necessary to employ another,
+ platform-dependent technique.
+
+ \tableofcontents {1 Setting the Application Icon}
+
+ \section1 Opening External Resources
+
+ Although Qt provides facilities to handle and display resources, such as
+ \l{QImageIOHandler}{common image formats} and \l{QTextDocument}{HTML},
+ it is sometimes necessary to open files and external resources using external
+ applications.
+
+ QDesktopServices provides an interface to services offered by the user's desktop
+ environment. In particular, the \l{QDesktopServices::}{openUrl()} function is
+ used to open resources using the appropriate application, which may have been
+ specifically configured by the user.
+
+ \section1 System Tray Icons
+
+ Many modern desktop environments feature docks or panels with \e{system trays}
+ in which applications can install icons. Applications often use system tray icons
+ to display status information, either by updating the icon itself or by showing
+ information in "balloon messages". Additionally, many applications provide
+ pop-up menus that can be accessed via their system tray icons.
+
+ The QSystemTrayIcon class exposes all of the above features via an intuitive
+ Qt-style API that can be used on all desktop platforms.
+
+ \section1 Desktop Widgets
+
+ On systems where the user's desktop is displayed using more than one screen,
+ certain types of applications may need to obtain information about the
+ configuration of the user's workspace to ensure that new windows and dialogs
+ are opened in appropriate locations.
+
+ The QDesktopWidget class can be used to monitor the positions of widgets and
+ notify applications about changes to the way the desktop is split over the
+ available screens. This enables applications to implement policies for
+ positioning new windows so that, for example, they do not distract a user
+ who is working on a specific task.
+*/
diff --git a/doc/src/dnd.qdoc b/doc/src/frameworks-technologies/dnd.qdoc
index 661c621..5815a1d 100644
--- a/doc/src/dnd.qdoc
+++ b/doc/src/frameworks-technologies/dnd.qdoc
@@ -40,11 +40,19 @@
****************************************************************************/
/*!
+ \group draganddrop
+ \title Drag And Drop Classes
+
+ \brief Classes dealing with drag and drop and mime type encoding and decoding.
+*/
+
+/*!
\page dnd.html
\title Drag and Drop
- \ingroup architecture
\brief An overview of the drag and drop system provided by Qt.
+ \ingroup frameworks-technologies
+
Drag and drop provides a simple visual mechanism which users can use
to transfer information between and within applications. (In the
literature this is referred to as a "direct manipulation model".) Drag
@@ -60,6 +68,13 @@
\l{Using Drag and Drop with Item Views} and \l{The Graphics View
Framework} documents.
+ \section1 Drag and Drop Classes
+
+ These classes deal with drag and drop and the necessary mime type
+ encoding and decoding.
+
+ \annotatedlist draganddrop
+
\section1 Configuration
The QApplication object provides some properties that are related
@@ -432,115 +447,3 @@
request data in response to e.g. a QDragMoveEvent, an empty
QByteArray is returned.
*/
-
-/*!
- \page porting4-dnd.html
- \title Porting to Qt 4 - Drag and Drop
- \contentspage {Porting Guides}{Contents}
- \previouspage Porting to Qt 4 - Virtual Functions
- \nextpage Porting UI Files to Qt 4
- \ingroup porting
- \brief An overview of the porting process for applications that use drag and drop.
-
- Qt 4 introduces a new set of classes to handle drag and drop operations
- that aim to be easier to use than their counterparts in Qt 3. As a result,
- the way that drag and drop is performed is quite different to the way
- developers of Qt 3 applications have come to expect. In this guide, we
- show the differences between the old and new APIs and indicate where
- applications need to be changed when they are ported to Qt 4.
-
- \tableofcontents
-
- \section1 Dragging
-
- In Qt 3, drag operations are encapsulated by \c QDragObject (see Q3DragObject)
- and its subclasses. These objects are typically constructed on the heap in
- response to mouse click or mouse move events, and ownership of them is
- transferred to Qt so that they can be deleted when the corresponding drag and
- drop operations have been completed. The drag source has no control over how
- the drag and drop operation is performed once the object's
- \l{Q3DragObject::}{drag()} function is called, and it receives no information
- about how the operation ended.
-
- \snippet doc/src/snippets/code/doc_src_dnd.qdoc 0
-
- Similarly, in Qt 4, drag operations are also initiated when a QDrag object
- is constructed and its \l{QDrag::}{exec()} function is called. In contrast,
- these objects are typically constructed on the stack rather than the heap
- since each drag and drop operation is performed synchronously as far as the
- drag source is concerned. One key benefit of this is that the drag source
- can receive information about how the operation ended from the value returned
- by \l{QDrag::}{exec()}.
-
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 2
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 3
- \dots 8
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 4
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 5
-
- A key difference in the above code is the use of the QMimeData class to hold
- information about the data that is transferred. Qt 3 relies on subclasses
- of \c QDragObject to provide support for specific MIME types; in Qt 4, the
- use of QMimeData as a generic container for data makes the relationship
- between MIME type and data more tranparent. QMimeData is described in more
- detail later in this document.
-
- \section1 Dropping
-
- In both Qt 3 and Qt 4, it is possible to prepare a custom widget to accept
- dropped data by enabling the \l{QWidget::}{acceptDrops} property of a widget,
- usually in the widget's constructor. As a result, the widget will receive
- drag enter events that can be handled by its \l{QWidget::}{dragEnterEvent()}
- function.
- As in Qt 3, custom widgets in Qt 4 handle these events by determining
- whether the data supplied by the drag and drop operation can be dropped onto
- the widget. Since the classes used to encapsulate MIME data are different in
- Qt 3 and Qt 4, the exact implementations differ.
-
- In Qt 3, the drag enter event is handled by checking whether each of the
- standard \c QDragObject subclasses can decode the data supplied, and
- indicating success or failure of these checks via the event's
- \l{QDragEnterEvent::}{accept()} function, as shown in this simple example:
-
- \snippet doc/src/snippets/code/doc_src_dnd.qdoc 1
-
- In Qt 4, you can examine the MIME type describing the data to determine
- whether the widget should accept the event or, for common data types, you
- can use convenience functions:
-
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 0
-
- The widget has some control over the type of drag and drop operation to be
- performed. In the above code, the action proposed by the drag source is
- accepted, but
- \l{Drag and Drop#Overriding Proposed Actions}{this can be overridden} if
- required.
-
- In both Qt 3 and Qt 4, it is necessary to accept a given drag event in order
- to receive the corresponding drop event. A custom widget in Qt 3 that can
- accept dropped data in the form of text or images might provide an
- implementation of \l{QWidget::}{dropEvent()} that looks like the following:
-
- \snippet doc/src/snippets/code/doc_src_dnd.qdoc 2
-
- In Qt 4, the event is handled in a similar way:
-
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 1
-
- It is also possible to extract data stored for a particular MIME type if it
- was specified by the drag source.
-
- \section1 MIME Types and Data
-
- In Qt 3, data to be transferred in drag and drop operations is encapsulated
- in instances of \c QDragObject and its subclasses, representing specific
- data formats related to common MIME type and subtypes.
-
- In Qt 4, only the QMimeData class is used to represent data, providing a
- container for data stored in multiple formats, each associated with
- a relevant MIME type. Since arbitrary MIME types can be specified, there is
- no need for an extensive class hierarchy to represent different kinds of
- information. Additionally, QMimeData it provides some convenience functions
- to allow the most common data formats to be stored and retrieved with less
- effort than for arbitrary MIME types.
-*/
diff --git a/doc/src/eventsandfilters.qdoc b/doc/src/frameworks-technologies/eventsandfilters.qdoc
index a67e523..0430bcd 100644
--- a/doc/src/eventsandfilters.qdoc
+++ b/doc/src/frameworks-technologies/eventsandfilters.qdoc
@@ -40,11 +40,25 @@
****************************************************************************/
/*!
+ \group events
+ \title Event Classes
+ \ingroup groups
+
+ \brief Classes used to create and handle events.
+
+ These classes are used to create and handle events.
+
+ For more information see the \link object.html Object model\endlink
+ and \link signalsandslots.html Signals and Slots\endlink.
+*/
+
+/*!
\page eventsandfilters.html
\title Events and Event Filters
- \ingroup architecture
\brief A guide to event handling in Qt.
+ \ingroup frameworks-technologies
+
In Qt, events are objects, derived from the abstract QEvent class,
that represent things that have happened either within an application
or as a result of outside activity that the application needs to know
diff --git a/doc/src/gestures.qdoc b/doc/src/frameworks-technologies/gestures.qdoc
index 49a9ae3..316d74d 100644
--- a/doc/src/gestures.qdoc
+++ b/doc/src/frameworks-technologies/gestures.qdoc
@@ -34,7 +34,7 @@
** 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://www.qtsoftware.com/contact.
+** contact the sales department at http://www.example.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/graphicsview.qdoc b/doc/src/frameworks-technologies/graphicsview.qdoc
index b1c6b6c..8d7ea2c 100644
--- a/doc/src/graphicsview.qdoc
+++ b/doc/src/frameworks-technologies/graphicsview.qdoc
@@ -40,13 +40,18 @@
****************************************************************************/
/*!
+ \group graphicsview-api
+ \title Graphics View Classes
+*/
+
+/*!
\page graphicsview.html
\title The Graphics View Framework
- \ingroup architecture
- \ingroup multimedia
\brief An overview of the Graphics View framework for interactive 2D
graphics.
+ \ingroup frameworks-technologies
+
\keyword Graphics View
\keyword GraphicsView
\keyword Graphics
@@ -193,6 +198,12 @@
\img graphicsview-items.png
+ \section1 Classes in the Graphics View Framework
+
+ These classes provide a framework for creating interactive applications.
+
+ \annotatedlist graphicsview-api
+
\section1 The Graphics View Coordinate System
Graphics View is based on the Cartesian coordinate system; items'
diff --git a/doc/src/implicit-sharing.qdoc b/doc/src/frameworks-technologies/implicit-sharing.qdoc
index cc0b28b..4eb9443 100644
--- a/doc/src/implicit-sharing.qdoc
+++ b/doc/src/frameworks-technologies/implicit-sharing.qdoc
@@ -45,10 +45,14 @@
/*!
\group shared
\title Implicitly Shared Classes
- \ingroup architecture
- \ingroup groups
+*/
+
+/*!
+ \page implicit-sharing.html
+ \title Implicit Sharing
+ \ingroup frameworks-technologies
- \brief Classes that use reference counting for fast copying.
+ \brief Reference counting for fast copying.
\keyword implicit data sharing
\keyword implicit sharing
@@ -98,7 +102,8 @@
Implicit sharing takes place behind the scenes; the programmer
does not need to worry about it. Even in multithreaded
applications, implicit sharing takes place, as explained in
- \l{Threads and Implicit Sharing}.
+ \l{Thread-Support in Qt Modules#Threads and Implicitly Shared Classes}
+ {Threads and Implicitly Shared Classes}.
When implementing your own implicitly shared classes, use the
QSharedData and QSharedDataPointer classes.
@@ -141,4 +146,7 @@
\warning Do not copy an implicitly shared container (QMap,
QVector, etc.) while you are iterating over it using an non-const
\l{STL-style iterator}.
+
+ \keyword implicitly shared classes
+ \annotatedlist shared
*/
diff --git a/doc/src/ipc.qdoc b/doc/src/frameworks-technologies/ipc.qdoc
index 9ca8a0d..f253643 100644
--- a/doc/src/ipc.qdoc
+++ b/doc/src/frameworks-technologies/ipc.qdoc
@@ -40,25 +40,15 @@
****************************************************************************/
/*!
- \group ipc
+ \page ipc.html
\title Inter-Process Communication in Qt
- \ingroup groups
- \ingroup architecture
\brief Inter-Process communication in Qt applications.
+ \ingroup frameworks-technologies
+
Qt provides several ways to implement Inter-Process Communication
(IPC) in Qt applications.
- \section1 D-Bus
-
- The \l{QtDBus} module is a Unix-only library
- you can use to implement IPC using the D-Bus protocol. It extends
- Qt's \l{signalsandslots.html} {Signals and Slots} mechanism to the
- IPC level, allowing a signal emitted by one process to be
- connected to a slot in another process. This \l {Introduction to
- D-Bus} page has detailed information on how to use the \l{QtDBus}
- module.
-
\section1 TCP/IP
The cross-platform \l{QtNetwork} module provides classes that make
@@ -77,6 +67,16 @@
access to resources shared by the system, as well as to communicate
between processes.
+ \section1 D-Bus
+
+ The \l{QtDBus} module is a Unix-only library
+ you can use to implement IPC using the D-Bus protocol. It extends
+ Qt's \l{signalsandslots.html} {Signals and Slots} mechanism to the
+ IPC level, allowing a signal emitted by one process to be
+ connected to a slot in another process. This \l {Introduction to
+ D-Bus} page has detailed information on how to use the \l{QtDBus}
+ module.
+
\section1 Qt COmmunications Protocol (QCOP)
The QCopChannel class implements a protocol for transferring messages
@@ -86,6 +86,4 @@
IPC level, allowing a signal emitted by one process to be
connected to a slot in another process, but unlike QtDBus, QCOP
does not depend on a third party library.
-
*/
-
diff --git a/doc/src/model-view-programming.qdoc b/doc/src/frameworks-technologies/model-view-programming.qdoc
index 13f5e5a..b38edd8 100644
--- a/doc/src/model-view-programming.qdoc
+++ b/doc/src/frameworks-technologies/model-view-programming.qdoc
@@ -40,15 +40,21 @@
****************************************************************************/
/*!
+ \group model-view
+ \title Model/View Classes
+*/
+
+/*!
\page model-view-programming.html
\nextpage An Introduction to Model/View Programming
\startpage index.html Qt Reference Documentation
\title Model/View Programming
- \ingroup architecture
\brief A guide to the extensible model/view architecture used by Qt's
item view classes.
+ \ingroup frameworks-technologies
+
\list
\o \l{An Introduction to Model/View Programming}
\tableofcontents{1 An Introduction to Model/View Programming}
@@ -74,7 +80,14 @@
\tableofcontents{1 Model Subclassing Reference}
\endlist
- See also the list of \l{Model/View Classes}.
+ \keyword Model/View Classes
+ \section1 All Model/View Classes
+
+ These classes use the model/view design pattern in which the
+ underlying data (in the model) is kept separate from the way the data
+ is presented and manipulated by the user (in the view).
+
+ \annotatedlist model-view
\section1 Related Examples
diff --git a/doc/src/phonon.qdoc b/doc/src/frameworks-technologies/phonon.qdoc
index 610ad30..48c09b8 100644
--- a/doc/src/phonon.qdoc
+++ b/doc/src/frameworks-technologies/phonon.qdoc
@@ -42,7 +42,7 @@
/*!
\page phonon-overview.html
\title Phonon Overview
- \ingroup multimedia
+ \ingroup frameworks-technologies
\tableofcontents
@@ -556,88 +556,3 @@
output as a single audio stream.
*/
-/*!
- \namespace Phonon
- \brief The Phonon namespace contains classes and functions for multimedia applications.
- \since 4.4
-
- This namespace contains classes to access multimedia functions for
- audio and video playback. Those classes are not dependent on any specific
- framework, but rather use exchangeable backends to do the work.
-
- See the \l{Phonon Module} page for general information about the
- framework and the \l{Phonon Overview} for an introductory tour of its
- features.
-*/
-
-/*!
- \page phonon-module.html
- \module Phonon
- \title Phonon Module
- \contentspage Qt's Modules
- \previouspage QtXmlPatterns
- \nextpage Qt3Support
- \ingroup modules
-
- \brief The Phonon module contains namespaces and classes for multimedia functionality.
-
- \generatelist{classesbymodule Phonon}
-
- Phonon is a cross-platform multimedia framework that enables the use of
- audio and video content in Qt applications. The \l{Phonon Overview}
- document provides an introduction to the architecture and features included
- in Phonon. The \l{Phonon} namespace contains a list of all classes, functions
- and namespaces provided by the module.
-
- Applications that use Phonon's classes need to
- be configured to be built against the Phonon module.
- The following declaration in a \c qmake project file ensures that
- an application is compiled and linked appropriately:
-
- \snippet doc/src/snippets/code/doc_src_phonon.qdoc 1
-
- The Phonon module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- \section1 Qt Backends
-
- Qt Backends are currently developed for Phonon version 4.1. The Phonon
- project has moved on and introduced new features that the Qt Backends do not
- implement. We have chosen not to document the part of Phonon that we do not
- support. Any class or function not appearing in our documentation can be
- considered unsupported.
-
- \section1 License Information
-
- Qt Commercial Edition licensees that wish to distribute applications that
- use the Phonon module need to be aware of their obligations under the
- GNU Lesser General Public License (LGPL).
-
- Developers using the Open Source Edition can choose to redistribute
- the module under the appropriate version of the GNU LGPL; version 2.1
- for applications and libraries licensed under the GNU GPL version 2,
- or version 3 for applications and libraries licensed under the GNU
- GPL version 2.
-
- \legalese
- This file is part of the KDE project
-
- Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org> \BR
- Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- Contact: Nokia Corporation (qt-info@nokia.com)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License version 2 as published by the Free Software Foundation.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
- \endlegalese
-*/
diff --git a/doc/src/plugins-howto.qdoc b/doc/src/frameworks-technologies/plugins-howto.qdoc
index 2a099bc..4d6896c 100644
--- a/doc/src/plugins-howto.qdoc
+++ b/doc/src/frameworks-technologies/plugins-howto.qdoc
@@ -40,10 +40,27 @@
****************************************************************************/
/*!
+ \group plugins
+ \title Plugin Classes
+ \ingroup groups
+
+ \brief Plugin related classes.
+
+ These classes deal with shared libraries, (e.g. .so and DLL files),
+ and with Qt plugins.
+
+ See the \link plugins-howto.html plugins documentation\endlink.
+
+ See also the \l{ActiveQt framework} for Windows.
+*/
+
+/*!
\page plugins-howto.html
\title How to Create Qt Plugins
- \brief A guide to creating plugins to extend Qt applications and functionality provided by Qt.
- \ingroup howto
+ \brief A guide to creating plugins to extend Qt applications and
+ functionality provided by Qt.
+
+ \ingroup frameworks-technologies
\keyword QT_DEBUG_PLUGINS
\keyword QT_NO_PLUGIN_CHECK
@@ -99,27 +116,6 @@
\row \o QTextCodecPlugin \o \c codecs \o Case Sensitive
\endtable
- But where is the \c{plugins} directory? When the application
- is run, Qt will first treat the application's executable directory
- as the \c{pluginsbase}. For example if the application is in
- \c{C:\Program Files\MyApp} and has a style plugin, Qt will look in
- \c{C:\Program Files\MyApp\styles}. (See
- QCoreApplication::applicationDirPath() for how to find out where
- the application's executable is.) Qt will also look in the
- directory specified by
- QLibraryInfo::location(QLibraryInfo::PluginsPath), which typically
- is located in \c QTDIR/plugins (where \c QTDIR is the directory
- where Qt is installed). If you want Qt to look in additional
- places you can add as many paths as you need with calls to
- QCoreApplication::addLibraryPath(). And if you want to set your
- own path or paths you can use QCoreApplication::setLibraryPaths().
- You can also use a \c qt.conf file to override the hard-coded
- paths that are compiled into the Qt library. For more information,
- see the \l {Using qt.conf} documentation. Yet another possibility
- is to set the \c QT_PLUGIN_PATH environment variable before running
- the application. If set, Qt will look for plugins in the
- paths (separated by the system path separator) specified in the variable.
-
Suppose that you have a new style class called \c MyStyle that you
want to make available as a plugin. The required code is
straightforward, here is the class definition (\c
@@ -150,39 +146,6 @@
virtual functions that must be reimplemented for each type of
plugin.
- Qt applications automatically know which plugins are available,
- because plugins are stored in the standard plugin subdirectories.
- Because of this applications don't require any code to find and load
- plugins, since Qt handles them automatically.
-
- The default directory for plugins is \c{QTDIR/plugins} (where \c
- QTDIR is the directory where Qt is installed), with each type of
- plugin in a subdirectory for that type, e.g. \c styles. If you
- want your applications to use plugins and you don't want to use
- the standard plugins path, have your installation process
- determine the path you want to use for the plugins, and save the
- path, e.g. using QSettings, for the application to read when it
- runs. The application can then call
- QCoreApplication::addLibraryPath() with this path and your
- plugins will be available to the application. Note that the final
- part of the path (e.g., \c styles) cannot be changed.
-
- The normal way to include a plugin with an application is either
- to \l{Static Plugins}{compile it in with the application} or to
- compile it into a dynamic library and use it like any other
- library.
-
- If you want the plugin to be loadable then one approach is to
- create a subdirectory under the application and place the plugin
- in that directory. If you distribute any of the plugins that come
- with Qt (the ones located in the \c plugins directory), you must
- copy the sub-directory under \c plugins where the plugin is
- located to your applications root folder (i.e., do not include the
- \c plugins directory).
-
- For more information about deployment,
- see the \l {Deploying Qt Applications} documentation.
-
The \l{Style Plugin Example} shows how to implement a plugin
that extends the QStylePlugin base class.
@@ -236,110 +199,49 @@
that extends Qt applications. Please note that a QCoreApplication
must have been initialized before plugins can be loaded.
- \section1 Loading and Verifying Plugins Dynamically
-
- When loading plugins, the Qt library does some sanity checking to
- determine whether or not the plugin can be loaded and used. This
- provides the ability to have multiple versions and configurations of
- the Qt library installed side by side.
-
- \list
- \o Plugins linked with a Qt library that has a higher version number
- will not be loaded by a library with a lower version number.
-
- \br
- \bold{Example:} Qt 4.3.0 will \e{not} load a plugin built with Qt 4.3.1.
-
- \o Plugins linked with a Qt library that has a lower major version
- number will not be loaded by a library with a higher major version
- number.
-
- \br
- \bold{Example:} Qt 4.3.1 will \e{not} load a plugin built with Qt 3.3.1.
- \br
- \bold{Example:} Qt 4.3.1 will load plugins built with Qt 4.3.0 and Qt 4.2.3.
-
- \o The Qt library and all plugins are built using a \e {build
- key}. The build key in the Qt library is examined against the build
- key in the plugin, and if they match, the plugin is loaded. If the
- build keys do not match, then the Qt library refuses to load the
- plugin.
-
- \br \bold{Rationale:} See the \l{#The Build Key}{The Build Key} section below.
- \endlist
-
- When building plugins to extend an application, it is important to ensure
- that the plugin is configured in the same way as the application. This means
- that if the application was built in release mode, plugins should be built
- in release mode, too.
-
- If you configure Qt to be built in both debug and release modes,
- but only build applications in release mode, you need to ensure that your
- plugins are also built in release mode. By default, if a debug build of Qt is
- available, plugins will \e only be built in debug mode. To force the
- plugins to be built in release mode, add the following line to the plugin's
- project file:
+ \section1 Locating Plugins
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 3
-
- This will ensure that the plugin is compatible with the version of the library
- used in the application.
-
- \section2 The Build Key
+ Qt applications automatically know which plugins are available,
+ because plugins are stored in the standard plugin subdirectories.
+ Because of this applications don't require any code to find and load
+ plugins, since Qt handles them automatically.
- When loading plugins, Qt checks the build key of each plugin against its
- own configuration to ensure that only compatible plugins are loaded; any
- plugins that are configured differently are not loaded.
+ During development, the directory for plugins is \c{QTDIR/plugins}
+ (where \c QTDIR is the directory where Qt is installed), with each
+ type of plugin in a subdirectory for that type, e.g. \c styles. If
+ you want your applications to use plugins and you don't want to use
+ the standard plugins path, have your installation process
+ determine the path you want to use for the plugins, and save the
+ path, e.g. using QSettings, for the application to read when it
+ runs. The application can then call
+ QCoreApplication::addLibraryPath() with this path and your
+ plugins will be available to the application. Note that the final
+ part of the path (e.g., \c styles) cannot be changed.
- The build key contains the following information:
- \list
- \o Architecture, operating system and compiler.
-
- \e {Rationale:}
- In cases where different versions of the same compiler do not
- produce binary compatible code, the version of the compiler is
- also present in the build key.
-
- \o Configuration of the Qt library. The configuration is a list
- of the missing features that affect the available API in the
- library.
-
- \e {Rationale:}
- Two different configurations of the same version of
- the Qt library are not binary compatible. The Qt library that
- loads the plugin uses the list of (missing) features to
- determine if the plugin is binary compatible.
-
- \e {Note:} There are cases where a plugin can use features that are
- available in two different configurations. However, the
- developer writing plugins would need to know which features are
- in use, both in their plugin and internally by the utility
- classes in Qt. The Qt library would require complex feature
- and dependency queries and verification when loading plugins.
- Requiring this would place an unnecessary burden on the developer, and
- increase the overhead of loading a plugin. To reduce both
- development time and application runtime costs, a simple string
- comparision of the build keys is used.
-
- \o Optionally, an extra string may be specified on the configure
- script command line.
-
- \e {Rationale:}
- When distributing binaries of the Qt library with an
- application, this provides a way for developers to write
- plugins that can only be loaded by the library with which the
- plugins were linked.
- \endlist
+ If you want the plugin to be loadable then one approach is to
+ create a subdirectory under the application and place the plugin
+ in that directory. If you distribute any of the plugins that come
+ with Qt (the ones located in the \c plugins directory), you must
+ copy the sub-directory under \c plugins where the plugin is
+ located to your applications root folder (i.e., do not include the
+ \c plugins directory).
- For debugging purposes, it is possible to override the run-time build key
- checks by configuring Qt with the \c QT_NO_PLUGIN_CHECK preprocessor macro
- defined.
+ For more information about deployment,
+ see the \l {Deploying Qt Applications} and \l {Deploying Plugins}
+ documentation.
\section1 Static Plugins
+ The normal and most flexible way to include a plugin with an
+ application is to compile it into a dynamic library that is shipped
+ separately, and detected and loaded at runtime.
+
Plugins can be linked statically against your application. If you
build the static version of Qt, this is the only option for
- including Qt's predefined plugins.
+ including Qt's predefined plugins. Using static plugins makes the
+ deployment less error-prone, but has the disadvantage that no
+ functionality from plugins can be added without a complete rebuild
+ and redistribution of the application.
When compiled as a static library, Qt provides the following
static plugins:
@@ -406,65 +308,4 @@
defined.
\sa QPluginLoader, QLibrary, {Plug & Paint Example}
-
- \section1 The Plugin Cache
-
- In order to speed up loading and validation of plugins, some of
- the information that is collected when plugins are loaded is cached
- through QSettings. This includes information about whether or not
- a plugin was successfully loaded, so that subsequent load operations
- don't try to load an invalid plugin. However, if the "last modified"
- timestamp of a plugin has changed, the plugin's cache entry is
- invalidated and the plugin is reloaded regardless of the values in
- the cache entry, and the cache entry itself is updated with the new
- result.
-
- This also means that the timestamp must be updated each time the
- plugin or any dependent resources (such as a shared library) is
- updated, since the dependent resources might influence the result
- of loading a plugin.
-
- Sometimes, when developing plugins, it is necessary to remove entries
- from the plugin cache. Since Qt uses QSettings to manage the plugin
- cache, the locations of plugins are platform-dependent; see
- \l{QSettings#Platform-Specific Notes}{the QSettings documentation}
- for more information about each platform.
-
- For example, on Windows the entries are stored in the registry, and the
- paths for each plugin will typically begin with either of these two strings:
-
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 6
-
- \section1 Debugging Plugins
-
- There are a number of issues that may prevent correctly-written plugins from
- working with the applications that are designed to use them. Many of these
- are related to differences in the way that plugins and applications have been
- built, often arising from separate build systems and processes.
-
- The following table contains descriptions of the common causes of problems
- developers experience when creating plugins:
-
- \table
- \header \o Problem \o Cause \o Solution
- \row \o Plugins sliently fail to load even when opened directly by the
- application. \QD shows the plugin libraries in its
- \gui{Help|About Plugins} dialog, but no plugins are listed under each
- of them.
- \o The application and its plugins are built in different modes.
- \o Either share the same build information or build the plugins in both
- debug and release modes by appending the \c debug_and_release to
- the \l{qmake Variable Reference#CONFIG}{CONFIG} variable in each of
- their project files.
- \row \o A valid plugin that replaces an invalid (or broken) plugin fails to load.
- \o The entry for the plugin in the plugin cache indicates that the original
- plugin could not be loaded, causing Qt to ignore the replacement.
- \o Either ensure that the plugin's timestamp is updated, or delete the
- entry in the \l{#The Plugin Cache}{plugin cache}.
- \endtable
-
- You can also use the \c QT_DEBUG_PLUGINS environment variable to obtain
- diagnostic information from Qt about each plugin it tries to load. Set this
- variable to a non-zero value in the environment from which your application is
- launched.
*/
diff --git a/doc/src/qthelp.qdoc b/doc/src/frameworks-technologies/qthelp.qdoc
index 3cffa39..2529631 100644
--- a/doc/src/qthelp.qdoc
+++ b/doc/src/frameworks-technologies/qthelp.qdoc
@@ -40,29 +40,36 @@
****************************************************************************/
/*!
- \module QtHelp
- \title QtHelp Module
- \contentspage Qt's Modules
- \previouspage QtUiTools
- \nextpage QtAssistant
- \ingroup modules
+ \group helpsystem
+ \title Help System
+ \ingroup groups
- \brief The QtHelp module provides classes for integrating
- online documentation in applications.
+ \brief Classes used to provide online-help for applications.
- To include the definitions of the module's classes, use the
- following directive:
+ \keyword help system
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 0
+ These classes provide for all forms of online-help in your application,
+ with three levels of detail:
- To link against the module, add this line to your \l qmake \c
- .pro file:
+ \list 1
+ \o Tool Tips and Status Bar message - flyweight help, extremely brief,
+ entirely integrated in the user interface, requiring little
+ or no user interaction to invoke.
+ \o What's This? - lightweight, but can be
+ a three-paragraph explanation.
+ \o Online Help - can encompass any amount of information,
+ but is typically slower to call up, somewhat separated
+ from the user's work, and often users feel that using online
+ help is a digression from their real task.
+ \endlist
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 1
+*/
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
- users.
+/*!
+ \page qthelp-framework.html
+ \title The Qt Help Framework
+ \brief Integrating Documentation in Applications
+ \ingroup frameworks-technologies
\section1 Topics
@@ -229,41 +236,6 @@
For further information on how to use the API, have a look at
the QHelpEngine class reference.
-
- \section1 License Information
-
- The QtHelp module uses the CLucene indexing library to provide full-text
- searching capabilities for Qt Assistant and applications that use the
- features of QtHelp.
-
- Qt Commercial Edition licensees that wish to distribute applications that
- use these features of the QtHelp module need to be aware of their
- obligations under the GNU Lesser General Public License (LGPL).
-
- Developers using the Open Source Edition can choose to redistribute
- the module under the appropriate version of the GNU LGPL; version 2.1
- for applications and libraries licensed under the GNU GPL version 2,
- or version 3 for applications and libraries licensed under the GNU
- GPL version 3.
-
- \legalese
- Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team \BR
- Changes are Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- \endlegalese
*/
/*!
diff --git a/doc/src/frameworks-technologies/qundo.qdoc b/doc/src/frameworks-technologies/qundo.qdoc
new file mode 100644
index 0000000..7b6cae7
--- /dev/null
+++ b/doc/src/frameworks-technologies/qundo.qdoc
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page qundo.html
+ \title Overview of Qt's Undo Framework
+ \keyword Undo framework
+ \ingroup frameworks-technologies
+
+ \section1 Introduction
+
+ Qt's Undo Framework is an implementation of the Command pattern, for
+ implementing undo/redo functionality in applications.
+
+ The Command pattern is based on the idea that all editing in
+ an application is done by creating instances of command objects.
+ Command objects apply changes to the document and are stored
+ on a command stack. Furthermore, each command knows how to undo its
+ changes to bring the document back to its previous state. As long
+ as the application only uses command objects to change the state of
+ the document, it is possible to undo a sequence of commands by
+ traversing the stack downwards and calling undo
+ on each command in turn. It is also possible to redo a sequence of
+ commands by traversing the stack upwards and calling
+ redo on each command.
+
+ \section1 Classes
+
+ The framework consists of four classes:
+
+ \list
+ \i \l QUndoCommand is the base class of all commands stored on an
+ undo stack. It can apply (redo) or undo a single change in the document.
+ \i \l QUndoStack is a list of QUndoCommand objects. It contains all the
+ commands executed on the document and can roll the document's state
+ backwards or forwards by undoing or redoing them.
+ \i \l QUndoGroup is a group of undo stacks. It is useful when an application
+ contains more than one undo stack, typically one for each opened
+ document. QUndoGroup provides a single pair of undo/redo slots for all
+ the stacks in the group. It forwards undo and redo requests to
+ the active stack, which is the stack associated with the document that
+ is currently being edited by the user.
+ \i \l QUndoView is a widget which shows the contents of an undo stack. Clicking
+ on a command in the view rolls the document's state backwards or
+ forwards to that command.
+ \endlist
+
+ \section1 Concepts
+
+ The following concepts are supported by the framework:
+
+ \list
+ \i \bold{Clean state:} Used to signal when the document enters and leaves a
+ state that has been saved to disk. This is typically used to disable or
+ enable the save actions, and to update the document's title bar.
+ \i \bold{Command compression:} Used to compress sequences of commands into a
+ single command.
+ For example: In a text editor, the commands that insert individual
+ characters into the document can be compressed into a single command that
+ inserts whole sections of text. These bigger changes are more convenient
+ for the user to undo and redo.
+ \i \bold{Command macros:} A sequence of commands, all of which are undone or
+ redone in one step.
+ These simplify the task of writing an application, since a set of simpler
+ commands can be composed into more complex commands. For example, a command
+ that moves a set of selected objects in a document can be created by
+ combining a set of commands, each of which moves a single object.
+ \endlist
+
+ QUndoStack provides convenient undo and redo QAction objects that
+ can be inserted into a menu or a toolbar. The text properties of these
+ actions always reflect what command will be undone or redone when
+ they are triggered. Similarly, QUndoGroup provides undo and redo actions
+ that always behave like the undo and redo actions of the active stack.
+*/
diff --git a/doc/src/frameworks-technologies/richtext.qdoc b/doc/src/frameworks-technologies/richtext.qdoc
new file mode 100644
index 0000000..7125b81
--- /dev/null
+++ b/doc/src/frameworks-technologies/richtext.qdoc
@@ -0,0 +1,1226 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \group richtext-processing
+ \title Rich Text Processing APIs
+*/
+
+/*!
+ \page richtext.html
+ \title Rich Text Processing
+ \brief An overview of Qt's rich text processing, editing and display features.
+
+ \ingroup frameworks-technologies
+
+ \nextpage Rich Text Document Structure
+
+ The Scribe framework provides a set of classes for reading and manipulating
+ structured rich text documents. Unlike previous rich text support in Qt, the
+ new classes are centered around the QTextDocument class rather than raw
+ textual information. This enables the developer to create and modify
+ structured rich text documents without having to prepare content in an
+ intermediate markup format.
+
+ The information within a document can be accessed via two complementary
+ interfaces: A cursor-based interface is used for editing, and a read-only
+ hierarchical interface provides a high level overview of the document
+ structure. The main advantage of the cursor-based interface is that the
+ text can be edited using operations that mimic a user's interaction with
+ an editor, without losing the underlying structure of the document. The
+ read-only hierarchical interface is most useful when performing operations
+ such as searching and document export.
+
+ This document is divided up into chapters for convenient reference:
+
+ \list
+ \i \l{Rich Text Document Structure} outlines
+ the different kinds of elements in a QTextDocument, and describes how
+ they are arranged in a document structure.
+ \i \l{The QTextCursor Interface} explains how rich
+ text documents can be edited using the cursor-based interface.
+ \i \l{Document Layouts} briefly explains the role of document layouts.
+ \i \l{Common Rich Text Editing Tasks} examines some
+ common tasks that involve reading or manipulating rich text documents.
+ \i \l{Advanced Rich Text Processing} examines advanced rich text editing tasks.
+ \i \l{Supported HTML Subset} lists the HTML tags supported by QTextDocument.
+ \endlist
+
+ \section1 Rich Text Processing APIs
+
+ Qt provides an extensive collection of classes for parsing, rendering
+ manipulating and editing rich text.
+
+ \annotatedlist richtext-processing
+*/
+
+/*!
+ \page richtext-structure.html
+ \contentspage richtext.html Contents
+ \previouspage Rich Text Processing
+ \nextpage The QTextCursor Interface
+
+ \title Rich Text Document Structure
+
+ \tableofcontents
+
+ Text documents are represented by the QTextDocument class, which
+ contains information about the document's internal representation, its
+ structure, and keeps track of modifications to provide undo/redo
+ facilities.
+
+ The structured representation of a text document presents its contents as
+ a hierarchy of text blocks, frames, tables, and other objects. These provide
+ a logical structure to the document and describe how their contents will be
+ displayed. Generally, frames and tables are used to group other
+ structures while text blocks contain the actual textual information.
+
+ New elements are created and inserted into the document programmatically
+ \l{richtext-cursor.html}{with a QTextCursor} or by using an editor
+ widget, such as QTextEdit. Elements can be given a particular format when
+ they are created; otherwise they take the cursor's current format for the
+ element.
+
+ \table
+ \row
+ \i \inlineimage richtext-document.png
+ \i \bold{Basic structure}
+
+ The "top level" of a document might be populated in the way shown.
+ Each document always contains a root frame, and this always contains
+ at least one text block.
+
+ For documents with some textual content, the root
+ frame usually contains a sequence of blocks and other elements.
+
+ Sequences of frames and tables are always separated by text blocks in a
+ document, even if the text blocks contain no information. This ensures that
+ new elements can always be inserted between existing structures.
+ \endtable
+
+ In this chapter, we look at each of the structural elements
+ used in a rich text document, outline their features and uses, and show
+ how to examine their contents. Document editing is described in
+ \l{richtext-cursor.html}{The QTextCursor Interface}.
+
+ \section1 Rich Text Documents
+
+ QTextDocument objects contain all the information required to construct
+ rich text documents.
+ Text documents can be accessed in two complementary ways: as a linear
+ buffer for editors to use, and as an object hierarchy that is useful to
+ layout engines.
+ In the hierarchical document model, objects generally correspond to
+ visual elements such as frames, tables, and lists. At a lower level,
+ these elements describe properties such as the text style and alignment.
+ The linear representation of the document is used for editing and
+ manipulation of the document's contents.
+
+ Although QTextEdit makes it easy to display and edit rich text, documents
+ can also be used independently of any editor widget, for example:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 0
+
+ Alternatively, they can be extracted from an existing editor:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 1
+
+ This flexibility enables applications to handle multiple rich text
+ documents without the overhead of multiple editor widgets, or requiring
+ documents to be stored in some intermediate format.
+
+ An empty document contains a root frame which itself contains a single
+ empty text block. Frames provide logical separation between parts of the document, but
+ also have properties that determine how they will appear when rendered.
+ A table is a specialized type of frame that consists of a number of
+ cells, arranged into rows and columns, each of which can contain
+ further structure and text. Tables provide management and layout
+ features that allow flexible configurations of cells to be created.
+
+ Text blocks contain text fragments, each of which specifies text and
+ character format information. Textual properties are defined both at
+ the character level and at the block level. At the character level,
+ properties such as font family, text color, and font weight can be
+ specified. The block level properties control the higher level
+ appearance and behavior of the text, such as the direction of text
+ flow, alignment, and background color.
+
+ The document structure is not manipulated directly. Editing is
+ performed through a cursor-based interface.
+ The \l{richtext-cursor.html}{text cursor interface}
+ automatically inserts new document elements into the root frame, and
+ ensures that it is padded with empty blocks where necessary.
+
+ We obtain the root frame in the following manner:
+
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.h 0
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 0
+
+ When navigating the document structure, it is useful to begin at the
+ root frame because it provides access to the entire document structure.
+
+
+ \section1 Document Elements
+
+ Rich text documents usually consist of common elements such as paragraphs,
+ frames, tables, and lists. These are represented in a QTextDocument
+ by the QTextBlock, QTextFrame, QTextTable, and QTextList classes.
+ Unlike the other elements in a document, images are represented by
+ specially formatted text fragments. This enables them to be placed
+ formatted inline with the surrounding text.
+
+ The basic structural building blocks in documents are QTextBlock and
+ QTextFrame. Blocks themselves contain fragments of rich text
+ (QTextFragment), but these do not directly influence the high level
+ structure of a document.
+
+ Elements which can group together other document elements are typically
+ subclasses of QTextObject, and fall into two categories: Elements that
+ group together text blocks are subclasses of QTextBlockGroup, and those
+ that group together frames and other elements are subclasses of QTextFrame.
+
+ \section2 Text Blocks
+
+ Text blocks are provided by the QTextBlock class.
+
+ Text blocks group together fragments of text with different character formats,
+ and are used to represent paragraphs in the document. Each block
+ typically contains a number of text fragments with different styles.
+ Fragments are created when text is inserted into the document, and more
+ of them are added when the document is edited. The document splits, merges,
+ and removes fragments to efficiently represent the different styles
+ of text in the block.
+
+ The fragments within a given block can be examined by using a
+ QTextBlock::iterator to traverse the block's internal structure:
+
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 3
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 5
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 6
+
+ Blocks are also used to represent list items. As a result, blocks can
+ define their own character formats which contain information about
+ block-level decoration, such as the type of bullet points used for
+ list items. The formatting for the block itself is described by the
+ QTextBlockFormat class, and describes properties such as text alignment,
+ indentation, and background color.
+
+ Although a given document may contain complex structures, once we have a
+ reference to a valid block in the document, we can navigate between each
+ of the text blocks in the order in which they were written:
+
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 0
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 1
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 2
+
+ This method is useful for when you want to extract just the rich text from a
+ document because it ignores frames, tables, and other types of structure.
+
+ QTextBlock provides comparison operators that make it easier to manipulate
+ blocks: \l{QTextBlock::operator==()}{operator==()} and
+ \l{QTextBlock::operator!=()}{operator!=()} are used to test whether two
+ blocks are the same, and \l{QTextBlock::operator<()}{operator<()} is used
+ to determine which one occurs first in a document.
+
+ \section2 Frames
+
+ Frames are provided by the QTextFrame class.
+
+ Text frames group together blocks of text and child frames, creating
+ document structures that are larger than paragraphs. The format of a frame
+ specifies how it is rendered and positioned on the page. Frames are
+ either inserted into the text flow, or they float on the left or right
+ hand side of the page.
+ Each document contains a root frame that contains all the other document
+ elements. As a result, all frames except the root frame have a parent
+ frame.
+
+ Since text blocks are used to separate other document elements, each
+ frame will always contain at least one text block, and zero or more
+ child frames. We can inspect the contents of a frame by using a
+ QTextFrame::iterator to traverse the frame's child elements:
+
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 1
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 2
+
+ Note that the iterator selects both frames and blocks, so it is necessary
+ to check which it is referring to. This allows us to navigate the document
+ structure on a frame-by-frame basis yet still access text blocks if
+ required. Both the QTextBlock::iterator and QTextFrame::iterator classes
+ can be used in complementary ways to extract the required structure from
+ a document.
+
+ \section2 Tables
+
+ Tables are provided by the QTextTable class.
+
+ Tables are collections of cells that are arranged in rows and columns.
+ Each table cell is a document element with its own character format, but it
+ can also contain other elements, such as frames and text blocks. Table cells
+ are automatically created when the table is constructed, or when extra rows
+ or columns are added. They can also be moved between tables.
+
+ QTextTable is a subclass of QTextFrame, so tables are treated like frames
+ in the document structure. For each frame that we encounter in the
+ document, we can test whether it represents a table, and deal with it in a
+ different way:
+
+ \snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 0
+ \snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 1
+
+ The cells within an existing table can be examined by iterating through
+ the rows and columns.
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 9
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 10
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 11
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 12
+
+
+ \section2 Lists
+
+ Lists are provided by the QTextList class.
+
+ Lists are sequences of text blocks that are formatted in the usual way, but
+ which also provide the standard list decorations such as bullet points and
+ enumerated items. Lists can be nested, and will be indented if the list's
+ format specifies a non-zero indentation.
+
+ We can refer to each list item by its index in the list:
+
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 0
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 1
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 2
+
+ Since QTextList is a subclass of QTextBlockGroup, it does not group the
+ list items as child elements, but instead provides various functions for
+ managing them. This means that any text block we find when traversing a
+ document may actually be a list item. We can ensure that list items are
+ correctly identified by using the following code:
+
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 3
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 4
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 5
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 6
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 7
+
+
+ \section2 Images
+
+ Images in QTextDocument are represented by text fragments that reference
+ external images via the resource mechanism. Images are created using the
+ cursor interface, and can be modified later by changing the character
+ format of the image's text fragment:
+
+ \snippet doc/src/snippets/textdocument-imageformat/main.cpp 0
+ \snippet doc/src/snippets/textdocument-imageformat/main.cpp 1
+ \snippet doc/src/snippets/textdocument-imageformat/main.cpp 2
+
+ The fragment that represents the image can be found by iterating over
+ the fragments in the text block that contains the image.
+*/
+
+/*!
+ \page richtext-cursor.html
+ \contentspage richtext.html Contents
+ \previouspage Rich Text Document Structure
+ \nextpage Document Layouts
+
+ \title The QTextCursor Interface
+
+ \tableofcontents
+
+ Documents can be edited via the interface provided by the QTextCursor
+ class; cursors are either created using a constructor or obtained from
+ an editor widget. The cursor is used to perform editing operations that
+ correspond exactly to those the user is able to make themselves in an
+ editor. As a result, information about the document structure is also
+ available through the cursor, and this allows the structure to be
+ modified. The use of a cursor-oriented interface for editing makes the
+ process of writing a custom editor simpler for developers, since the
+ editing operations can be easily visualized.
+
+ The QTextCursor class also maintains information about any text it
+ has selected in the document, again following a model that is
+ conceptually similar to the actions made by the user to select text
+ in an editor.
+
+ Rich text documents can have multiple cursors
+ associated with them, and each of these contains information about their
+ position in the document and any selections that they may hold. This
+ cursor-based paradigm makes common operations, such as cutting and pasting
+ text, simple to implement programmatically, yet it also allows more complex
+ editing operations to be performed on the document.
+
+ This chapter describes most of the common editing operations that you
+ will need to perform using a cursor, from basic insertion of text and
+ document elements to more complex manipulation of document structures.
+
+ \section1 Cursor-Based Editing
+
+ At the simplest level, text documents are made up of a string of characters,
+ marked up in some way to represent the block structure of the text within the
+ document. QTextCursor provides a cursor-based interface that allows the
+ contents of a QTextDocument to be manipulated at the character level. Since
+ the elements (blocks, frames, tables, etc.) are also encoded in the character
+ stream, the document structure can itself be changed by the cursor.
+
+ The cursor keeps track of its location within its parent document, and can
+ report information about the surrounding structure, such as the enclosing
+ text block, frame, table, or list. The formats of the enclosing structures
+ can also be directly obtained through the cursor.
+
+ \section2 Using a Cursor
+
+ The main use of a cursor is to insert or modify text within a block.
+ We can use a text editor's cursor to do this:
+
+ \snippet doc/src/snippets/textblock-formats/main.cpp 0
+
+ Alternatively, we can obtain a cursor directly from a document:
+
+ \snippet doc/src/snippets/textdocument-images/main.cpp 0
+
+ The cursor is positioned at the start of the document so that we can write
+ into the first (empty) block in the document.
+
+ \section2 Grouping Cursor Operations
+
+ A series of editing operations can be packaged together so that they can
+ be replayed, or undone together in a single action. This is achieved by
+ using the \c beginEditBlock() and \c endEditBlock() functions in the
+ following way, as in the following example where we select the word that
+ contains the cursor:
+
+ \snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 0
+
+ If editing operations are not grouped, the document automatically records
+ the individual operations so that they can be undone later. Grouping
+ operations into larger packages can make editing more efficient both for
+ the user and for the application, but care has to be taken not to group too
+ many operations together as the user may want find-grained control over the
+ undo process.
+
+ \section2 Multiple Cursors
+
+ Multiple cursors can be used to simultaneously edit the same document,
+ although only one will be visible to the user in a QTextEdit widget.
+ The QTextDocument ensures that each cursor writes text correctly and
+ does not interfere with any of the others.
+
+ \omit
+ \snippet doc/src/snippets/textdocument-cursors/main.cpp 0
+ \snippet doc/src/snippets/textdocument-cursors/main.cpp 1
+ \endomit
+
+ \section1 Inserting Document Elements
+
+ QTextCursor provides several functions that can be used to change the
+ structure of a rich text document. Generally, these functions allow
+ document elements to be created with relevant formatting information,
+ and they are inserted into the document at the cursor's position.
+
+ The first group of functions insert block-level elements, and update the
+ cursor position, but they do not return the element that was inserted:
+
+ \list
+ \i \l{QTextCursor::insertBlock()}{insertBlock()} inserts a new text block
+ (paragraph) into a document at the cursor's position, and moves the
+ cursor to the start of the new block.
+ \i \l{QTextCursor::insertFragment()}{insertFragment()} inserts an existing
+ text fragment into a document at the cursor's position.
+ \i \l{QTextCursor::insertImage()}{insertImage()} inserts an image into a
+ document at the cursor's position.
+ \i \l{QTextCursor::insertText()}{insertText()} inserts text into the
+ document at the cursor's position.
+ \endlist
+
+ You can examine the contents of the element that was inserted through the
+ cursor interface.
+
+ The second group of functions insert elements that provide structure to
+ the document, and return the structure that was inserted:
+
+ \list
+ \i \l{QTextCursor::insertFrame()}{insertFrame()} inserts a frame into the
+ document \e after the cursor's current block, and moves the cursor to
+ the start of the empty block in the new frame.
+ \i \l{QTextCursor::insertList()}{insertList()} inserts a list into the
+ document at the cursor's position, and moves the cursor to the start
+ of the first item in the list.
+ \i \l{QTextCursor::insertTable()}{insertTable()} inserts a table into
+ the document \e after the cursor's current block, and moves the cursor
+ to the start of the block following the table.
+ \endlist
+
+ These elements either contain or group together other elements in the
+ document.
+
+ \section2 Text and Text Fragments
+
+ Text can be inserted into the current block in the current character
+ format, or in a custom format that is specified with the text:
+
+ \snippet doc/src/snippets/textdocument-charformats/main.cpp 0
+
+ Once the character format has been used with a cursor, that format becomes
+ the default format for any text inserted with that cursor until another
+ character format is specified.
+
+ If a cursor is used to insert text without specifying a character format,
+ the text will be given the character format used at that position in the
+ document.
+
+ \section2 Blocks
+
+ Text blocks are inserted into the document with the
+ \l{QTextCursor::insertBlock()}{insertBlock()} function.
+
+ \snippet doc/src/snippets/textblock-formats/main.cpp 1
+
+ The cursor is positioned at the start of the new block.
+
+ \section2 Frames
+
+ Frames are inserted into a document using the cursor, and will be placed
+ within the cursor's current frame \e after the current block.
+ The following code shows how a frame can be inserted between two text
+ blocks in a document's root frame. We begin by finding the cursor's
+ current frame:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 0
+
+ We insert some text in this frame then set up a frame format for the
+ child frame:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 1
+
+ The frame format will give the frame an external margin of 32 pixels,
+ internal padding of 8 pixels, and a border that is 4 pixels wide.
+ See the QTextFrameFormat documentation for more information about
+ frame formats.
+
+ The frame is inserted into the document after the preceding text:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 2
+
+ We add some text to the document immediately after we insert the frame.
+ Since the text cursor is positioned \e{inside the frame} when it is inserted
+ into the document, this text will also be inserted inside the frame.
+
+ Finally, we position the cursor outside the frame by taking the last
+ available cursor position inside the frame we recorded earlier:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 3
+
+ The text that we add last is inserted after the child frame in the
+ document. Since each frame is padded with text blocks, this ensures that
+ more elements can always be inserted with a cursor.
+
+ \section2 Tables
+
+ Tables are inserted into the document using the cursor, and will be
+ placed within the cursor's current frame \e after the current block:
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 0
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 3
+
+ Tables can be created with a specific format that defines the overall
+ properties of the table, such as its alignment, background color, and
+ the cell spacing used. It can also determine the constraints on each
+ column, allowing each of them to have a fixed width, or resize according
+ to the available space.
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 2
+
+ The columns in the table created above will each take up a certain
+ percentage of the available width. Note that the table format is
+ optional; if you insert a table without a format, some sensible
+ default values will be used for the table's properties.
+
+ Since cells can contain other document elements, they too can be
+ formatted and styled as necessary.
+
+ Text can be added to the table by navigating to each cell with the cursor
+ and inserting text.
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 4
+
+ We can create a simple timetable by following this approach:
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 5
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 6
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 7
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 8
+
+ \section2 Lists
+
+ Lists of block elements can be automatically created and inserted into the
+ document at the current cursor position. Each list that is created in this
+ way requires a list format to be specified:
+
+ \snippet doc/src/snippets/textdocument-lists/mainwindow.cpp 0
+
+ The above code first checks whether the cursor is within an existing list
+ and, if so, gives the list format for the new list a suitable level of
+ indentation. This allows nested lists to be created with increasing
+ levels of indentation. A more sophisticated implementation would also use
+ different kinds of symbol for the bullet points in each level of the list.
+
+ \section2 Images
+
+ Inline images are added to documents through the cursor in the usual manner.
+ Unlike many other elements, all of the image properties are specified by the
+ image's format. This means that a QTextImageFormat object has to be
+ created before an image can be inserted:
+
+ \snippet doc/src/snippets/textdocument-images/main.cpp 1
+
+ The image name refers to an entry in the application's resource file.
+ The method used to derive this name is described in
+ \l{resources.html}{The Qt Resource System}.
+
+ \section1 Examples
+
+ Rich text is stored in text documents that can either be created by
+ importing HTML from an external source, or generated using a QTextCursor.
+
+ \section2 Manipulating Rich Text
+
+ The easiest way to use a rich text document is through
+ the QTextEdit class, providing an editable view onto a document. The code
+ below imports HTML into a document, and displays the document using a
+ text edit widget.
+
+ \snippet doc/src/snippets/scribe-overview/main.cpp 1
+
+ You can retrieve the document from the text edit using the
+ document() function. The document can then be edited programmatically
+ using the QTextCursor class. This class is modeled after a screen
+ cursor, and editing operations follow the same semantics. The following
+ code changes the first line of the document to a bold font, leaving all
+ other font properties untouched. The editor will be automatically
+ updated to reflect the changes made to the underlying document data.
+
+ \snippet doc/src/snippets/scribe-overview/main.cpp 0
+
+ Note that the cursor was moved from the start of the first line to the
+ end, but that it retained an anchor at the start of the line. This
+ demonstrates the cursor-based selection facilities of the
+ QTextCursor class.
+
+ \section2 Generating a Calendar
+
+ Rich text can be generated very quickly using the cursor-based
+ approach. The following example shows a simple calendar in a
+ QTextEdit widget with bold headers for the days of the week:
+
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 0
+ \codeline
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 1
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 2
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 3
+
+ The above example demonstrates how simple it is to quickly generate new
+ rich text documents using a minimum amount of code. Although we have
+ generated a crude fixed-pitch calendar to avoid quoting too much code,
+ Scribe provides much more sophisticated layout and formatting features.
+*/
+
+/*!
+ \page richtext-layouts.html
+ \contentspage richtext.html Contents
+ \previouspage The QTextCursor Interface
+ \nextpage Common Rich Text Editing Tasks
+
+ \title Document Layouts
+
+ \tableofcontents
+
+ The layout of a document is only relevant when it is to be displayed on
+ a device, or when some information is requested that requires a visual
+ representation of the document. Until this occurs, the document does
+ not need to be formatted and prepared for a device.
+
+ \section1 Overview
+
+ Each document's layout is managed by a subclass of the
+ QAbstractTextDocumentLayout class. This class provides a common
+ interface for layout and rendering engines. The default rendering
+ behavior is currently implemented in a private class. This approach
+ makes it possible to create custom layouts, and provides the
+ mechanism used when preparing pages for printing or exporting to
+ Portable Document Format (PDF) files.
+
+ \section1 Example - Shaped Text Layout
+
+ Sometimes it is important to be able to format plain text within an
+ irregularly-shaped region, perhaps when rendering a custom widget, for
+ example. Scribe provides generic features, such as those provided by
+ the QTextLayout class, to help developers perform word-wrapping and
+ layout tasks without the need to create a document first.
+
+ \img plaintext-layout.png
+
+ Formatting and drawing a paragraph of plain text is straightforward.
+ The example below will lay out a paragraph of text, using a single
+ font, around the right hand edge of a circle.
+
+ \snippet doc/src/snippets/plaintextlayout/window.cpp 0
+
+ We create a text layout, specifying the text string we want to display
+ and the font to use. We ensure that the text we supplied is formatted
+ correctly by obtaining text lines from the text format, and wrapping
+ the remaining text using the available space. The lines are positioned
+ as we move down the page.
+
+ The formatted text can be drawn onto a paint device; in the above code,
+ the text is drawn directly onto a widget.
+ */
+
+ /*!
+ \page richtext-common-tasks.html
+ \contentspage richtext.html Contents
+ \previouspage Document Layouts
+ \nextpage Advanced Rich Text Processing
+
+ \title Common Rich Text Editing Tasks
+
+ \tableofcontents
+
+ There are a number of tasks that are often performed by developers
+ when editing and processing text documents using Qt. These include the use
+ of display widgets such as QTextBrowser and QTextEdit, creation of
+ documents with QTextDocument, editing using a QTextCursor, and
+ exporting the document structure.
+ This document outlines some of the more common ways of using the rich
+ text classes to perform these tasks, showing convenient patterns that can
+ be reused in your own applications.
+
+ \section1 Using QTextEdit
+
+ A text editor widget can be constructed and used to display HTML in the
+ following way:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 2
+
+ By default, the text editor contains a document with a root frame, inside
+ which is an empty text block. This document can be obtained so that it can
+ be modified directly by the application:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 3
+
+ The text editor's cursor may also be used to edit a document:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 4
+
+ Although a document can be edited using many cursors at once, a QTextEdit
+ only displays a single cursor at a time. Therefore, if we want to update the
+ editor to display a particular cursor or its selection, we need to set the
+ editor's cursor after we have modified the document:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 5
+
+ \section1 Selecting Text
+
+ Text is selected by moving the cursor using operations that are similar to
+ those performed by a user in a text editor. To select text between two
+ points in the document, we need to position the cursor at the first point
+ then move it using a special mode (\l{QTextCursor::MoveMode}) with a
+ move operation (\l{QTextCursor::MoveOperation}).
+ When we select the text, we leave the selection anchor at the old cursor
+ position just as the user might do by holding down the Shift key when
+ selecting text:
+
+ \snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 1
+
+ In the above code, a whole word is selected using this method. QTextCursor
+ provides a number of common move operations for selecting individual
+ characters, words, lines, and whole blocks.
+
+ \section1 Finding Text
+
+ QTextDocument provides a cursor-based interface for searching, making
+ it easy to find and modify text in the style of a text editor. The following
+ code finds all the instances of a particular word in a document, and changes
+ the color of each:
+
+ \snippet doc/src/snippets/textdocument-find/main.cpp 0
+ \snippet doc/src/snippets/textdocument-find/main.cpp 1
+
+ Note that the cursor does not have to be moved after each search and replace
+ operation; it is always positioned at the end of the word that was just
+ replaced.
+
+ \section1 Printing Documents
+
+ QTextEdit is designed for the display of large rich text documents that are
+ read on screen, rendering them in the same way as a web browser. As a result,
+ it does not automatically break the contents of the document into page-sized
+ pieces that are suitable for printing.
+
+ QTextDocument provides a \l{QTextDocument::print()}{print()} function to
+ allow documents to be printed using the QPrinter class. The following code
+ shows how to prepare a document in a QTextEdit for printing with a QPrinter:
+
+ \snippet doc/src/snippets/textdocument-printing/mainwindow.cpp 0
+
+ The document is obtained from the text editor, and a QPrinter is constructed
+ then configured using a QPrintDialog. If the user accepts the printer's
+ configuration then the document is formatted and printed using the
+ \l{QTextDocument::print()}{print()} function.
+*/
+
+/*!
+ \page richtext-advanced-processing.html
+ \contentspage richtext.html Contents
+ \previouspage Common Rich Text Editing Tasks
+ \nextpage Supported HTML Subset
+
+ \title Advanced Rich Text Processing
+
+ \section1 Handling Large Files
+
+ Qt does not limit the size of files that are used for text
+ processing. In most cases, this will not present a problem. For
+ especially large files, however, you might experience that your
+ application will become unresponsive or that you will run out of
+ memory. The size of the files you can load depends on your
+ hardware and on Qt's and your own application's implementation.
+
+ If you are faced with this problem, we recommend that you address the
+ following issues:
+
+ \list
+ \o You should consider breaking up large paragraphs into smaller
+ ones as Qt handles small paragraphs better. You could also
+ insert line breaks at regular intervals, which will look the
+ same as one large paragraph in a QTextEdit.
+ \o You can reduce the amount of blocks in a QTextDocument with
+ \l{QTextDocument::}{maximumBlockCount()}. The document is only
+ as large as the number of blocks as far as QTextEdit is concerned.
+ \o When adding text to a text edit, it is an advantage to add it
+ in an edit block (see example below). The result is that the
+ text edit does not need to build the entire document structure at once.
+ \endlist
+
+ We give an example of the latter technique from the list. We assume that
+ the text edit is visible.
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 6
+
+ \omit
+ Ideas for other sections:
+
+ * Hiding QTextBlock elements.
+ * Changing the word wrapping mode in QTextEdit. Custom word wrapping?
+ \endomit
+*/
+
+/*!
+ \page richtext-html-subset.html
+ \title Supported HTML Subset
+ \brief Describes the support for HTML markup in text widgets.
+
+ \contentspage richtext.html Contents
+ \previouspage Common Rich Text Editing Tasks
+
+ Qt's text widgets are able to display rich text, specified using a subset of \l{HTML 4}
+ markup. Widgets that use QTextDocument, such as QLabel and QTextEdit, are able to display
+ rich text specified in this way.
+
+ \tableofcontents
+
+ \section1 Using HTML Markup in Text Widgets
+
+ Widgets automatically detect HTML markup and display rich text accordingly. For example,
+ setting a label's \l{QLabel::}{text} property with the string \c{"<b>Hello</b> <i>Qt!</i>"}
+ will result in the label displaying text like this: \bold{Hello} \e{Qt!}
+
+ When HTML markup is used for text, Qt follows the rules defined by the \l{HTML 4}
+ specification. This includes default properties for text layout, such as the
+ direction of the text flow (left-to-right) which can be changed by applying the
+ \l{#Block Attributes}{\c dir} attribute to blocks of text.
+
+ \section1 Supported Tags
+
+ The following table lists the HTML tags supported by Qt's
+ \l{Rich Text Processing}{rich text} engine:
+
+ \table
+ \header \o Tag
+ \o Description
+ \o Comment
+ \row \o \c a
+ \o Anchor or link
+ \o Supports the \c href and \c name attributes.
+ \row \o \c address
+ \o Address
+ \o
+ \row \o \c b
+ \o Bold
+ \o
+ \row \o \c big
+ \o Larger font
+ \o
+ \row \o \c blockquote
+ \o Indented paragraph
+ \o
+ \row \o \c body
+ \o Document body
+ \o Supports the \c bgcolor attribute, which
+ can be a Qt \l{QColor::setNamedColor()}{color name}
+ or a \c #RRGGBB color specification.
+ \row \o \c br
+ \o Line break
+ \o
+ \row \o \c center
+ \o Centered paragraph
+ \o
+ \row \o \c cite
+ \o Inline citation
+ \o Same as \c i.
+ \row \o \c code
+ \o Code
+ \o Same as \c tt.
+ \row \o \c dd
+ \o Definition data
+ \o
+ \row \o \c dfn
+ \o Definition
+ \o Same as \c i.
+ \row \o \c div
+ \o Document division
+ \o Supports the standard \l{block attributes}.
+ \row \o \c dl
+ \o Definition list
+ \o Supports the standard \l{block attributes}.
+ \row \o \c dt
+ \o Definition term
+ \o Supports the standard \l{block attributes}.
+ \row \o \c em
+ \o Emphasized
+ \o Same as \c i.
+ \row \o \c font
+ \o Font size, family, and/or color
+ \o Supports the following attributes:
+ \c size, \c face, and \c color (Qt
+ \l{QColor::setNamedColor()}{color names} or
+ \c #RRGGBB).
+ \row \o \c h1
+ \o Level 1 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h2
+ \o Level 2 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h3
+ \o Level 3 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h4
+ \o Level 4 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h5
+ \o Level 5 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h6
+ \o Level 6 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c head
+ \o Document header
+ \o
+ \row \o \c hr
+ \o Horizontal line
+ \o Supports the \c width attribute, which can
+ be specified as an absolute or relative (\c %) value.
+ \row \o \c html
+ \o HTML document
+ \o
+ \row \o \c i
+ \o Italic
+ \o
+ \row \o \c img
+ \o Image
+ \o Supports the \c src, \c source
+ (for Qt 3 compatibility), \c width, and \c height
+ attributes.
+ \row \o \c kbd
+ \o User-entered text
+ \o
+ \row \o \c meta
+ \o Meta-information
+ \o If a text encoding is specified using the \c{meta} tag,
+ it is picked up by Qt::codecForHtml().
+ Likewise, if an encoding is specified to
+ QTextDocument::toHtml(), the encoding is stored using
+ a \c meta tag, for example:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 7
+
+ \row \o \c li
+ \o List item
+ \o
+ \row \o \c nobr
+ \o Non-breakable text
+ \o
+ \row \o \c ol
+ \o Ordered list
+ \o Supports the standard \l{list attributes}.
+ \row \o \c p
+ \o Paragraph
+ \o Left-aligned by default. Supports the standard
+ \l{block attributes}.
+ \row \o \c pre
+ \o Preformated text
+ \o
+ \row \o \c qt
+ \o Qt rich-text document
+ \o Synonym for \c html. Provided for compatibility with
+ earlier versions of Qt.
+ \row \o \c s
+ \o Strikethrough
+ \o
+ \row \o \c samp
+ \o Sample code
+ \o Same as \c tt.
+ \row \o \c small
+ \o Small font
+ \o
+ \row \o \c span
+ \o Grouped elements
+ \o
+ \row \o \c strong
+ \o Strong
+ \o Same as \c b.
+ \row \o \c sub
+ \o Subscript
+ \o
+ \row \o \c sup
+ \o Superscript
+ \o
+ \row \o \c table
+ \o Table
+ \o Supports the following attributes: \c border,
+ \c bgcolor (Qt \l{QColor::setNamedColor()}{color names}
+ or \c #RRGGBB), \c cellspacing, \c cellpadding,
+ \c width (absolute or relative), and \c height.
+ \row \o \c tbody
+ \o Table body
+ \o Does nothing.
+ \row \o \c td
+ \o Table data cell
+ \o Supports the standard \l{table cell attributes}.
+ \row \o \c tfoot
+ \o Table footer
+ \o Does nothing.
+ \row \o \c th
+ \o Table header cell
+ \o Supports the standard \l{table cell attributes}.
+ \row \o \c thead
+ \o Table header
+ \o If the \c thead tag is specified, it is used when printing tables
+ that span multiple pages.
+ \row \o \c title
+ \o Document title
+ \o The value specified using the \c
+ title tag is available through
+ QTextDocument::metaInformation().
+ \row \o \c tr
+ \o Table row
+ \o Supports the \c bgcolor attribute, which
+ can be a Qt \l{QColor::setNamedColor()}{color name}
+ or a \c #RRGGBB color specification.
+ \row \o \c tt
+ \o Typewrite font
+ \o
+ \row \o \c u
+ \o Underlined
+ \o
+ \row \o \c ul
+ \o Unordered list
+ \o Supports the standard \l{list attributes}.
+ \row \o \c var
+ \o Variable
+ \o Same as \c i.
+ \endtable
+
+ \section1 Block Attributes
+
+ The following attributes are supported by the \c div, \c dl, \c
+ dt, \c h1, \c h2, \c h3, \c h4, \c h5, \c h6, \c p tags:
+
+ \list
+ \o \c align (\c left, \c right, \c center, \c justify)
+ \o \c dir (\c ltr, \c rtl)
+ \endlist
+
+ \section1 List Attributes
+
+ The following attribute is supported by the \c ol and \c ul tags:
+
+ \list
+ \o \c type (\c 1, \c a, \c A, \c square, \c disc, \c circle)
+ \endlist
+
+ \section1 Table Cell Attributes
+
+ The following attributes are supported by the \c td and \c th
+ tags:
+
+ \list
+ \o \c width (absolute, relative, or no-value)
+ \o \c bgcolor (Qt \l{QColor::setNamedColor()}{color names} or \c #RRGGBB)
+ \o \c colspan
+ \o \c rowspan
+ \o \c align (\c left, \c right, \c center, \c justify)
+ \o \c valign (\c top, \c middle, \c bottom)
+ \endlist
+
+ \section1 CSS Properties
+ The following table lists the CSS properties supported by Qt's
+ \l{Rich Text Processing}{rich text} engine:
+
+ \table
+ \header \o Property
+ \o Values
+ \o Description
+ \row
+ \o \c background-color
+ \o <color>
+ \o Background color for elements
+ \row
+ \o \c background-image
+ \o <uri>
+ \o Background image for elements
+ \row \o \c color
+ \o <color>
+ \o Text foreground color
+ \row \o \c font-family
+ \o <family name>
+ \o Font family name
+ \row \o \c font-size
+ \o [ small | medium | large | x-large | xx-large ] | <size>pt | <size>px
+ \o Font size relative to the document font, or specified in points or pixels
+ \row \o \c font-style
+ \o [ normal | italic | oblique ]
+ \o
+ \row \o \c font-weight
+ \o [ normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 ]
+ \o Specifies the font weight used for text, where \c normal and \c bold
+ are mapped to the corresponding QFont weights. Numeric values are
+ 8 times the equivalent QFont weight values.
+ \row \o \c text-decoration
+ \o none | [ underline || overline || line-through ]
+ \o Additional text effects
+ \row \o \c font
+ \o [ [ <'font-style'> || <'font-weight'> ]? <'font-size'> <'font-family'> ]
+ \o Font shorthand property
+ \row \o \c text-indent
+ \o <length>px
+ \o First line text indentation in pixels
+ \row \o \c white-space
+ \o normal | pre | nowrap | pre-wrap
+ \o Declares how whitespace in HTML is handled.
+ \row \o \c margin-top
+ \o <length>px
+ \o Top paragraph margin in pixels
+ \row \o \c margin-bottom
+ \o <length>px
+ \o Bottom paragraph margin in pixels
+ \row \o \c margin-left
+ \o <length>px
+ \o Left paragraph margin in pixels
+ \row \o \c margin-right
+ \o <length>px
+ \o Right paragraph margin in pixels
+ \row \o \c padding-top
+ \o <length>px
+ \o Top table cell padding in pixels
+ \row \o \c padding-bottom
+ \o <length>px
+ \o Bottom table cell padding in pixels
+ \row \o \c padding-left
+ \o <length>px
+ \o Left table cell padding in pixels
+ \row \o \c padding-right
+ \o <length>px
+ \o Right table cell padding in pixels
+ \row \o \c padding
+ \o <length>px
+ \o Shorthand for setting all the padding properties at once.
+ \row \o \c vertical-align
+ \o baseline | sub | super | middle | top | bottom
+ \o Vertical text alignment. For vertical alignment in text table cells only middle, top, and bottom apply.
+ \row \o \c border-color
+ \o <color>
+ \o Border color for text tables.
+ \row \o \c border-style
+ \o none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset
+ \o Border style for text tables.
+ \row \o \c background
+ \o [ <'background-color'> || <'background-image'> ]
+ \o Background shorthand property
+ \row \o \c page-break-before
+ \o [ auto | always ]
+ \o Make it possible to enforce a page break before the paragraph/table
+ \row \o \c page-break-after
+ \o [ auto | always ]
+ \o Make it possible to enforce a page break after the paragraph/table
+ \row \o float
+ \o [ left | right | none ]
+ \o Specifies where an image or a text will be placed in another element. Note that the \c float property is
+ only supported for tables and images.
+ \row \o \c text-transform
+ \o [ uppercase | lowercase ]
+ \o Select the transformation that will be performed on the text prior to displaying it.
+ \row \o \c font-variant
+ \o small-caps
+ \o Perform the smallcaps transformation on the text prior to displaying it.
+ \row \o \c word-spacing
+ \o <width>px
+ \o Specifies an alternate spacing between each word.
+ \endtable
+
+ \section1 Supported CSS Selectors
+
+ All CSS 2.1 selector classes are supported except pseudo-class selectors such
+ as \c{:first-child}, \c{:visited} and \c{:hover}.
+
+*/
diff --git a/doc/src/statemachine.qdoc b/doc/src/frameworks-technologies/statemachine.qdoc
index f479c77..3513199 100644
--- a/doc/src/statemachine.qdoc
+++ b/doc/src/frameworks-technologies/statemachine.qdoc
@@ -40,10 +40,16 @@
****************************************************************************/
/*!
+ \group statemachine
+ \title State Machine Classes
+*/
+
+/*!
\page statemachine-api.html
\title The State Machine Framework
\brief An overview of the State Machine framework for constructing and executing state graphs.
- \ingroup architecture
+
+ \ingroup frameworks-technologies
\tableofcontents
@@ -69,6 +75,12 @@
states can be configured to set properties and invoke methods on QObjects.
Qt's event system is used to drive the state machines.
+ \section1 Classes in the State Machine Framework
+
+ These classes are provided by qt for creating event-driven state machines.
+
+ \annotatedlist statemachine
+
\section1 A Simple State Machine
To demonstrate the core functionality of the State Machine API, let's look
diff --git a/doc/src/templates.qdoc b/doc/src/frameworks-technologies/templates.qdoc
index 4705d09..39d76ee 100644
--- a/doc/src/templates.qdoc
+++ b/doc/src/frameworks-technologies/templates.qdoc
@@ -42,7 +42,6 @@
/*!
\page templates.html
\title Why Doesn't Qt Use Templates for Signals and Slots?
- \ingroup architecture
\brief The reasoning behind Qt's implementation of signals and slots.
Templates are a builtin mechanism in C++ that allows the compiler to
diff --git a/doc/src/threads.qdoc b/doc/src/frameworks-technologies/threads.qdoc
index 351113a..bc65daf 100644
--- a/doc/src/threads.qdoc
+++ b/doc/src/frameworks-technologies/threads.qdoc
@@ -40,11 +40,19 @@
****************************************************************************/
/*!
+ \group thread
+ \title Threading Classes
+*/
+
+/*!
\page threads.html
\title Thread Support in Qt
- \ingroup architecture
\brief A detailed discussion of thread handling in Qt.
+ \ingroup frameworks-technologies
+
+ \nextpage Starting Threads with QThread
+
Qt provides thread support in the form of platform-independent
threading classes, a thread-safe way of posting events, and
signal-slot connections across threads. This makes it easy to
@@ -56,18 +64,39 @@
Earlier versions of Qt offered an option to build the library
without thread support. Since Qt 4.0, threads are always enabled.
+ \section1 Topics:
+
+ \list
+ \o \l{Recommended Reading}
+ \o \l{The Threading Classes}
+ \o \l{Starting Threads with QThread}
+ \o \l{Synchronizing Threads}
+ \o \l{Reentrancy and Thread-Safety}
+ \o \l{Threads and QObjects}
+ \o \l{Concurrent Programming}
+ \o \l{Thread-Support in Qt Modules}
+ \endlist
+
+ \section1 Recommended Reading
+
This document is intended for an audience that has knowledge of,
and experience with, multithreaded applications. If you are new
- to threading see our \l{#reading}{Recommended Reading} list.
+ to threading see our Recommended Reading list:
- Topics:
-
- \tableofcontents
+ \list
+ \o \l{Threads Primer: A Guide to Multithreaded Programming}
+ \o \l{Thread Time: The Multithreaded Programming Guide}
+ \o \l{Pthreads Programming: A POSIX Standard for Better Multiprocessing}
+ \o \l{Win32 Multithreaded Programming}
+ \endlist
\section1 The Threading Classes
- Qt includes the following thread classes:
+ These classes are relevant to threaded applications.
+
+ \annotatedlist thread
+\omit
\list
\o QThread provides the means to start a new thread.
\o QThreadStorage provides per-thread data storage.
@@ -85,12 +114,30 @@
\o QAtomicInt provides atomic operations on integers.
\o QAtomicPointer provides atomic operations on pointers.
\endlist
+\endomit
\note Qt's threading classes are implemented with native threading APIs;
e.g., Win32 and pthreads. Therefore, they can be used with threads of the
same native API.
+*/
- \section2 Creating a Thread
+/*!
+ \page threads-starting.html
+ \title Starting Threads with QThread
+
+ \contentspage Thread Support in Qt
+ \nextpage Synchronizing Threads
+
+ A QThread instance represents a thread and provides the means to
+ \l{QThread::start()}{start()} a thread, which will then execute the
+ reimplementation of QThread::run(). The \c run() implementation is for a
+ thread what the \c main() entry point is for the application. All code
+ executed in a call stack that starts in the \c run() function is executed
+ by the new thread, and the thread finishes when the function returns.
+ QThread emits signals to indicate that the thread started or finished
+ executing.
+
+ \section1 Creating a Thread
To create a thread, subclass QThread and reimplement its
\l{QThread::run()}{run()} function. For example:
@@ -102,22 +149,34 @@
\dots
\snippet doc/src/snippets/threads/threads.cpp 2
+ \section1 Starting a Thread
+
Then, create an instance of the thread object and call
- QThread::start(). The code that appears in the
+ QThread::start(). Note that you must create the QApplication (or
+ QCoreApplication) object before you can create a QThread.
+
+ The function will return immediately and the
+ main thread will continue. The code that appears in the
\l{QThread::run()}{run()} reimplementation will then be executed
- in a separate thread. Creating threads is explained in more
- detail in the QThread documentation.
+ in a separate thread.
+
+ Creating threads is explained in more detail in the QThread
+ documentation.
Note that QCoreApplication::exec() must always be called from the
main thread (the thread that executes \c{main()}), not from a
QThread. In GUI applications, the main thread is also called the
GUI thread because it's the only thread that is allowed to
perform GUI-related operations.
+*/
- In addition, you must create the QApplication (or
- QCoreApplication) object before you can create a QThread.
-
- \section2 Synchronizing Threads
+/*!
+ \page threads-synchronizing.html
+ \title Synchronizing Threads
+
+ \previouspage Starting Threads with QThread
+ \contentspage Thread Support in Qt
+ \nextpage Reentrancy and Thread-Safety
The QMutex, QReadWriteLock, QSemaphore, and QWaitCondition
classes provide means to synchronize threads. While the main idea
@@ -162,105 +221,18 @@
Note that Qt's synchronization classes rely on the use of properly
aligned pointers. For instance, you cannot use packed classes with
MSVC.
+*/
- \target qtconcurrent intro
- \section1 QtConcurrent
-
- The QtConcurrent namespace provides high-level APIs that make it
- possible to write multi-threaded programs without using low-level
- threading primitives such as mutexes, read-write locks, wait
- conditions, or semaphores. Programs written with QtConcurrent
- automatically adjust the number of threads used according to the
- number of processor cores available. This means that applications
- written today will continue to scale when deployed on multi-core
- systems in the future.
-
- QtConcurrent includes functional programming style APIs for
- parallel list processing, including a MapReduce and FilterReduce
- implementation for shared-memory (non-distributed) systems, and
- classes for managing asynchronous computations in GUI
- applications:
-
- \list
-
- \o QtConcurrent::map() applies a function to every item in a container,
- modifying the items in-place.
-
- \o QtConcurrent::mapped() is like map(), except that it returns a new
- container with the modifications.
-
- \o QtConcurrent::mappedReduced() is like mapped(), except that the
- modified results are reduced or folded into a single result.
-
- \o QtConcurrent::filter() removes all items from a container based on the
- result of a filter function.
-
- \o QtConcurrent::filtered() is like filter(), except that it returns a new
- container with the filtered results.
-
- \o QtConcurrent::filteredReduced() is like filtered(), except that the
- filtered results are reduced or folded into a single result.
-
- \o QtConcurrent::run() runs a function in another thread.
-
- \o QFuture represents the result of an asynchronous computation.
-
- \o QFutureIterator allows iterating through results available via QFuture.
-
- \o QFutureWatcher allows monitoring a QFuture using signals-and-slots.
-
- \o QFutureSynchronizer is a convenience class that automatically
- synchronizes several QFutures.
-
- \endlist
-
- Qt Concurrent supports several STL-compatible container and iterator types,
- but works best with Qt containers that have random-access iterators, such as
- QList or QVector. The map and filter functions accept both containers and begin/end iterators.
-
- STL Iterator support overview:
-
- \table
- \header
- \o Iterator Type
- \o Example classes
- \o Support status
- \row
- \o Input Iterator
- \o
- \o Not Supported
- \row
- \o Output Iterator
- \o
- \o Not Supported
- \row
- \o Forward Iterator
- \o std::slist
- \o Supported
- \row
- \o Bidirectional Iterator
- \o QLinkedList, std::list
- \o Supported
- \row
- \o Random Access Iterator
- \o QList, QVector, std::vector
- \o Supported and Recommended
- \endtable
+/*!
+ \page threads-reentrancy.html
+ \title Reentrancy and Thread-Safety
- Random access iterators can be faster in cases where Qt Concurrent is iterating
- over a large number of lightweight items, since they allow skipping to any point
- in the container. In addition, using random access iterators allows Qt Concurrent
- to provide progress information trough QFuture::progressValue() and QFutureWatcher::
- progressValueChanged().
-
- The non in-place modifying functions such as mapped() and filtered() makes a
- copy of the container when called. If you are using STL containers this copy operation
- might take some time, in this case we recommend specifying the begin and end iterators
- for the container instead.
-
\keyword reentrant
\keyword thread-safe
- \section1 Reentrancy and Thread-Safety
+
+ \previouspage Synchronizing Threads
+ \contentspage Thread Support in Qt
+ \nextpage Threads and QObjects
Throughout the documentation, the terms \e{reentrant} and
\e{thread-safe} are used to mark classes and functions to indicate
@@ -346,8 +318,15 @@
that are somewhat different for its C APIs. When using other
object-oriented C++ class libraries with Qt, be sure the
definitions are understood.
+*/
+
+/*!
+ \page threads-qobject.html
+ \title Threads and QObjects
- \section1 Threads and QObjects
+ \previouspage Reentrancy and Thread Safety
+ \contentspage Thread Support in Qt
+ \nextpage Concurrent Programming
QThread inherits QObject. It emits signals to indicate that the
thread started or finished executing, and provides a few slots as
@@ -358,8 +337,12 @@
post events to objects that "live" in other threads. This is
possible because each thread is allowed to have its own event
loop.
+
+ Topics:
+
+ \tableofcontents
- \section2 QObject Reentrancy
+ \section1 QObject Reentrancy
QObject is reentrant. Most of its non-GUI subclasses, such as
QTimer, QTcpSocket, QUdpSocket, QFtp, and QProcess, are also
@@ -402,7 +385,7 @@
the \l{network/blockingfortuneclient}{Blocking Fortune Client}
example.
- \section2 Per-Thread Event Loop
+ \section1 Per-Thread Event Loop
Each thread can have its own event loop. The initial thread
starts its event loops using QCoreApplication::exec(); other
@@ -463,7 +446,7 @@
be used to dispatch events to objects living in the thread from
which the function is called.
- \section2 Accessing QObject Subclasses from Other Threads
+ \section1 Accessing QObject Subclasses from Other Threads
QObject and all of its subclasses are not thread-safe. This
includes the entire event delivery system. It is important to keep
@@ -487,7 +470,7 @@
QThread::run() implementation, because signal emission is
thread-safe.
- \section2 Signals and Slots Across Threads
+ \section1 Signals and Slots Across Threads
Qt supports three types of signal-slot connections:
@@ -529,37 +512,117 @@
Similarly, the \l{network/blockingfortuneclient}{Blocking Fortune
Client} example uses a separate thread for communicating with
a TCP server asynchronously.
+*/
- \section1 Threads and Implicit Sharing
+/*!
+ \page threads-qtconcurrent.html
+ \title Concurrent Programming
- Qt uses an optimization called \l{implicit sharing} for many of
- its value class, notably QImage and QString. Beginning with Qt 4,
- implicit shared classes can safely be copied across threads, like
- any other value classes. They are fully
- \l{#reentrant}{reentrant}. The implicit sharing is really
- \e implicit.
+ \previouspage Threads and QObjects
+ \contentspage Thread Support in Qt
+ \nextpage Thread-Support in Qt Modules
- In many people's minds, implicit sharing and multithreading are
- incompatible concepts, because of the way the reference counting
- is typically done. Qt, however, uses atomic reference counting to
- ensure the integrity of the shared data, avoiding potential
- corruption of the reference counter.
+ \target qtconcurrent intro
- Note that atomic reference counting does not guarantee
- \l{#thread-safe}{thread-safety}. Proper locking should be used
- when sharing an instance of an implicitly shared class between
- threads. This is the same requirement placed on all
- \l{#reentrant}{reentrant} classes, shared or not. Atomic reference
- counting does, however, guarantee that a thread working on its
- own, local instance of an implicitly shared class is safe. We
- recommend using \l{Signals and Slots Across Threads}{signals and
- slots} to pass data between threads, as this can be done without
- the need for any explicit locking.
+ The QtConcurrent namespace provides high-level APIs that make it
+ possible to write multi-threaded programs without using low-level
+ threading primitives such as mutexes, read-write locks, wait
+ conditions, or semaphores. Programs written with QtConcurrent
+ automatically adjust the number of threads used according to the
+ number of processor cores available. This means that applications
+ written today will continue to scale when deployed on multi-core
+ systems in the future.
- To sum it up, implicitly shared classes in Qt 4 are really \e
- implicitly shared. Even in multithreaded applications, you can
- safely use them as if they were plain, non-shared, reentrant
- value-based classes.
+ QtConcurrent includes functional programming style APIs for
+ parallel list processing, including a MapReduce and FilterReduce
+ implementation for shared-memory (non-distributed) systems, and
+ classes for managing asynchronous computations in GUI
+ applications:
+
+ \list
+
+ \o QtConcurrent::map() applies a function to every item in a container,
+ modifying the items in-place.
+
+ \o QtConcurrent::mapped() is like map(), except that it returns a new
+ container with the modifications.
+
+ \o QtConcurrent::mappedReduced() is like mapped(), except that the
+ modified results are reduced or folded into a single result.
+
+ \o QtConcurrent::filter() removes all items from a container based on the
+ result of a filter function.
+
+ \o QtConcurrent::filtered() is like filter(), except that it returns a new
+ container with the filtered results.
+
+ \o QtConcurrent::filteredReduced() is like filtered(), except that the
+ filtered results are reduced or folded into a single result.
+
+ \o QtConcurrent::run() runs a function in another thread.
+
+ \o QFuture represents the result of an asynchronous computation.
+
+ \o QFutureIterator allows iterating through results available via QFuture.
+
+ \o QFutureWatcher allows monitoring a QFuture using signals-and-slots.
+
+ \o QFutureSynchronizer is a convenience class that automatically
+ synchronizes several QFutures.
+
+ \endlist
+
+ Qt Concurrent supports several STL-compatible container and iterator types,
+ but works best with Qt containers that have random-access iterators, such as
+ QList or QVector. The map and filter functions accept both containers and begin/end iterators.
+
+ STL Iterator support overview:
+
+ \table
+ \header
+ \o Iterator Type
+ \o Example classes
+ \o Support status
+ \row
+ \o Input Iterator
+ \o
+ \o Not Supported
+ \row
+ \o Output Iterator
+ \o
+ \o Not Supported
+ \row
+ \o Forward Iterator
+ \o std::slist
+ \o Supported
+ \row
+ \o Bidirectional Iterator
+ \o QLinkedList, std::list
+ \o Supported
+ \row
+ \o Random Access Iterator
+ \o QList, QVector, std::vector
+ \o Supported and Recommended
+ \endtable
+
+ Random access iterators can be faster in cases where Qt Concurrent is iterating
+ over a large number of lightweight items, since they allow skipping to any point
+ in the container. In addition, using random access iterators allows Qt Concurrent
+ to provide progress information trough QFuture::progressValue() and QFutureWatcher::
+ progressValueChanged().
+
+ The non in-place modifying functions such as mapped() and filtered() makes a
+ copy of the container when called. If you are using STL containers this copy operation
+ might take some time, in this case we recommend specifying the begin and end iterators
+ for the container instead.
+*/
+
+/*!
+ \page threads-modules.html
+ \title Thread-Support in Qt Modules
+
+ \previouspage Concurrent Programming
+ \contentspage Thread Support in Qt
\section1 Threads and the SQL Module
@@ -573,8 +636,8 @@
\section1 Painting in Threads
- QPainter can be used to paint onto QImage, QPrinter, and QPicture
- paint devices. Painting onto QPixmaps and QWidgets is \e not
+ QPainter can be used in a thread to paint onto QImage, QPrinter, and
+ QPicture paint devices. Painting onto QPixmaps and QWidgets is \e not
supported. On Mac OS X the automatic progress dialog will not be
displayed if you are printing from outside the GUI thread.
@@ -601,16 +664,37 @@
\section1 Threads and the SVG module
- The QSvgGenerator and QSvgRenderer classes in the QtSvg module
- are reentrant.
+ The QSvgGenerator and QSvgRenderer classes in the QtSvg module
+ are reentrant.
- \target reading
- \section1 Recommended Reading
+ \section1 Threads and Implicitly Shared Classes
- \list
- \o \l{Threads Primer: A Guide to Multithreaded Programming}
- \o \l{Thread Time: The Multithreaded Programming Guide}
- \o \l{Pthreads Programming: A POSIX Standard for Better Multiprocessing}
- \o \l{Win32 Multithreaded Programming}
- \endlist
+ Qt uses an optimization called \l{implicit sharing} for many of
+ its value class, notably QImage and QString. Beginning with Qt 4,
+ implicit shared classes can safely be copied across threads, like
+ any other value classes. They are fully
+ \l{Reentrancy and Thread-Safety}{reentrant}. The implicit sharing
+ is really \e implicit.
+
+ In many people's minds, implicit sharing and multithreading are
+ incompatible concepts, because of the way the reference counting
+ is typically done. Qt, however, uses atomic reference counting to
+ ensure the integrity of the shared data, avoiding potential
+ corruption of the reference counter.
+
+ Note that atomic reference counting does not guarantee
+ \l{Reentrancy and Thread-Safety}{thread-safety}. Proper locking should be used
+ when sharing an instance of an implicitly shared class between
+ threads. This is the same requirement placed on all
+ \l{Reentrancy and Thread-Safety}{reentrant} classes, shared or not. Atomic reference
+ counting does, however, guarantee that a thread working on its
+ own, local instance of an implicitly shared class is safe. We
+ recommend using \l{Signals and Slots Across Threads}{signals and
+ slots} to pass data between threads, as this can be done without
+ the need for any explicit locking.
+
+ To sum it up, implicitly shared classes in Qt 4 are really \e
+ implicitly shared. Even in multithreaded applications, you can
+ safely use them as if they were plain, non-shared, reentrant
+ value-based classes.
*/
diff --git a/doc/src/unicode.qdoc b/doc/src/frameworks-technologies/unicode.qdoc
index b4ba26a..2daefc5 100644
--- a/doc/src/unicode.qdoc
+++ b/doc/src/frameworks-technologies/unicode.qdoc
@@ -39,20 +39,41 @@
**
****************************************************************************/
+/*!
+ \group string-processing
+ \title Classes for String Data
+
+ \brief Classes for working with string data.
+
+ These classes are relevant when working with string data. See the
+ \l{Unicode in Qt}{information about support for Unicode in Qt} for
+ more information.
+*/
+
+
/*!
\page unicode.html
- \title Unicode
- \ingroup architecture
- \ingroup text-processing
+ \title Unicode in Qt
\brief Information about support for Unicode in Qt.
+ \keyword Unicode
+
+ \ingroup frameworks-technologies
+
Unicode is a multi-byte character set, portable across all major
computing platforms and with decent coverage over most of the world.
It is also single-locale; it includes no code pages or other
complexities that make software harder to write and test. There is no
competing character set that's reasonably cross-platform. For these
reasons, Unicode 4.0 is used as the native character set for Qt.
+
+ \section1 Qt's Classes for Working with Strings
+
+ These classes are relevant when working with string data. For information
+ about rendering text, see the \l{Rich Text Processing} overview, and if
+ your string data is in XML, see the \l{XML Processing} overview.
+ \annotatedlist string-processing
\section1 Information about Unicode on the Web
diff --git a/doc/src/geometry.qdoc b/doc/src/geometry.qdoc
deleted file mode 100644
index 9143548..0000000
--- a/doc/src/geometry.qdoc
+++ /dev/null
@@ -1,150 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page geometry.html
- \title Window Geometry
- \ingroup architecture
- \brief An overview of window geometry handling and management.
-
- QWidget provides several functions that deal with a widget's
- geometry. Some of these functions operate on the pure client area
- (i.e. the window excluding the window frame), others include the
- window frame. The differentiation is done in a way that covers the
- most common usage transparently.
-
- \list
- \o \bold{Including the window frame:}
- \l{QWidget::x()}{x()},
- \l{QWidget::y()}{y()},
- \l{QWidget::frameGeometry()}{frameGeometry()},
- \l{QWidget::pos()}{pos()}, and
- \l{QWidget::move()}{move()}.
- \o \bold{Excluding the window frame:}
- \l{QWidget::geometry()}{geometry()},
- \l{QWidget::width()}{width()},
- \l{QWidget::height()}{height()},
- \l{QWidget::rect()}{rect()}, and
- \l{QWidget::size()}{size()}.
- \endlist
-
- Note that the distinction only matters for decorated top-level
- widgets. For all child widgets, the frame geometry is equal to the
- widget's client geometry.
-
- This diagram shows most of the functions in use:
- \img geometry.png Geometry diagram
-
- Topics:
-
- \tableofcontents
-
- \section1 X11 Peculiarities
-
- On X11, a window does not have a frame until the window manager
- decorates it. This happens asynchronously at some point in time
- after calling QWidget::show() and the first paint event the
- window receives, or it does not happen at all. Bear in mind that
- X11 is policy-free (others call it flexible). Thus you cannot
- make any safe assumption about the decoration frame your window
- will get. Basic rule: There's always one user who uses a window
- manager that breaks your assumption, and who will complain to
- you.
-
- Furthermore, a toolkit cannot simply place windows on the screen. All
- Qt can do is to send certain hints to the window manager. The window
- manager, a separate process, may either obey, ignore or misunderstand
- them. Due to the partially unclear Inter-Client Communication
- Conventions Manual (ICCCM), window placement is handled quite
- differently in existing window managers.
-
- X11 provides no standard or easy way to get the frame geometry
- once the window is decorated. Qt solves this problem with nifty
- heuristics and clever code that works on a wide range of window
- managers that exist today. Don't be surprised if you find one
- where QWidget::frameGeometry() returns wrong results though.
-
- Nor does X11 provide a way to maximize a window.
- QWidget::showMaximized() has to emulate the feature. Its result
- depends on the result of QWidget::frameGeometry() and the
- capability of the window manager to do proper window placement,
- neither of which can be guaranteed.
-
- \section1 Restoring a Window's Geometry
-
- Since version 4.2, Qt provides functions that saves and restores a
- window's geometry and state for you. QWidget::saveGeometry()
- saves the window geometry and maximized/fullscreen state, while
- QWidget::restoreGeometry() restores it. The restore function also
- checks if the restored geometry is outside the available screen
- geometry, and modifies it as appropriate if it is.
-
- The rest of this document describes how to save and restore the
- geometry using the geometry properties. On Windows, this is
- basically storing the result of QWidget::geometry() and calling
- QWidget::setGeometry() in the next session before calling
- \l{QWidget::show()}{show()}. On X11, this won't work because an
- invisible window doesn't have a frame yet. The window manager
- will decorate the window later. When this happens, the window
- shifts towards the bottom/right corner of the screen depending on
- the size of the decoration frame. Although X provides a way to
- avoid this shift, most window managers fail to implement this
- feature.
-
- A workaround is to call \l{QWidget::setGeometry()}{setGeometry()}
- after \l{QWidget::show()}{show()}. This has the two disadvantages
- that the widget appears at a wrong place for a millisecond
- (results in flashing) and that currently only every second window
- manager gets it right. A safer solution is to store both
- \l{QWidget::pos()}{pos()} and \l{QWidget::size()}{size()} and to
- restore the geometry using \l{QWidget::resize()} and
- \l{QWidget::move()}{move()} before calling
- \l{QWidget::show()}{show()}, as demonstrated in the following
- code snippets (from the \l{mainwindows/application}{Application}
- example):
-
- \snippet examples/mainwindows/application/mainwindow.cpp 35
- \codeline
- \snippet examples/mainwindows/application/mainwindow.cpp 38
-
- This method works on Windows, Mac OS X, and most X11 window
- managers.
-*/
diff --git a/doc/src/demos.qdoc b/doc/src/getting-started/demos.qdoc
index 69a943a..1eac06f 100644
--- a/doc/src/demos.qdoc
+++ b/doc/src/getting-started/demos.qdoc
@@ -43,13 +43,28 @@
\page demos.html
\title Qt Demonstrations
\brief Information about the demonstration programs provided with Qt.
- \ingroup howto
+
+ \previouspage Qt Examples
+ \contentspage How to Learn Qt
+ \nextpage What's New in Qt 4.5
This is the list of demonstrations in Qt's \c demos directory.
These are larger and more complicated programs than the
\l{Qt Examples} and are used to highlight certain features of
- Qt. You can launch any of these programs from the
- \l{Examples and Demos Launcher} application.
+ Qt.
+
+ \table 50%
+ \header
+ \o {2,1} Getting an Overview
+ \row
+ \o \inlineimage qtdemo-small.png
+ \o
+ If you run the \l{Examples and Demos Launcher}, you'll see many of Qt's
+ widgets in action.
+
+ The \l{Qt Widget Gallery} also provides overviews of selected Qt
+ widgets in each of the styles used on various supported platforms.
+ \endtable
If you are new to Qt, and want to start developing applications,
you should probably start by going through the \l{Tutorials}.
diff --git a/doc/src/getting-started/examples.qdoc b/doc/src/getting-started/examples.qdoc
new file mode 100644
index 0000000..253a4e4
--- /dev/null
+++ b/doc/src/getting-started/examples.qdoc
@@ -0,0 +1,1108 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page examples-overview.html
+ \raw HTML
+ <script>
+ document.location.href = "examples.html";
+ </script>
+ \endraw
+ Click this \l{Qt Examples}{link} if you don't get redirected.
+*/
+
+/*!
+ \page examples.html
+ \title Qt Examples
+ \brief The example programs provided with Qt.
+
+ \previouspage Tutorials
+ \contentspage How to Learn Qt
+ \nextpage Qt Demonstrations
+
+ Qt is supplied with a variety of examples that cover almost every aspect
+ of development. They are not all designed to be impressive when you run
+ them, but their source code is carefully written to show good Qt
+ programming practices. You can launch any of these programs from the
+ \l{Examples and Demos Launcher} application.
+
+ These examples are ordered by functional area, but many examples often
+ use features from many parts of Qt to highlight one area in particular.
+ If you are new to Qt, you should probably start by going through the
+ \l{Tutorials} before you have a look at the
+ \l{mainwindows/application}{Application} example.
+
+ In addition to the examples and the tutorial, Qt includes a
+ \l{Qt Demonstrations}{selection of demos} that deliberately show off
+ Qt's features. You might want to look at these as well.
+
+ \table
+ \row
+ \o{2,1} \l{Widgets Examples}{\bold Widgets}
+ \o{2,1} \l{Dialog Examples}{\bold Dialogs}
+ \row
+ \i \image widget-examples.png
+ \i
+ Qt comes with a large range of standard widgets that users of modern
+ applications have come to expect. You can also develop your own custom
+ widgets and controls, and use them alongside standard widgets.
+
+ It is even possible to provide custom styles and themes for widgets that can
+ be used to change the appearance of standard widgets and appropriately
+ written custom widgets.
+
+ \i \image dialog-examples.png Dialogs
+ \i
+ Qt includes standard dialogs for many common operations, such as file
+ selection, printing, and color selection.
+
+ Custom dialogs can also be created for specialized modal or modeless
+ interactions with users.
+
+ \row
+ \o{2,1} \l{Main Window Examples}{\bold{Main Windows}}
+ \o{2,1} \l{Layout Examples}{\bold Layouts}
+
+ \row
+ \i \image mainwindow-examples.png MainWindows
+ \i All the standard features of application main windows are provided by Qt.
+
+ Main windows can have pull down menus, tool bars, and dock windows. These
+ separate forms of user input are unified in an integrated action system that
+ also supports keyboard shortcuts and accelerator keys in menu items.
+
+ \i \image layout-examples.png Layouts
+ \i
+ Qt uses a layout-based approach to widget management. Widgets are arranged in
+ the optimal positions in windows based on simple layout rules, leading to a
+ consistent look and feel.
+
+ Custom layouts can be used to provide more control over the positions and
+ sizes of child widgets.
+
+ \row
+ \o{2,1} \l{Item Views Examples}{\bold{Item Views}}
+ \o{2,1} \l{Graphics View Examples}{\bold{Graphics View}}
+ \row
+ \o \image itemview-examples.png ItemViews
+ \o
+ Item views are widgets that typically display data sets. Qt 4's model/view
+ framework lets you handle large data sets by separating the underlying data
+ from the way it is represented to the user, and provides support for
+ customized rendering through the use of delegates.
+
+ \o \image graphicsview-examples.png GraphicsView
+ \o
+ Qt is provided with a comprehensive canvas through the GraphicsView
+ classes.
+
+ \row
+ \o{2,1} \l{Painting Examples}{\bold{Painting}}
+ \o{2,1} \l{Rich Text Examples}{\bold{Rich Text}}
+ \row
+ \o \image painting-examples.png Painting
+ \o
+ Qt's painting system is able to render vector graphics, images, and outline
+ font-based text with sub-pixel accuracy accuracy using anti-aliasing to
+ improve rendering quality.
+
+ \o \image richtext-examples.png RichText
+ \o
+ Qt provides powerful document-oriented rich text engine that supports Unicode
+ and right-to-left scripts. Documents can be manipulated using a cursor-based
+ API, and their contents can be imported and exported as both HTML and in a
+ custom XML format.
+
+ \row
+ \o{2,1} \l{Desktop Examples}{\bold Desktop}
+ \o{2,1} \l{Drag and Drop Examples}{\bold{Drag and Drop}}
+ \row
+ \o \image desktop-examples.png
+ \o
+ Qt provides features to enable applications to integrate with the user's
+ preferred desktop environment.
+
+ Features such as system tray icons, access to the desktop widget, and
+ support for desktop services can be used to improve the appearance of
+ applications and take advantage of underlying desktop facilities.
+
+ \o \image draganddrop-examples.png DragAndDrop
+ \o
+ Qt supports native drag and drop on all platforms via an extensible
+ MIME-based system that enables applications to send data to each other in the
+ most appropriate formats.
+
+ Drag and drop can also be implemented for internal use by applications.
+
+ \row
+ \o{2,1} \l{Threading and Concurrent Programming Examples}{\bold{Threading and Concurrent Programming}}
+ \o{2,1} \l{Tools Examples}{\bold{Tools}}
+ \row
+ \o \image thread-examples.png
+ \o
+ Qt 4 makes it easier than ever to write multithreaded applications. More
+ classes have been made usable from non-GUI threads, and the signals and slots
+ mechanism can now be used to communicate between threads.
+
+ The QtConcurrent namespace includes a collection of classes and functions
+ for straightforward concurrent programming.
+
+ \o \image tool-examples.png Tools
+ \o
+ Qt is equipped with a range of capable tool classes, from containers and
+ iterators to classes for string handling and manipulation.
+
+ Other classes provide application infrastructure support, handling plugin
+ loading and managing configuration files.
+
+ \row
+ \o{2,1} \l{Network Examples}{\bold{Network}}
+ \o{2,1} \l{Inter-Process Communication Examples}{\bold{Inter-Process Communication}}
+ \row
+ \o \image network-examples.png Network
+ \o
+ Qt is provided with an extensive set of network classes to support both
+ client-based and server side network programming.
+
+ \o \image ipc-examples.png IPC
+ \o
+
+ \row
+ \o{2,1} \l{OpenGL Examples}{\bold OpenGL}
+ \o{2,1} \l{Multimedia Examples}{\bold{Multimedia Framework}}
+ \row
+ \o \image opengl-examples.png OpenGL
+ \o
+ Qt provides support for integration with OpenGL implementations on all
+ platforms, giving developers the opportunity to display hardware accelerated
+ 3D graphics alongside a more conventional user interface.
+
+ \o \image phonon-examples.png
+ \o
+ Qt provides low-level audio support on linux,windows and mac platforms by default and
+ an audio plugin API to allow developers to implement there own audio support for
+ custom devices and platforms.
+
+ The Phonon Multimedia Framework brings multimedia support to Qt applications.
+
+ \row
+ \o{2,1} \l{SQL Examples}{\bold{SQL}}
+ \o{2,1} \l{XML Examples}{\bold{XML}}
+ \row
+ \o \image sql-examples.png SQL
+ \o
+ Qt provides extensive database interoperability, with support for products
+ from both open source and proprietary vendors.
+
+ SQL support is integrated with Qt's model/view architecture, making it easier
+ to provide GUI integration for your database applications.
+
+ \o \image xml-examples.png XML
+ \o
+ XML parsing and handling is supported through SAX and DOM compliant APIs
+ as well as streaming classes.
+
+ The XQuery/XPath and XML Schema engines in the QtXmlPatterns modules
+ provide classes for querying XML files and custom data models.
+
+ \row
+ \o{2,1} \l{Qt Designer Examples}{\bold{Qt Designer}}
+ \o{2,1} \l{UiTools Examples}{\bold UiTools}
+ \row
+ \o \image designer-examples.png Designer
+ \o
+ Qt Designer is a capable graphical user interface designer that lets you
+ create and configure forms without writing code. GUIs created with
+ Qt Designer can be compiled into an application or created at run-time.
+
+ \o \image uitools-examples.png UiTools
+ \o
+
+ \row
+ \o{2,1} \l{Qt Linguist Examples}{\bold{Qt Linguist}}
+ \o{2,1} \l{Qt Script Examples}{\bold{Qt Script}}
+ \row
+ \o \image linguist-examples.png QtLinguist
+ \o
+ Internationalization is a core feature of Qt.
+
+ \o \image qtscript-examples.png
+ \o
+ Qt is provided with a powerful embedded scripting environment through the QtScript
+ classes.
+
+ \row
+ \o{2,1} \l{WebKit Examples}{\bold WebKit}
+ \o{2,1} \l{Help System Examples}{\bold{Help System}}
+ \row
+ \o \image webkit-examples.png
+ \o
+ Qt provides an integrated Web browser component based on WebKit, the popular
+ open source browser engine.
+
+ \o \image assistant-examples.png HelpSystem
+ \o
+ Support for interactive help is provided by the Qt Assistant application.
+ Developers can take advantages of the facilities it offers to display
+ specially-prepared documentation to users of their applications.
+
+ \row
+ \o{2,1} \l{State Machine Examples}{\bold{State Machine}}
+ \o{2,1} \l{Animation Framework Examples}{\bold{Animation Framework}}
+ \row
+ \o \image statemachine-examples.png
+ \o
+ Qt provides a powerful hierarchical finite state machine through the Qt State
+ Machine classes.
+
+ \o \image animation-examples.png
+ \o
+
+ \row
+ \o{2,1} \l{Qt for Embedded Linux Examples}{\bold{Qt for Embedded Linux}}
+ \o{2,1} \l{ActiveQt Examples}{\bold ActiveQt}
+ \row
+ \o \image qt-embedded-examples.png
+ \o
+ Systems with limited resources, specialized hardware, and small
+ screens require special attention.
+
+ \o \image activeqt-examples.png ActiveQt
+ \o
+
+ \row
+ \o{2,1} \l{D-Bus Examples}{\bold{D-Bus}}
+ \o{2,1} \l{Qt Quarterly}{\bold{Qt Quarterly}}
+ \row
+ \o \image dbus-examples.png D-Bus
+ \o
+
+ \o \image qq-thumbnail.png QtQuarterly
+ \o
+ One more valuable source for examples and explanations of Qt
+ features is the archive of the \l {Qt Quarterly}.
+
+ \endtable
+
+\omit
+ In the list below, examples marked with an asterisk (*) are fully
+ documented. Eventually, all the examples will be fully documented,
+ but sometimes we include an example before we have time to write
+ about it.
+\endomit
+*/
+
+/*!
+ \page examples-widgets.html
+ \title Widgets Examples
+
+ \contentspage Qt Examples
+ \nextpage Dialog Examples
+
+ \image widget-examples.png
+
+ Qt comes with a large range of standard widgets that users of modern
+ applications have come to expect.
+
+ You can also develop your own custom widgets and controls, and use them
+ alongside standard widgets.
+
+ It is even possible to provide custom styles and themes for widgets that can
+ be used to change the appearance of standard widgets and appropriately
+ written custom widgets.
+
+ \list
+ \o \l{widgets/analogclock}{Analog Clock}\raisedaster
+ \o \l{widgets/calculator}{Calculator}\raisedaster
+ \o \l{widgets/calendarwidget}{Calendar Widget}\raisedaster
+ \o \l{widgets/charactermap}{Character Map}\raisedaster
+ \o \l{widgets/codeeditor}{Code Editor}\raisedaster
+ \o \l{widgets/digitalclock}{Digital Clock}\raisedaster
+ \o \l{widgets/groupbox}{Group Box}\raisedaster
+ \o \l{widgets/icons}{Icons}\raisedaster
+ \o \l{widgets/imageviewer}{Image Viewer}\raisedaster
+ \o \l{widgets/lineedits}{Line Edits}\raisedaster
+ \o \l{widgets/movie}{Movie}
+ \o \l{widgets/scribble}{Scribble}\raisedaster
+ \o \l{widgets/shapedclock}{Shaped Clock}\raisedaster
+ \o \l{widgets/sliders}{Sliders}\raisedaster
+ \o \l{widgets/spinboxes}{Spin Boxes}\raisedaster
+ \o \l{widgets/styles}{Styles}\raisedaster
+ \o \l{widgets/stylesheet}{Style Sheet}\raisedaster
+ \o \l{widgets/tablet}{Tablet}\raisedaster
+ \o \l{widgets/tetrix}{Tetrix}\raisedaster
+ \o \l{widgets/tooltips}{Tooltips}\raisedaster
+ \o \l{widgets/wiggly}{Wiggly}\raisedaster
+ \o \l{widgets/windowflags}{Window Flags}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-dialogs.html
+ \title Dialog Examples
+
+ \previouspage Widgets Examples
+ \contentspage Qt Examples
+ \nextpage Main Window Examples
+
+ \image dialog-examples.png
+
+ Qt includes standard dialogs for many common operations, such as file
+ selection, printing, and color selection.
+
+ Custom dialogs can also be created for specialized modal or modeless
+ interactions with users.
+
+ \list
+ \o \l{dialogs/classwizard}{Class Wizard}\raisedaster
+ \o \l{dialogs/configdialog}{Config Dialog}
+ \o \l{dialogs/extension}{Extension}\raisedaster
+ \o \l{dialogs/findfiles}{Find Files}\raisedaster
+ \o \l{dialogs/licensewizard}{License Wizard}\raisedaster
+ \o \l{dialogs/standarddialogs}{Standard Dialogs}
+ \o \l{dialogs/tabdialog}{Tab Dialog}\raisedaster
+ \o \l{dialogs/trivialwizard}{Trivial Wizard}
+ \endlist
+*/
+
+/*!
+ \page examples-mainwindow.html
+ \title Main Window Examples
+
+ \previouspage Dialog Examples
+ \contentspage Qt Examples
+ \nextpage Layout Examples
+
+ \image mainwindow-examples.png
+
+ All the standard features of application main windows are provided by Qt.
+
+ Main windows can have pull down menus, tool bars, and dock windows. These
+ separate forms of user input are unified in an integrated action system that
+ also supports keyboard shortcuts and accelerator keys in menu items.
+
+ \list
+ \o \l{mainwindows/application}{Application}\raisedaster
+ \o \l{mainwindows/dockwidgets}{Dock Widgets}\raisedaster
+ \o \l{mainwindows/mdi}{MDI}
+ \o \l{mainwindows/menus}{Menus}\raisedaster
+ \o \l{mainwindows/recentfiles}{Recent Files}
+ \o \l{mainwindows/sdi}{SDI}
+ \endlist
+*/
+
+/*!
+ \page examples-layouts.html
+ \title Layout Examples
+
+ \previouspage Main Window Examples
+ \contentspage Qt Examples
+ \nextpage Item Views Examples
+
+ \image layout-examples.png
+
+ Qt uses a layout-based approach to widget management. Widgets are arranged in
+ the optimal positions in windows based on simple layout rules, leading to a
+ consistent look and feel.
+
+ Custom layouts can be used to provide more control over the positions and
+ sizes of child widgets.
+
+ \list
+ \o \l{layouts/basiclayouts}{Basic Layouts}\raisedaster
+ \o \l{layouts/borderlayout}{Border Layout}
+ \o \l{layouts/dynamiclayouts}{Dynamic Layouts}
+ \o \l{layouts/flowlayout}{Flow Layout}
+ \endlist
+*/
+
+/*!
+ \page examples-itemviews.html
+ \title Item Views Examples
+
+ \previouspage Layout Examples
+ \contentspage Qt Examples
+ \nextpage Graphics View Examples
+
+ \image itemview-examples.png
+
+ Item views are widgets that typically display data sets. Qt 4's model/view
+ framework lets you handle large data sets by separating the underlying data
+ from the way it is represented to the user, and provides support for
+ customized rendering through the use of delegates.
+
+ \list
+ \o \l{itemviews/addressbook}{Address Book}\raisedaster
+ \o \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model}
+ \o \l{itemviews/chart}{Chart}
+ \o \l{itemviews/coloreditorfactory}{Color Editor Factory}\raisedaster
+ \o \l{itemviews/combowidgetmapper}{Combo Widget Mapper}\raisedaster
+ \o \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model}\raisedaster
+ \o \l{itemviews/dirview}{Dir View}
+ \o \l{itemviews/editabletreemodel}{Editable Tree Model}\raisedaster
+ \o \l{itemviews/fetchmore}{Fetch More}\raisedaster
+ \o \l{itemviews/frozencolumn}{Frozen Column}\raisedaster
+ \o \l{itemviews/pixelator}{Pixelator}\raisedaster
+ \o \l{itemviews/puzzle}{Puzzle}
+ \o \l{itemviews/simpledommodel}{Simple DOM Model}\raisedaster
+ \o \l{itemviews/simpletreemodel}{Simple Tree Model}\raisedaster
+ \o \l{itemviews/simplewidgetmapper}{Simple Widget Mapper}\raisedaster
+ \o \l{itemviews/spinboxdelegate}{Spin Box Delegate}\raisedaster
+ \o \l{itemviews/stardelegate}{Star Delegate}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-graphicsview.html
+ \title Graphics View Examples
+
+ \previouspage Item Views Examples
+ \contentspage Qt Examples
+ \nextpage Painting Examples
+
+ \image graphicsview-examples.png
+
+ Qt is provided with a comprehensive canvas through the GraphicsView
+ classes.
+
+ These examples demonstrate the fundamental aspects of canvas programming
+ with Qt.
+
+ \list
+ \o \l{graphicsview/collidingmice}{Colliding Mice}\raisedaster
+ \o \l{graphicsview/diagramscene}{Diagram Scene}\raisedaster
+ \o \l{graphicsview/dragdroprobot}{Drag and Drop Robot}
+ \o \l{graphicsview/elasticnodes}{Elastic Nodes}
+ \o \l{graphicsview/portedasteroids}{Ported Asteroids}
+ \o \l{graphicsview/portedcanvas}{Ported Canvas}
+ \endlist
+*/
+
+/*!
+ \page examples-painting.html
+ \title Painting Examples
+
+ \previouspage Graphics View Examples
+ \contentspage Qt Examples
+ \nextpage Rich Text Examples
+
+ \image painting-examples.png
+
+ Qt's painting system is able to render vector graphics, images, and outline
+ font-based text with sub-pixel accuracy accuracy using anti-aliasing to
+ improve rendering quality.
+
+ These examples show the most common techniques that are used when painting
+ with Qt, from basic concepts such as drawing simple primitives to the use of
+ transformations.
+
+ \list
+ \o \l{painting/basicdrawing}{Basic Drawing}\raisedaster
+ \o \l{painting/concentriccircles}{Concentric Circles}\raisedaster
+ \o \l{painting/fontsampler}{Font Sampler}
+ \o \l{painting/imagecomposition}{Image Composition}\raisedaster
+ \o \l{painting/painterpaths}{Painter Paths}\raisedaster
+ \o \l{painting/svggenerator}{SVG Generator}\raisedaster
+ \o \l{painting/svgviewer}{SVG Viewer}
+ \o \l{painting/transformations}{Transformations}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-richtext.html
+ \title Rich Text Examples
+
+ \previouspage Painting Examples
+ \contentspage Qt Examples
+ \nextpage Desktop Examples
+
+ \image richtext-examples.png
+
+ Qt provides powerful document-oriented rich text engine that supports Unicode
+ and right-to-left scripts. Documents can be manipulated using a cursor-based
+ API, and their contents can be imported and exported as both HTML and in a
+ custom XML format.
+
+ \list
+ \o \l{richtext/calendar}{Calendar}\raisedaster
+ \o \l{richtext/orderform}{Order Form}\raisedaster
+ \o \l{richtext/syntaxhighlighter}{Syntax Highlighter}\raisedaster
+ \o \l{richtext/textobject}{Text Object}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-desktop.html
+ \title Desktop Examples
+
+ \previouspage Rich Text Examples
+ \contentspage Qt Examples
+ \nextpage Drag and Drop Examples
+
+ \image desktop-examples.png
+
+ Qt provides features to enable applications to integrate with the user's
+ preferred desktop environment.
+
+ Features such as system tray icons, access to the desktop widget, and
+ support for desktop services can be used to improve the appearance of
+ applications and take advantage of underlying desktop facilities.
+
+ \list
+ \o \l{desktop/screenshot}{Screenshot}\raisedaster
+ \o \l{desktop/systray}{System Tray}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-draganddrop.html
+ \title Drag and Drop Examples
+
+ \previouspage Desktop Examples
+ \contentspage Qt Examples
+ \nextpage Threading and Concurrent Programming Examples
+
+ \image draganddrop-examples.png
+
+ Qt supports native drag and drop on all platforms via an extensible
+ MIME-based system that enables applications to send data to each other in the
+ most appropriate formats.
+
+ Drag and drop can also be implemented for internal use by applications.
+
+ \list
+ \o \l{draganddrop/delayedencoding}{Delayed Encoding}\raisedaster
+ \o \l{draganddrop/draggableicons}{Draggable Icons}
+ \o \l{draganddrop/draggabletext}{Draggable Text}
+ \o \l{draganddrop/dropsite}{Drop Site}
+ \o \l{draganddrop/fridgemagnets}{Fridge Magnets}\raisedaster
+ \o \l{draganddrop/puzzle}{Drag and Drop Puzzle}
+ \endlist
+*/
+
+/*!
+ \page examples-threadandconcurrent.html
+ \title Threading and Concurrent Programming Examples
+
+ \previouspage Drag and Drop Examples
+ \contentspage Qt Examples
+ \nextpage Tools Examples
+
+ \image thread-examples.png
+
+ Qt 4 makes it easier than ever to write multithreaded applications. More
+ classes have been made usable from non-GUI threads, and the signals and slots
+ mechanism can now be used to communicate between threads.
+
+ Additionally, it is now possible to move objects between threads.
+
+ \list
+ \o \l{threads/queuedcustomtype}{Queued Custom Type}\raisedaster
+ \o \l{threads/mandelbrot}{Mandelbrot}\raisedaster
+ \o \l{threads/semaphores}{Semaphores}\raisedaster
+ \o \l{threads/waitconditions}{Wait Conditions}\raisedaster
+ \endlist
+
+ The QtConcurrent namespace includes a collection of classes and functions
+ for straightforward concurrent programming.
+
+ These examples show how to apply the basic techniques of concurrent
+ programming to simple problems.
+
+ \list
+ \o \l{qtconcurrent/imagescaling}{QtConcurrent Asynchronous Image Scaling}
+ \o \l{qtconcurrent/map}{QtConcurrent Map}
+ \o \l{qtconcurrent/progressdialog}{QtConcurrent Progress Dialog}
+ \o \l{qtconcurrent/runfunction}{QtConcurrent Run Function}
+ \o \l{qtconcurrent/wordcount}{QtConcurrent Word Count}
+ \endlist
+*/
+
+/*!
+ \page examples.tools.html
+ \title Tools Examples
+
+ \previouspage Threading and Concurrent Programming Examples
+ \contentspage Qt Examples
+ \nextpage Network Examples
+
+ \image tool-examples.png
+
+ Qt is equipped with a range of capable tool classes, from containers and
+ iterators to classes for string handling and manipulation.
+
+ Other classes provide application infrastructure support, handling plugin
+ loading and managing configuration files.
+
+ \list
+ \o \l{tools/codecs}{Codecs}
+ \o \l{tools/completer}{Completer}\raisedaster
+ \o \l{tools/customcompleter}{Custom Completer}\raisedaster
+ \o \l{tools/customtype}{Custom Type}\raisedaster
+ \o \l{tools/customtypesending}{Custom Type Sending}\raisedaster
+ \o \l{tools/echoplugin}{Echo Plugin}\raisedaster
+ \o \l{tools/i18n}{I18N}
+ \o \l{tools/plugandpaint}{Plug & Paint}\raisedaster
+ \o Plug & Paint Plugins: \l{tools/plugandpaintplugins/basictools}{Basic Tools}\raisedaster
+ and \l{tools/plugandpaintplugins/extrafilters}{Extra Filters}\raisedaster
+ \o \l{tools/regexp}{RegExp}
+ \o \l{tools/settingseditor}{Settings Editor}
+ \o \l{tools/styleplugin}{Style Plugin}\raisedaster
+ \o \l{tools/treemodelcompleter}{Tree Model Completer}\raisedaster
+ \o \l{tools/undoframework}{Undo Framework}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-network.html
+ \title Network Examples
+
+ \previouspage Tools Examples
+ \contentspage Qt Examples
+ \nextpage Inter-Process Communication Examples
+
+ \image network-examples.png
+
+ Qt is provided with an extensive set of network classes to support both
+ client-based and server side network programming.
+
+ These examples demonstrate the fundamental aspects of network programming
+ with Qt.
+
+ \list
+ \o \l{network/blockingfortuneclient}{Blocking Fortune Client}\raisedaster
+ \o \l{network/broadcastreceiver}{Broadcast Receiver}
+ \o \l{network/broadcastsender}{Broadcast Sender}
+ \o \l{network/network-chat}{Network Chat}
+ \o \l{network/fortuneclient}{Fortune Client}\raisedaster
+ \o \l{network/fortuneserver}{Fortune Server}\raisedaster
+ \o \l{network/ftp}{FTP}\raisedaster
+ \o \l{network/http}{HTTP}
+ \o \l{network/loopback}{Loopback}
+ \o \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster
+ \o \l{network/torrent}{Torrent}
+ \o \l{network/googlesuggest}{Google Suggest}
+ \endlist
+*/
+
+/*!
+ \page examples-ipc.html
+ \title Inter-Process Communication Examples
+
+ \previouspage Network Examples
+ \contentspage Qt Examples
+ \nextpage OpenGL Examples
+
+ \image ipc-examples.png
+
+ \list
+ \o \l{ipc/localfortuneclient}{Local Fortune Client}\raisedaster
+ \o \l{ipc/localfortuneserver}{Local Fortune Server}\raisedaster
+ \o \l{ipc/sharedmemory}{Shared Memory}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-opengl.html
+ \title OpenGL Examples
+
+ \previouspage Inter-Process Communication Examples
+ \contentspage Qt Examples
+ \nextpage Multimedia Examples
+
+ \image opengl-examples.png
+
+ Qt provides support for integration with OpenGL implementations on all
+ platforms, giving developers the opportunity to display hardware accelerated
+ 3D graphics alongside a more conventional user interface.
+
+ These examples demonstrate the basic techniques used to take advantage of
+ OpenGL in Qt applications.
+
+ \list
+ \o \l{opengl/2dpainting}{2D Painting}\raisedaster
+ \o \l{opengl/framebufferobject}{Framebuffer Object}
+ \o \l{opengl/framebufferobject2}{Framebuffer Object 2}
+ \o \l{opengl/grabber}{Grabber}
+ \o \l{opengl/hellogl}{Hello GL}\raisedaster
+ \o \l{opengl/overpainting}{Overpainting}\raisedaster
+ \o \l{opengl/pbuffers}{Pixel Buffers}
+ \o \l{opengl/pbuffers2}{Pixel Buffers 2}
+ \o \l{opengl/samplebuffers}{Sample Buffers}
+ \o \l{opengl/textures}{Textures}
+ \endlist
+*/
+
+/*!
+ \page examples-multimedia.html
+ \title Multimedia Examples
+
+ \previouspage OpenGL Examples
+ \contentspage Qt Examples
+ \nextpage SQL Examples
+
+ \image phonon-examples.png
+
+ \section1 Multimedia
+
+ Qt provides low-level audio support on linux,windows and mac platforms by default and
+ an audio plugin API to allow developers to implement there own audio support for
+ custom devices and platforms.
+
+ These examples demonstrate the basic techniques used to take advantage of
+ Audio API in Qt applications.
+
+ \list
+ \o \l{multimedia/audio/audiodevices}{Audio Devices}
+ \o \l{multimedia/audio/audiooutput}{Audio Output}
+ \o \l{multimedia/audio/audioinput}{Audio Input}
+ \endlist
+
+ \section1 Phonon
+
+ The Phonon Multimedia Framework brings multimedia support to Qt applications.
+
+ The examples and demonstrations provided show how to play music and movies
+ using the Phonon API.
+
+ \list
+ \o \l{phonon/capabilities}{Capabilities}\raisedaster
+ \o \l{phonon/musicplayer}{Music Player}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-sql.html
+ \title SQL Examples
+
+ \previouspage Multimedia Examples
+ \contentspage Qt Examples
+ \nextpage XML Examples
+
+ \image sql-examples.png
+
+ Qt provides extensive database interoperability, with support for products
+ from both open source and proprietary vendors.
+
+ SQL support is integrated with Qt's model/view architecture, making it easier
+ to provide GUI integration for your database applications.
+
+ \list
+ \o \l{sql/cachedtable}{Cached Table}\raisedaster
+ \o \l{sql/drilldown}{Drill Down}\raisedaster
+ \o \l{sql/querymodel}{Query Model}
+ \o \l{sql/relationaltablemodel}{Relational Table Model}
+ \o \l{sql/tablemodel}{Table Model}
+ \o \l{sql/sqlwidgetmapper}{SQL Widget Mapper}\raisedaster
+ \endlist
+*/
+
+
+/*!
+ \page examples-xml.html
+ \title XML Examples
+
+ \previouspage SQL Examples
+ \contentspage Qt Examples
+ \nextpage Qt Designer Examples
+
+ \image xml-examples.png XML
+
+ XML parsing and handling is supported through SAX and DOM compliant APIs
+ as well as streaming classes.
+
+ \list
+ \o \l{xml/dombookmarks}{DOM Bookmarks}
+ \o \l{xml/saxbookmarks}{SAX Bookmarks}
+ \o \l{xml/streambookmarks}{QXmlStream Bookmarks}\raisedaster
+ \o \l{xml/rsslisting}{RSS-Listing}
+ \o \l{xml/xmlstreamlint}{XML Stream Lint Example}\raisedaster
+ \endlist
+
+ The XQuery/XPath and XML Schema engines in the QtXmlPatterns modules
+ provide classes for querying XML files and custom data models.
+
+ \list
+ \o \l{xmlpatterns/recipes}{Recipes}
+ \o \l{xmlpatterns/filetree}{File System Example}
+ \o \l{xmlpatterns/qobjectxmlmodel}{QObject XML Model Example}
+ \o \l{xmlpatterns/xquery/globalVariables}{C++ Source Code Analyzer Example}
+ \o \l{xmlpatterns/trafficinfo}{Traffic Info}\raisedaster
+ \o \l{xmlpatterns/schema}{XML Schema Validation}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-designer.html
+ \title Qt Designer Examples
+
+ \previouspage XML Examples
+ \contentspage Qt Examples
+ \nextpage UiTools Examples
+
+ \image designer-examples.png QtDesigner
+
+ Qt Designer is a capable graphical user interface designer that lets you
+ create and configure forms without writing code. GUIs created with
+ Qt Designer can be compiled into an application or created at run-time.
+
+ \list
+ \o \l{designer/calculatorbuilder}{Calculator Builder}\raisedaster
+ \o \l{designer/calculatorform}{Calculator Form}\raisedaster
+ \o \l{designer/customwidgetplugin}{Custom Widget Plugin}\raisedaster
+ \o \l{designer/taskmenuextension}{Task Menu Extension}\raisedaster
+ \o \l{designer/containerextension}{Container Extension}\raisedaster
+ \o \l{designer/worldtimeclockbuilder}{World Time Clock Builder}\raisedaster
+ \o \l{designer/worldtimeclockplugin}{World Time Clock Plugin}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-uitools.html
+ \title UiTools Examples
+
+ \previouspage Qt Designer Examples
+ \contentspage Qt Examples
+ \nextpage Qt Linguist Examples
+
+ \image uitools-examples.png UiTools
+
+ \list
+ \o \l{uitools/multipleinheritance}{Multiple Inheritance}\raisedaster
+ \o \l{uitools/textfinder}{Text Finder}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-linguist.html
+ \title Qt Linguist Examples
+
+ \previouspage UiTools Examples
+ \contentspage Qt Examples
+ \nextpage Qt Script Examples
+
+ \image linguist-examples.png
+
+ Internationalization is a core feature of Qt. These examples show how to
+ access translation and localization facilities at run-time.
+
+ \list
+ \o \l{linguist/hellotr}{Hello tr()}\raisedaster
+ \o \l{linguist/arrowpad}{Arrow Pad}\raisedaster
+ \o \l{linguist/trollprint}{Troll Print}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-script.html
+ \title Qt Script Examples
+
+ \previouspage Qt Linguist Examples
+ \contentspage Qt Examples
+ \nextpage WebKit Examples
+
+ \image qtscript-examples.png QtScript
+
+ Qt is provided with a powerful embedded scripting environment through the QtScript
+ classes.
+
+ These examples demonstrate the fundamental aspects of scripting applications
+ with Qt.
+
+ \list
+ \o \l{script/calculator}{Calculator}\raisedaster
+ \o \l{script/context2d}{Context2D}\raisedaster
+ \o \l{script/defaultprototypes}{Default Prototypes}\raisedaster
+ \o \l{script/helloscript}{Hello Script}\raisedaster
+ \o \l{script/qstetrix}{Qt Script Tetrix}\raisedaster
+ \o \l{script/customclass}{Custom Script Class}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-webkit.html
+ \title WebKit Examples
+
+ \previouspage Qt Script Examples
+ \contentspage Qt Examples
+ \nextpage Help System Examples
+
+ \image webkit-examples.png WebKit
+
+ Qt provides an integrated Web browser component based on WebKit, the popular
+ open source browser engine.
+
+ These examples and demonstrations show a range of different uses for WebKit,
+ from displaying Web pages within a Qt user interface to an implementation of
+ a basic function Web browser.
+
+ \list
+ \o \l{webkit/previewer}{Previewer}\raisedaster
+ \o \l{webkit/formextractor}{Form Extractor}
+ \o \l{webkit/googlechat}{Google Chat}
+ \o \l{webkit/fancybrowser}{Fancy Browser}
+ \endlist
+*/
+
+/*!
+ \page examples-helpsystem.html
+ \title Help System Examples
+
+ \previouspage WebKit Examples
+ \contentspage Qt Examples
+ \nextpage State Machine Examples
+
+ \image assistant-examples.png HelpSystem
+
+ Support for interactive help is provided by the Qt Assistant application.
+ Developers can take advantages of the facilities it offers to display
+ specially-prepared documentation to users of their applications.
+
+ \list
+ \o \l{help/simpletextviewer}{Simple Text Viewer}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-statemachine.html
+ \title State Machine Examples
+
+ \previouspage Help System Examples
+ \contentspage Qt Examples
+ \nextpage Animation Framework Examples
+
+ \image statemachine-examples.png StateMachine
+
+ Qt provides a powerful hierarchical finite state machine through the Qt State
+ Machine classes.
+
+ These examples demonstrate the fundamental aspects of implementing
+ Statecharts with Qt.
+
+ \list
+ \o \l{statemachine/eventtransitions}{Event Transitions}\raisedaster
+ \o \l{statemachine/factorial}{Factorial States}\raisedaster
+ \o \l{statemachine/pingpong}{Ping Pong States}\raisedaster
+ \o \l{statemachine/rogue}{Rogue}\raisedaster
+ \o \l{statemachine/trafficlight}{Traffic Light}\raisedaster
+ \o \l{statemachine/twowaybutton}{Two-way Button}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-animation.html
+ \title Animation Framework Examples
+
+ \previouspage State Machine Examples
+ \contentspage Qt Examples
+ \nextpage Qt for Embedded Linux Examples
+
+ \image animation-examples.png Animation
+
+ \list
+ \o \l{animation/moveblocks}{Move Blocks}\raisedaster
+ \o \l{animation/stickman}{Stick man}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-embeddedlinux.html
+ \title Qt for Embedded Linux Examples
+
+ \previouspage Animation Framework Examples
+ \contentspage Qt Examples
+ \nextpage ActiveQt Examples
+
+ \image qt-embedded-examples.png QtEmbedded
+
+ These examples show how to take advantage of features specifically designed
+ for use on systems with limited resources, specialized hardware, and small
+ screens.
+
+ \list
+ \o \l{qws/svgalib}{Accelerated Graphics Driver}\raisedaster
+ \o \l{qws/dbscreen}{Double Buffered Graphics Driver}\raisedaster
+ \o \l{qws/mousecalibration}{Mouse Calibration}\raisedaster
+ \o \l{qws/ahigl}{OpenGL for Embedded Systems}\raisedaster
+ \o \l{qws/simpledecoration}{Simple Decoration}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-activeqt.html
+ \title ActiveQt Examples
+
+ \previouspage Qt for Embedded Linux Examples
+ \contentspage Qt Examples
+ \nextpage D-Bus Examples
+
+ \image activeqt-examples.png ActiveQt
+
+ \list
+ \o \l{activeqt/comapp}{COM App}\raisedaster
+ \o \l{Dot Net Example (ActiveQt)}{Dot Net}\raisedaster
+ \o \l{activeqt/hierarchy}{Hierarchy}\raisedaster
+ \o \l{activeqt/menus}{Menus}\raisedaster
+ \o \l{activeqt/multiple}{Multiple}\raisedaster
+ \o \l{activeqt/opengl}{OpenGL}\raisedaster
+ \o \l{activeqt/qutlook}{Qutlook}\raisedaster
+ \o \l{activeqt/simple}{Simple}\raisedaster
+ \o \l{activeqt/webbrowser}{Web Browser}\raisedaster
+ \o \l{activeqt/wrapper}{Wrapper}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-dbus.html
+ \title D-Bus Examples
+
+ \previouspage ActiveQt Examples
+ \contentspage Qt Examples
+ \nextpage Qt Quarterly
+
+ \list
+ \o \l{dbus/dbus-chat}{Chat}
+ \o \l{dbus/complexpingpong}{Complex Ping Pong}
+ \o \l{dbus/listnames}{List Names}
+ \o \l{dbus/pingpong}{Ping Pong}
+ \o \l{dbus/remotecontrolledcar}{Remote Controlled Car}
+ \endlist
+*/
diff --git a/doc/src/how-to-learn-qt.qdoc b/doc/src/getting-started/how-to-learn-qt.qdoc
index ee23509..2a1e383 100644
--- a/doc/src/how-to-learn-qt.qdoc
+++ b/doc/src/getting-started/how-to-learn-qt.qdoc
@@ -41,9 +41,10 @@
/*!
\page how-to-learn-qt.html
- \brief Links to guides and resources for learning Qt.
\title How to Learn Qt
- \ingroup howto
+ \brief Links to guides and resources for learning Qt.
+
+ \nextpage Tutorials
We assume that you already know C++ and will be using it for Qt
development. See the \l{Qt website} for more information about
@@ -79,10 +80,12 @@
common with your projects. You can also read Qt's source code since
this is supplied.
- \table
- \row \o \inlineimage qtdemo-small.png
- \o \bold{Getting an Overview}
-
+ \table 50%
+ \header
+ \o {2,1} Getting an Overview
+ \row
+ \o \inlineimage qtdemo-small.png
+ \o
If you run the \l{Examples and Demos Launcher}, you'll see many of Qt's
widgets in action.
diff --git a/doc/src/installation.qdoc b/doc/src/getting-started/installation.qdoc
index 139a3ce..10791d8 100644
--- a/doc/src/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -46,8 +46,6 @@
/*!
\group installation
\title Installation
-\ingroup buildsystem
-\ingroup topics
\brief Installing Qt on supported platforms.
The installation procedure is different on each Qt platform.
@@ -677,6 +675,20 @@ in the \l{Qt for Windows CE Requirements} document.
may cause others to be automatically installed. Other distributions may
provide system packages with similar names.
+ \section1 OpenGL Dependencies
+
+ The configure script will autodetect if OpenGL headers and libraries are
+ installed on your system, and if so, it will include the QtOpenGL module
+ in the Qt library.
+
+ If your OpenGL headers or libraries are placed in a non-standard directory,
+ you may need to change the \c QMAKE_INCDIR_OPENGL and/or
+ \c QMAKE_LIBDIR_OPENGL in the config file for your system.
+
+ The QGL documentation assumes that you are familiar with OpenGL
+ programming. If you're new to the subject a good starting point is
+ \l{http://www.opengl.org/}.
+
\section1 Phonon Dependencies
As described in the \l{Phonon Overview}, Phonon uses the GStreamer multimedia
diff --git a/doc/src/known-issues.qdoc b/doc/src/getting-started/known-issues.qdoc
index 87955bd..41bdcdf 100644
--- a/doc/src/known-issues.qdoc
+++ b/doc/src/getting-started/known-issues.qdoc
@@ -42,7 +42,7 @@
/*!
\page known-issues.html
\title Known Issues in %VERSION%
- \ingroup platform-notes
+ \ingroup platform-specific
\brief A summary of known issues in Qt %VERSION% at the time of release.
An up-to-date list of known issues with Qt %VERSION% can be found via the
@@ -133,6 +133,7 @@
\endlist
+
\section2 Mac OS X Software Support
\list
@@ -140,4 +141,34 @@
window will cause it to flash. This behavior has been reported to Apple
(bug number 5827676).
\endlist
+
+
+ \section2 Installing source packages on Unix systems
+
+ \list
+ \o If you download a Zip source package, you will need to convert
+ Windows-style line endings (CR/LF) to Unix-style line-endings (LF) when
+ you uncompress the package. To do this, give the "-a" option when you
+ run the "unzip' command.
+
+ If you fail to supply the "-a" option when unzipping the package, you
+ will see the following error message when you attempt to execute the
+ configure command:
+ "bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory"
+ \endlist
+
+
+ \section2 Running evaluation packages on Windows XP
+
+ \list
+ \o If running the qt-win-eval-%VERSION%-vs2008.exe package on a Windows XP
+ system, you may encounter the following error message:
+ "The application failed to start because the application configuration
+ is incorrect. Reinstalling the application may fix this problem.".
+
+ This error occurs because the version of the CRT component on the
+ system is incorrect. Visual Studio 2008 requires CRT90 while Windows
+ XP comes with CRT80. To solve this problem, please install the 2008 CRT
+ redistributable package from Microsoft.
+ \endlist
*/
diff --git a/doc/src/getting-started/tutorials.qdoc b/doc/src/getting-started/tutorials.qdoc
new file mode 100644
index 0000000..525b6e4
--- /dev/null
+++ b/doc/src/getting-started/tutorials.qdoc
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page tutorials.html
+ \title Tutorials
+
+ \contentspage How to Learn Qt
+ \nextpage Qt Examples
+
+ \brief Tutorials, guides and overviews to help you learn Qt.
+
+ \nextpage Qt Examples
+
+ A collection of tutorials and "walkthrough" guides are provided with Qt to
+ help new users get started with Qt development. These documents cover a
+ range of topics, from basic use of widgets to step-by-step tutorials that
+ show how an application is put together.
+
+ \table
+ \row
+ \o{2,1} \l{Widgets Tutorial}{\bold Widgets}
+ \o{2,1} \l{Address Book Tutorial}{\bold {Address Book}}
+ \row
+ \o \image widget-examples.png Widgets
+ \o
+ A beginner's guide to getting started with widgets and layouts to create
+ GUI applications.
+
+ \o \image addressbook-tutorial.png AddressBook
+ \o
+ A seven part guide to creating a fully-functioning address book
+ application. This tutorial is also available with
+ \l{Tutoriel "Carnet d'adresses"}{French explanation}.
+
+ \row
+ \o{2,1} \l{A Quick Start to Qt Designer}{\bold{Qt Designer}}
+ \o{2,1} \l{Qt Linguist Manual: Programmers#Tutorials}{\bold {Qt Linguist}}
+ \row
+ \o \image designer-examples.png QtDesigner
+ \o
+ A quick guide through \QD showing the basic steps to create a
+ form with this interactive tool.
+
+ \o \image linguist-examples.png QtLinguist
+ \o
+ A guided tour through the translations process, explaining the
+ tools provided for developers, translators and release managers.
+
+ \row
+ \o{2,1} \l{QTestLib Tutorial}{\bold QTestLib}
+ \o{2,1} \l{qmake Tutorial}{\bold qmake}
+ \row
+ \o{2,1}
+ This tutorial gives a short introduction to how to use some of the
+ features of Qt's unit-testing framework, QTestLib. It is divided into
+ four chapters.
+
+ \o{2,1}
+ This tutorial teaches you how to use \c qmake. We recommend that
+ you read the \l{qmake Manual}{qmake user guide} after completing
+ this tutorial.
+
+ \endtable
+*/
diff --git a/doc/src/groups.qdoc b/doc/src/groups.qdoc
deleted file mode 100644
index 673eff5..0000000
--- a/doc/src/groups.qdoc
+++ /dev/null
@@ -1,487 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group advanced
- \title Advanced Widgets
- \ingroup groups
-
- \brief Advanced GUI widgets such as tab widgets and progress bars.
-
- These classes provide more complex user interface widgets (controls).
-
-*/
-
-/*!
- \group animation
- \ingroup groups
-
- \title Animation Framework
- \brief Classes for animations, states and transitions.
-
- These classes provide a framework for creating both simple and complex
- animations. \l{The Animation Framework} also provides states and animated
- transitions, making it easy to create animated stateful forms.
-*/
-
-/*!
- \group abstractwidgets
- \title Abstract Widget Classes
- \ingroup groups
-
- \brief Abstract widget classes usable through subclassing.
-
- These classes are abstract widgets; they are generally not usable in
- themselves, but provide functionality that can be used by inheriting
- these classes.
-
-*/
-
-/*!
- \group accessibility
- \title Accessibility Classes
- \ingroup groups
- \ingroup topics
-
- \brief Classes that provide support for accessibility.
-
- Accessible applications are able to be used by users who cannot use
- conventional means of interaction. These classes provide support for
- accessible applications.
-
-*/
-
-/*!
- \group appearance
- \title Widget Appearance and Style
- \ingroup groups
-
- \brief Appearance customization with styles, fonts, colors etc.
-
- These classes are used to customize an application's appearance and
- style.
-
-*/
-
-/*!
- \group application
- \title Main Window and Related Classes
- \ingroup groups
-
- \brief Everything you need for a typical modern main application window,
- including menus, toolbars, workspace, etc.
-
- These classes provide everything you need for a typical modern main
- application window, like the main window itself, menu and tool bars,
- a status bar, etc.
-
-*/
-
-
-/*!
- \group basicwidgets
- \title Basic Widgets
- \ingroup groups
-
- \brief Basic GUI widgets such as buttons, comboboxes and scroll bars.
-
- These basic widgets (controls) are designed for direct use.
- There are also some \l{Abstract Widget Classes} that are designed for
- subclassing, and some more complex \l{Advanced Widgets}.
-
-*/
-
-
-/*!
- \group database
- \title Database Classes
- \ingroup groups
-
- \brief Database related classes, e.g. for SQL databases.
-
- These classes provide access to SQL databases.
-*/
-
-
-/*!
- \group dialogs
- \title Standard Dialog Classes
- \ingroup groups
-
- \brief Ready-made dialogs for file, font, color selection and more.
-
- These classes are complex widgets, composed of simpler widgets; dialog
- boxes, generally.
-*/
-
-/*!
- \group desktop
- \title Desktop Environment Classes
- \ingroup groups
-
- \brief Classes for interacting with the user's desktop environment.
-
- These classes provide ways to interact with the user's desktop environment and
- take advantage of common services.
-*/
-
-/*!
- \group draganddrop
- \title Drag And Drop Classes
- \ingroup groups
-
- \brief Classes dealing with drag and drop and mime type encoding and decoding.
-
- These classes deal with drag and drop and the necessary mime type
- encoding and decoding. See also \link dnd.html Drag and Drop with
- Qt. \endlink
-*/
-
-/*!
- \group environment
- \title Environment Classes
- \ingroup groups
-
- \brief Classes providing various global services such as event handling,
- access to system settings and internationalization.
-
- These classes providing various global services to your application such as
- event handling, access to system settings, internationalization, etc.
-
-*/
-
-/*!
- \group events
- \title Event Classes
- \ingroup groups
-
- \brief Classes used to create and handle events.
-
- These classes are used to create and handle events.
-
- For more information see the \link object.html Object model\endlink
- and \link signalsandslots.html Signals and Slots\endlink.
-*/
-
-/*!
- \group geomanagement
- \title Layout Classes
- \ingroup groups
-
- \brief Classes handling automatic resizing and moving of widgets, for
- composing complex dialogs.
-
- These classes provide automatic geometry (layout) management of widgets.
-
-*/
-
-/*!
- \group graphicsview-api
- \title Graphics View Classes
- \ingroup groups
-
- \brief Classes in the Graphics View framework for interactive applications.
-
- These classes are provided by \l{The Graphics View Framework} for interactive
- applications and are part of a larger collection of classes related to
- \l{Multimedia, Graphics and Printing}.
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial users.
-*/
-
-/*!
- \group helpsystem
- \title Help System
- \ingroup groups
-
- \brief Classes used to provide online-help for applications.
-
- \keyword help system
-
- These classes provide for all forms of online-help in your application,
- with three levels of detail:
-
- \list 1
- \o Tool Tips and Status Bar message - flyweight help, extremely brief,
- entirely integrated in the user interface, requiring little
- or no user interaction to invoke.
- \o What's This? - lightweight, but can be
- a three-paragraph explanation.
- \o Online Help - can encompass any amount of information,
- but is typically slower to call up, somewhat separated
- from the user's work, and often users feel that using online
- help is a digression from their real task.
- \endlist
-
-*/
-
-
-/*!
- \group io
- \title Input/Output and Networking
- \ingroup groups
-
- \brief Classes providing file input and output along with directory and
- network handling.
-
- These classes are used to handle input and output to and from external
- devices, processes, files etc. as well as manipulating files and directories.
-*/
-
-/*!
- \group misc
- \title Miscellaneous Classes
- \ingroup groups
-
- \brief Various other useful classes.
-
- These classes are useful classes not fitting into any other category.
-
-*/
-
-
-/*!
- \group model-view
- \title Model/View Classes
- \ingroup groups
-
- \brief Classes that use the model/view design pattern.
-
- These classes use the model/view design pattern in which the
- underlying data (in the model) is kept separate from the way the data
- is presented and manipulated by the user (in the view). See also
- \link model-view-programming.html Model/View Programming\endlink.
-
-*/
-
-/*!
- \group multimedia
- \title Multimedia, Graphics and Printing
- \ingroup groups
-
- \brief Classes that provide support for graphics (2D, and with OpenGL, 3D),
- image encoding, decoding, and manipulation, sound, animation,
- printing, etc.
-
- These classes provide support for graphics (2D, and with OpenGL, 3D),
- image encoding, decoding, and manipulation, sound, animation, printing
- etc.
-
- See also this introduction to the \link coordsys.html Qt
- coordinate system. \endlink
-
-*/
-
-/*!
- \group objectmodel
- \title Object Model
- \ingroup groups
-
- \brief The Qt GUI toolkit's underlying object model.
-
- These classes form the basis of the \l{Qt Object Model}.
-
-*/
-
-/*!
- \group organizers
- \title Organizers
- \ingroup groups
-
- \brief User interface organizers such as splitters, tab bars, button groups, etc.
-
- These classes are used to organize and group GUI primitives into more
- complex applications or dialogs.
-
-*/
-
-
-/*!
- \group plugins
- \title Plugin Classes
- \ingroup groups
-
- \brief Plugin related classes.
-
- These classes deal with shared libraries, (e.g. .so and DLL files),
- and with Qt plugins.
-
- See the \link plugins-howto.html plugins documentation\endlink.
-
- See also the \l{ActiveQt framework} for Windows.
-
-*/
-
-/*!
- \group qws
- \title Qt for Embedded Linux Classes
- \ingroup groups
-
- \ingroup qt-embedded-linux
- \brief Classes that are specific to Qt for Embedded Linux.
-
- These classes are relevant to \l{Qt for Embedded Linux} users.
-*/
-
-/*!
- \group ssl
- \title Secure Sockets Layer (SSL) Classes
- \ingroup groups
-
- \brief Classes for secure communication over network sockets.
- \keyword SSL
-
- The classes below provide support for secure network communication using
- the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} to
- perform encryption and protocol handling.
-
- See the \l{General Qt Requirements} page for information about the
- versions of OpenSSL that are known to work with Qt.
-
- \note Due to import and export restrictions in some parts of the world, we
- are unable to supply the OpenSSL Toolkit with Qt packages. Developers wishing
- to use SSL communication in their deployed applications should either ensure
- that their users have the appropriate libraries installed, or they should
- consult a suitably qualified legal professional to ensure that applications
- using code from the OpenSSL project are correctly certified for import
- and export in relevant regions of the world.
-
- When the QtNetwork module is built with SSL support, the library is linked
- against OpenSSL in a way that requires OpenSSL license compliance.
-*/
-
-/*!
- \group text
- \title Text Processing Classes
- \ingroup groups
- \ingroup text-processing
-
- \brief Classes for text processing. (See also \l{XML Classes}.)
-
- These classes are relevant to text processing. See also the
- \l{Rich Text Processing} overview and the
- \l{XML classes}.
-*/
-
-/*!
- \group thread
- \title Threading Classes
- \ingroup groups
-
- \brief Classes that provide threading support.
-
- These classes are relevant to threaded applications. See
- \l{Thread Support in Qt} for an overview of the features
- Qt provides to help with multithreaded programming.
-*/
-
-
-/*!
- \group time
- \title Date and Time Classes
- \ingroup groups
-
- \brief Classes for handling date and time.
-
- These classes provide system-independent date and time abstractions.
-
-*/
-
-/*!
- \group tools
- \title Non-GUI Classes
- \ingroup groups
-
- \brief Collection classes such as list, queue, stack and string, along
- with other classes that can be used without needing QApplication.
-
- The non-GUI classes are general-purpose collection and string classes
- that may be used independently of the GUI classes.
-
- In particular, these classes do not depend on QApplication at all,
- and so can be used in non-GUI programs.
-
-*/
-
-/*!
- \group xml-tools
- \title XML Classes
- \ingroup groups
-
- \brief Classes that support XML, via, for example DOM and SAX.
-
- These classes are relevant to XML users.
-*/
-
-/*!
- \group script
- \title Scripting Classes
- \ingroup groups
- \ingroup scripting
-
- \brief Qt Script-related classes and overviews.
-
- These classes are relevant to Qt Script users.
-*/
-
-/*!
- \group scripttools
- \title Script Tools
- \ingroup groups
- \ingroup scripting
-
- \brief Classes for managing and debugging scripts.
-
- These classes are relevant to developers who are working with Qt Script's
- debugging features.
-*/
-
-/*!
- \group statemachine
- \ingroup groups
-
- \title State Machine Classes
- \brief Classes for constructing and executing state graphs.
-
- These classes are provided by \l{The State Machine Framework} for creating
- event-driven state machines.
-*/
diff --git a/doc/src/accelerators.qdoc b/doc/src/howtos/accelerators.qdoc
index 4376730..bb1b2d7 100644
--- a/doc/src/accelerators.qdoc
+++ b/doc/src/howtos/accelerators.qdoc
@@ -42,7 +42,8 @@
/*!
\page accelerators.html
\title Standard Accelerator Keys
- \ingroup gui-programming
+
+ \ingroup best-practices
Applications invariably need to define accelerator keys for actions.
Qt fully supports accelerators, for example with \l Q3Accel::shortcutKey().
diff --git a/doc/src/appicon.qdoc b/doc/src/howtos/appicon.qdoc
index 901b854..a664ade 100644
--- a/doc/src/appicon.qdoc
+++ b/doc/src/howtos/appicon.qdoc
@@ -39,22 +39,11 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Qt Application Icon Usage Documentation.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page appicon.html
\title Setting the Application Icon
- \ingroup gui-programming
+
+ \ingroup best-practices
The application icon, typically displayed in the top-left corner of an
application's top-level windows, is set by calling the
diff --git a/doc/src/custom-types.qdoc b/doc/src/howtos/custom-types.qdoc
index aa7d386..997c8bc 100644
--- a/doc/src/custom-types.qdoc
+++ b/doc/src/howtos/custom-types.qdoc
@@ -42,9 +42,10 @@
/*!
\page custom-types.html
\title Creating Custom Qt Types
- \ingroup architecture
\brief How to create and register new types with Qt.
+ \ingroup best-practices
+
\tableofcontents
\section1 Overview
diff --git a/doc/src/guibooks.qdoc b/doc/src/howtos/guibooks.qdoc
index 3e89738..0a7200e 100644
--- a/doc/src/guibooks.qdoc
+++ b/doc/src/howtos/guibooks.qdoc
@@ -41,9 +41,8 @@
/*!
\page guibooks.html
-
\title Books about GUI Design
- \ingroup gui-programming
+ \ingroup best-practices
This is not a comprehensive list -- there are many other books worth
buying. Here we mention just a few user interface books that don't
diff --git a/doc/src/qtopenvg.qdoc b/doc/src/howtos/openvg.qdoc
index 9f0df58..f2049ce 100644
--- a/doc/src/qtopenvg.qdoc
+++ b/doc/src/howtos/openvg.qdoc
@@ -40,28 +40,26 @@
****************************************************************************/
/*!
- \module QtOpenVG
- \title QtOpenVG Module
+ \page openvg.html
+ \title OpenVG Rendering in Qt
\since 4.6
- \contentspage Qt's Modules
- \previouspage QtOpenGL
- \nextpage QtScript
- \ingroup modules
+ \ingroup best-practices
- \brief The QtOpenVG module provides support classes for OpenVG painting.
-
- \tableofcontents
+ \brief Efficient rendering on embedded devices with OpenVG
OpenVG is a standard API from the
\l{http://www.khronos.org/openvg}{Khronos Group} for accelerated
2D vector graphics that is appearing in an increasing number of
- embedded devices.
+ embedded devices. The QtOpenVG plugin provides support for OpenVG
+ painting.
OpenVG is optimized for 2D vector operations, and closely matches
- the functionality in QPainter. It can therefore be an excellent
+ the functionality in QPainter. It can therefore be an excellent
substitute for the default raster-based QPaintEngine on hardware
that supports OpenVG.
+ \tableofcontents
+
\section1 Building Qt with OpenVG support
OpenVG support can be enabled by passing the \c{-openvg} option
@@ -319,6 +317,6 @@
QPixmap, and will not be accelerated. This issue may be addressed in
a future version of the engine.
- ShivaVG support is highly experimental and limited to Qt/X11. It is
+ ShivaVG support is highly experimental and limited to Qt/X11. It is
provided as an example of how to integrate a non-EGL engine.
- */
+*/
diff --git a/doc/src/qtdesigner.qdoc b/doc/src/howtos/qtdesigner.qdoc
index 00af297..ae84f93 100644
--- a/doc/src/qtdesigner.qdoc
+++ b/doc/src/howtos/qtdesigner.qdoc
@@ -40,33 +40,9 @@
****************************************************************************/
/*!
- \module QtDesigner
- \title QtDesigner Module
- \contentspage Qt's Modules
- \previouspage Qt3Support
- \nextpage QtUiTools
- \ingroup modules
-
- \brief The QtDesigner module provides classes that allow you to
- create your own custom widget plugins for Qt Designer, and classes
- that enable you to access Qt Designer's components.
-
- In addition, the QFormBuilder class provides the possibility of
- constructing user interfaces from UI files at run-time.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 0
-
- To link against the module, add this line to your \c qmake .pro
- file:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 1
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
- users.
+ \page qtdesigner-components.html
+ \title Creating and Using Components for Qt Designer
+ \ingroup best-practices
\tableofcontents
diff --git a/doc/src/howtos/restoring-geometry.qdoc b/doc/src/howtos/restoring-geometry.qdoc
new file mode 100644
index 0000000..c9e6f4f
--- /dev/null
+++ b/doc/src/howtos/restoring-geometry.qdoc
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page restoring-geometry.html
+ \title Restoring a Window's Geometry
+
+ \ingroup best-practices
+
+ This document describes how to save and restore a window's
+ geometry using the geometry properties. On Windows, this is
+ basically storing the result of QWidget::geometry() and calling
+ QWidget::setGeometry() in the next session before calling
+ \l{QWidget::show()}{show()}.
+
+ On X11, this won't work because an invisible window doesn't have
+ a frame yet. The window manager will decorate the window later.
+ When this happens, the window shifts towards the bottom/right
+ corner of the screen depending on the size of the decoration frame.
+ Although X provides a way to avoid this shift, most window managers
+ fail to implement this feature.
+
+ Since version 4.2, Qt provides functions that saves and restores a
+ window's geometry and state for you. QWidget::saveGeometry()
+ saves the window geometry and maximized/fullscreen state, while
+ QWidget::restoreGeometry() restores it. The restore function also
+ checks if the restored geometry is outside the available screen
+ geometry, and modifies it as appropriate if it is.
+
+ If those functions are not available or cannot be used, then a
+ workaround is to call \l{QWidget::setGeometry()}{setGeometry()}
+ after \l{QWidget::show()}{show()}. This has the two disadvantages
+ that the widget appears at a wrong place for a millisecond
+ (results in flashing) and that currently only every second window
+ manager gets it right. A safer solution is to store both
+ \l{QWidget::pos()}{pos()} and \l{QWidget::size()}{size()} and to
+ restore the geometry using \l{QWidget::resize()} and
+ \l{QWidget::move()}{move()} before calling
+ \l{QWidget::show()}{show()}, as demonstrated in the following
+ code snippets (from the \l{mainwindows/application}{Application}
+ example):
+
+ \snippet examples/mainwindows/application/mainwindow.cpp 35
+ \codeline
+ \snippet examples/mainwindows/application/mainwindow.cpp 38
+
+ This method works on Windows, Mac OS X, and most X11 window
+ managers.
+*/
diff --git a/doc/src/session.qdoc b/doc/src/howtos/session.qdoc
index 3e4bff3..8e51b6b 100644
--- a/doc/src/session.qdoc
+++ b/doc/src/howtos/session.qdoc
@@ -42,7 +42,8 @@
/*!
\page session.html
\title Session Management
- \ingroup gui-programming
+
+ \ingroup best-practices
A \e session is a group of running applications, each of which has a
particular state. The session is controlled by a service called the \e
diff --git a/doc/src/sharedlibrary.qdoc b/doc/src/howtos/sharedlibrary.qdoc
index de27c43..1e108a6 100644
--- a/doc/src/sharedlibrary.qdoc
+++ b/doc/src/howtos/sharedlibrary.qdoc
@@ -39,22 +39,12 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
- \group deployment
\page sharedlibrary.html
- \ingroup buildsystem
-
\title Creating Shared Libraries
+
+ \ingroup best-practices
+
The following sections list certain things that should be taken into
account when creating shared libraries.
diff --git a/doc/src/timers.qdoc b/doc/src/howtos/timers.qdoc
index c1e0023..ed46b76 100644
--- a/doc/src/timers.qdoc
+++ b/doc/src/howtos/timers.qdoc
@@ -42,9 +42,10 @@
/*!
\page timers.html
\title Timers
- \ingroup architecture
\brief How to use timers in your application.
+ \ingroup best-practices
+
QObject, the base class of all Qt objects, provides the basic
timer support in Qt. With QObject::startTimer(), you start a
timer with an interval in milliseconds as argument. The function
diff --git a/doc/src/unix-signal-handlers.qdoc b/doc/src/howtos/unix-signal-handlers.qdoc
index cecd3f9..4e123bc 100644
--- a/doc/src/unix-signal-handlers.qdoc
+++ b/doc/src/howtos/unix-signal-handlers.qdoc
@@ -42,9 +42,11 @@
/*!
\page unix-signals.html
\title Calling Qt Functions From Unix Signal Handlers
- \ingroup platform-notes
\brief You can't. But don't despair, there is a way...
+ \ingroup platform-specific
+ \ingroup best-practices
+
You \e can't call Qt functions from Unix signal handlers. The
standard POSIX rule applies: You can only call async-signal-safe
functions from signal handlers. See \l
diff --git a/doc/src/images/activeqt-examples.png b/doc/src/images/activeqt-examples.png
new file mode 100644
index 0000000..bda8eba
--- /dev/null
+++ b/doc/src/images/activeqt-examples.png
Binary files differ
diff --git a/doc/src/images/animation-examples.png b/doc/src/images/animation-examples.png
new file mode 100644
index 0000000..bfc5990
--- /dev/null
+++ b/doc/src/images/animation-examples.png
Binary files differ
diff --git a/doc/src/images/dbus-examples.png b/doc/src/images/dbus-examples.png
new file mode 100644
index 0000000..6768935
--- /dev/null
+++ b/doc/src/images/dbus-examples.png
Binary files differ
diff --git a/doc/src/images/ipc-examples.png b/doc/src/images/ipc-examples.png
new file mode 100644
index 0000000..815aed3
--- /dev/null
+++ b/doc/src/images/ipc-examples.png
Binary files differ
diff --git a/doc/src/images/qq-thumbnail.png b/doc/src/images/qq-thumbnail.png
new file mode 100644
index 0000000..295ef13
--- /dev/null
+++ b/doc/src/images/qq-thumbnail.png
Binary files differ
diff --git a/doc/src/images/statemachine-examples.png b/doc/src/images/statemachine-examples.png
new file mode 100644
index 0000000..b2ec66e
--- /dev/null
+++ b/doc/src/images/statemachine-examples.png
Binary files differ
diff --git a/doc/src/images/webkit-examples.png b/doc/src/images/webkit-examples.png
index 55bbd92..23ddf1c 100644
--- a/doc/src/images/webkit-examples.png
+++ b/doc/src/images/webkit-examples.png
Binary files differ
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index 962e63d..b0695b8 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -41,195 +41,124 @@
/*!
\page index.html
-
\keyword Qt Reference Documentation
- \if defined(qtopiacore)
- \if defined(opensourceedition)
- \title Qt for Embedded Linux Reference Documentation (Open Source Edition)
- \endif
-
- \if defined(desktoplightedition)
- \title Qt for Embedded Linux Reference Documentation (GUI Framework Edition)
- \endif
-
- \if defined(desktopedition)
- \title Qt for Embedded Linux Reference Documentation (Full Framework Edition)
- \endif
-
- \if !defined(opensourceedition) \
- && !defined(desktoplightedition) \
- && !defined(desktopedition)
- \title Qt for Embedded Linux Reference Documentation
- \endif
-
- \subtitle Qt for Embedded Linux
+ \if defined(opensourceedition)
+ \title Qt Reference Documentation (Open Source Edition)
\endif
- \if !defined(qtopiacore)
- \if defined(opensourceedition)
- \title Qt Reference Documentation (Open Source Edition)
- \endif
-
- \if defined(desktoplightedition)
- \title Qt Reference Documentation (GUI Framework Edition)
- \endif
- \if defined(desktopedition)
- \title Qt Reference Documentation (Full Framework Edition)
- \endif
+ \if defined(desktoplightedition)
+ \title Qt Reference Documentation (GUI Framework Edition)
+ \endif
- \if !defined(opensourceedition) \
- && !defined(desktoplightedition) \
- && !defined(desktopedition)
- \title Qt Reference Documentation
- \endif
+ \if defined(desktopedition)
+ \title Qt Reference Documentation (Full Framework Edition)
\endif
+ \if !defined(opensourceedition) \
+ && !defined(desktoplightedition) \
+ && !defined(desktopedition)
+ \title Qt Reference Documentation
+ \endif
+
\raw HTML
- <table cellpadding="2" cellspacing="1" border="0" width="100%" class="indextable">
+ <table cellpadding="2" cellspacing="1" border="0" width="95%" class="indextable" align="center">
<tr>
<th class="titleheader" width="33%">
- Getting Started
- </th>
+ Getting Started</th>
<th class="titleheader" width="33%">
- General
- </th>
+ API Reference</th>
<th class="titleheader" width="33%">
- Developer Resources
- </th>
+ Working with Qt</th>
</tr>
<tr>
<td valign="top">
<ul>
- <li><strong><a href="qt4-5-intro.html">What's New in Qt 4.5</a></strong></li>
- <li><a href="how-to-learn-qt.html">How to Learn Qt</a></li>
- <li><a href="installation.html">Installation</a></li>
- <li><a href="tutorials.html">Tutorials</a>, <a href="examples.html">Examples</a> and <a href="demos.html">Demonstrations</a></li>
- <li><a href="porting4.html">Porting from Qt 3 to Qt 4</a></li>
+ <li><a href="installation.html">Installation</a> and <a href="how-to-learn-qt.html">First Steps with Qt</a></li>
+ <li><a href="tutorials.html">Tutorials</a> and <a href="examples.html">Examples</a></li>
+ <li><a href="demos.html">Demonstrations</a> and <a href="qt4-5-intro.html"><b>New in Qt 4.5</b></a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="http://qt.nokia.com/products">About Qt</a></li>
- <li><a href="http://qt.nokia.com/about">About Us</a></li>
- <li><a href="commercialeditions.html">Commercial Edition</a></li>
- <li><a href="opensourceedition.html">Open Source Edition</a></li>
- <li><a href="supported-platforms.html">Supported Platforms</a></li>
+ <li><a href="classlists.html">C++ Class Documentation</a></li>
+ <li><a href="frameworks-technologies.html">Frameworks and Technologies</a></li>
+ <li><a href="best-practices.html">How-To&#39;s and Best Practices</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="http://qt.nokia.com/developer/faqs/">Frequently Asked Questions</a></li>
- <li><a href="http://qt.nokia.com/developer/community/">Qt Community Web Sites</a></li>
- <li><a href="http://qt.nokia.com/doc/qq/">Qt Quarterly</a></li>
- <li><a href="bughowto.html">How to Report a Bug</a></li>
- <li><a href="http://qt.nokia.com/developer/">Other Online Resources</a></li>
+ <li><a href="developing-with-qt.html">Cross-Platform Development with Qt</a></li>
+ <li><a href="qtestlib-manual.html">Unit Testing</a> and <a href="debug.html">Debugging</a></li>
+ <li><a href="deployment.html">Deploying Qt Applications</a></li>
</ul>
</td>
</tr>
<tr>
- <th class="titleheader">
- API Reference
- </th>
- <th class="titleheader">
- Core Features
- </th>
- <th class="titleheader">
- Key Technologies
- </th>
+ <th class="largeheader">
+ Fundamentals</th>
+ <th class="largeheader">
+ User Interface Design</th>
+ <th class="largeheader">
+ Technologies</th>
</tr>
<tr>
- <td valign="top">
+ <td valign="top" class="largeindex">
<ul>
- <li><a href="classes.html">All Classes</a></li>
- <li><a href="mainclasses.html">Main Classes</a></li>
- <li><a href="groups.html">Grouped Classes</a></li>
- <li><a href="annotated.html">Annotated Classes</a></li>
- <li><a href="modules.html">Qt Classes by Module</a></li>
- <li><a href="namespaces.html">All Namespaces</a></li>
- <li><a href="hierarchy.html">Inheritance Hierarchy</a></li>
- <li><a href="functions.html">All Functions</a></li>
- <li><a href="qt-embedded.html">Qt for Embedded Platforms</a></li>
- <li><a href="overviews.html">All Overviews and HOWTOs</a></li>
- <li><a href="gallery.html">Qt Widget Gallery</a></li>
- <li><a href="qtglobal.html">Qt Global Declarations</a></li>
+ <li><a href="object.html">The Qt Object Model</a></li>
+ <li><a href="eventsandfilters.html">Event System</a></li>
+ <li><a href="threads.html">Threading</a></li>
+ <li><a href="internationalization.html">Internationalization</a></li>
+ <li><a href="platform-specific.html">Platform Specifics</a></li>
</ul>
</td>
- <td valign="top">
+ <td valign="top" class="largeindex">
<ul>
- <li><a href="signalsandslots.html">Signals and Slots</a></li>
- <li><a href="object.html">Object Model</a></li>
- <li><a href="layout.html">Layout Management</a></li>
- <li><a href="qt4-mainwindow.html">Main Window Architecture</a></li>
- <li><a href="paintsystem.html">Paint System</a></li>
- <li><a href="graphicsview.html">Graphics View</a></li>
- <li><a href="accessible.html">Accessibility</a></li>
- <li><a href="containers.html">Tool and Container Classes</a></li>
- <li><a href="richtext.html">Rich Text Processing</a></li>
- <li><a href="i18n.html">Internationalization</a></li>
- <li><a href="plugins-howto.html">Plugin System</a></li>
- <li><a href="threads.html">Multithreaded Programming</a></li>
- <li><a href="ipc.html">Inter-Process Communication (IPC)</a></li>
- <li><a href="qtestlib-manual.html">Unit Testing Framework</a></li>
+ <li><a href="widgets-and-layouts.html">Widgets and Layouts</a></li>
+ <li><a href="application-windows.html">Application Windows</a></li>
+ <li><a href="paintsystem.html">Painting and Printing</a></li>
+ <li><a href="graphicsview.html">Canvas UI with Graphics View</a></li>
+ <li><a href="webintegration.html">Integrating Web Content</a></li>
</ul>
</td>
- <td valign="top">
+ <td valign="top" class="largeindex">
<ul>
- <li><a href="model-view-programming.html">Model/View Programming</a></li>
- <li><a href="stylesheet.html">Style Sheets</a></li>
- <li><a href="qthelp.html">Help Module</a></li>
- <li><a href="qtnetwork.html">Network Module</a></li>
- <li><a href="qtopengl.html">OpenGL Module</a></li>
- <li><a href="qtopenvg.html">OpenVG Module</a></li>
- <li><a href="qtscript.html">Script Module</a></li>
- <li><a href="qtsql.html">SQL Module</a></li>
- <li><a href="qtsvg.html">SVG Module</a></li>
- <li><a href="qtwebkit.html">WebKit Integration</a></li>
- <li><a href="qtxml.html">XML Module</a></li>
- <li><a href="qtxmlpatterns.html">XML Patterns: XQuery &amp; XPath</a></li>
- <li><a href="phonon-module.html">Phonon Multimedia Framework</a></li>
- <li><a href="qtscripttools.html">Script Tools Module</a></li>
- <li><a href="activeqt.html">ActiveQt Framework</a></li>
+ <li><a href="io.html">Input/Output</a> and <a href="resources.html">Resources</a></li>
+ <li><a href="network-programming.html">Network Programming</a></li>
+ <li><a href="sql-programming.html">SQL Development</a></li>
+ <li><a href="xml-processing.html">XML Processing</a></li>
+ <li><a href="scripting.html">Scripting</a></li>
</ul>
</td>
</tr>
<tr>
<th class="titleheader">
- Add-ons &amp; Services
- </th>
+ Community and Resources</th>
<th class="titleheader">
- Tools
- </th>
+ Contributing</th>
<th class="titleheader">
- Licenses &amp; Credits
- </th>
+ Licenses</th>
</tr>
<tr>
<td valign="top">
<ul>
- <li><a href="http://qt.nokia.com/products/add-on-products">Qt Solutions</a></li>
- <li><a href="http://qt.nokia.com/products/appdev">Partner Add-ons</a></li>
- <li><a href="http://qt-apps.org">Third-Party Qt Components (qt-apps.org)</a></li>
- <li><a href="http://qt.nokia.com/support-services/support-services/">Support</a></li>
- <li><a href="http://qt.nokia.com/support-services/training/">Training</a></li>
+ <li><a href="http://qt.nokia.com/developer">Online Resources</a></li>
+ <li><a href="http://labs.qt.nokia.com/blogs">Developer Blogs</a></li>
+ <li><a href="http://qt.nokia.com/support-services">Support</a>, <a href="http://qt.nokia.com/services-partners">Training and Services</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="designer-manual.html">Qt Designer</a></li>
- <li><a href="assistant-manual.html">Qt Assistant</a></li>
- <li><a href="linguist-manual.html">Qt Linguist</a></li>
- <li><a href="qmake-manual.html">qmake</a></li>
- <li><a href="qttools.html">All Tools</a></li>
+ <li><a href="bughowto.html">Report Bugs and Make Suggestions</a></li>
+ <li><a href="http://qt.gitorious.org">Open Repository</a></li>
+ <li><a href="credits.html">Credits</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="gpl.html">GNU GPL</a>, <a href="lgpl.html">GNU LGPL</a></li>
- <li><a href="3rdparty.html">Third-Party Licenses Used in Qt</a></li>
- <li><a href="licenses.html">Other Licenses Used in Qt</a></li>
- <li><a href="trademarks.html">Trademark Information</a></li>
- <li><a href="credits.html">Credits</a></li>
+ <li><a href="gpl.html">GNU GPL</a>, <a href="lgpl.html">GNU LGPL</a></li>
+ <li><a href="commercialeditions.html">Commercial Editions</a></li>
+ <li><a href="licensing.html">Licenses Used in Qt</a></li>
</ul>
</td>
</tr>
diff --git a/doc/src/i18n.qdoc b/doc/src/internationalization/i18n.qdoc
index 22f82be..25c35c7 100644
--- a/doc/src/i18n.qdoc
+++ b/doc/src/internationalization/i18n.qdoc
@@ -41,9 +41,12 @@
/*!
\group i18n
- \title Internationalization with Qt
- \ingroup topics
+ \title Qt Classes for Internationalization
+*/
+/*!
+ \page internationalization.html
+ \title Internationalization with Qt
\brief Information about Qt's support for internationalization and multiple languages.
\keyword internationalization
@@ -53,6 +56,14 @@
the application usable by people in countries other than one's own.
\tableofcontents
+
+ \section1 Relevant Qt Classes and APIs
+
+ These classes support internationalizing of Qt applications.
+
+ \annotatedlist i18n
+
+ \section1 Languages and Writing Systems
In some cases internationalization is simple, for example, making a US
application accessible to Australian or British users may require
@@ -501,8 +512,4 @@
For details on Mac-specific translation, refer to the Qt/Mac Specific Issues
document \l{Qt for Mac OS X - Specific Issues#Translating the Application Menu and Native Dialogs}{here}.
-
- \section1 Relevant Qt Classes
-
- These classes are relevant to internationalizing Qt applications.
*/
diff --git a/doc/src/linguist-manual.qdoc b/doc/src/internationalization/linguist-manual.qdoc
index a67d65a..a67d65a 100644
--- a/doc/src/linguist-manual.qdoc
+++ b/doc/src/internationalization/linguist-manual.qdoc
diff --git a/doc/src/legal/commercialeditions.qdoc b/doc/src/legal/commercialeditions.qdoc
index 93c1bc0..761a53b 100644
--- a/doc/src/legal/commercialeditions.qdoc
+++ b/doc/src/legal/commercialeditions.qdoc
@@ -54,8 +54,7 @@
If you want to develop Free or Open Source software for release using a recognized
Open Source license, you can use the \l{Open Source Versions of Qt}.
- The table below summarizes the differences between the three
- commercial editions:
+ The table below summarizes the differences between the two commercial editions:
\table 75%
\header \o{1,2} Features \o{2,1} Editions
diff --git a/doc/src/legal/editions.qdoc b/doc/src/legal/editions.qdoc
index cf1534d..f29322d 100644
--- a/doc/src/legal/editions.qdoc
+++ b/doc/src/legal/editions.qdoc
@@ -39,18 +39,6 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Documentation of Qt editions.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page editions.html
\title Qt Editions
diff --git a/doc/src/legal/licenses.qdoc b/doc/src/legal/licenses.qdoc
index 7414667..7a15f31 100644
--- a/doc/src/legal/licenses.qdoc
+++ b/doc/src/legal/licenses.qdoc
@@ -42,7 +42,6 @@
/*!
\group licensing
\title Licensing Information
- \ingroup topics
\brief Information about licenses and licensing issues.
These documents include information about Qt's licenses and the licenses
diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc
index 9b0e58a..2fc6eaf 100644
--- a/doc/src/modules.qdoc
+++ b/doc/src/modules.qdoc
@@ -44,15 +44,17 @@
\title Qt's Modules
\startpage index.html Qt Reference Documentation
\nextpage QtCore
+
+ \ingroup classlists
Qt 4 consists of several modules, each of which lives in a
separate library.
- Modules for general software development:
-
\table 80%
+ \header \o {2,1} \bold{Modules for general software development}
\row \o \l{QtCore} \o Core non-graphical classes used by other modules
\row \o \l{QtGui} \o Graphical user interface (GUI) components
+ \row \o \l{QtMultimedia} \o Classes for low-level multimedia functionality
\row \o \l{QtNetwork} \o Classes for network programming
\row \o \l{QtOpenGL} \o OpenGL support classes
\row \o \l{QtOpenVG} \o OpenVG support classes
@@ -65,30 +67,15 @@
\row \o \l{QtXmlPatterns} \o An XQuery & XPath engine for XML and custom data models
\row \o \l{Phonon Module}{Phonon} \o Multimedia framework classes
\row \o \l{Qt3Support} \o Qt 3 compatibility classes
- \endtable
-
- Modules for working with Qt's tools:
-
- \table 80%
+ \header \o {2,1} \bold{Modules for working with Qt's tools}
\row \o \l{QtDesigner} \o Classes for extending \QD
\row \o \l{QtUiTools} \o Classes for handling \QD forms in applications
\row \o \l{QtHelp} \o Classes for online help
- \row \o \l{QtAssistant} \o Support for online help
\row \o \l{QtTest} \o Tool classes for unit testing
- \endtable
-
- The following extension modules are available in the \l{Qt
- Commercial Editions} on Windows:
-
- \table 80%
+ \header \o {2,1} \bold{Modules for Windows developers}
\row \o \l{QAxContainer} \o Extension for accessing ActiveX controls
\row \o \l{QAxServer} \o Extension for writing ActiveX servers
- \endtable
-
- The following extension module is available in all \l {Qt Editions}
- on Unix platforms:
-
- \table 80%
+ \header \o {2,1} \bold{Modules for Unix developers}
\row \o \l{QtDBus} \o Classes for Inter-Process Communication using the D-Bus
\endtable
@@ -98,9 +85,928 @@
\snippet doc/src/snippets/code/doc_src_modules.qdoc 0
- On Windows, if you do not use \l qmake, the \l{Visual Studio Integration}
- available to \l{Qt Commercial Editions}{commercial licensees}, or other
- build tools such as CMake, you also need to link against the \c qtmain library.
+ On Windows, if you do not use \l qmake
+ or other build tools such as CMake, you also need to link against
+ the \c qtmain library.
\sa {Qt's Classes}
*/
+
+/*!
+ \module QtCore
+ \title QtCore Module
+ \contentspage Qt's Modules
+ \previouspage Qt's Modules
+ \nextpage QtGui
+ \ingroup modules
+
+ \keyword QtCore
+
+ \brief The QtCore module contains core non-GUI functionality.
+
+ All other Qt modules rely on this module. To include the
+ definitions of the module's classes, use the following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtcore.qdoc 0
+
+ The QtCore module is part of all \l{Qt editions}.
+*/
+
+
+/*!
+ \module QtGui
+ \title QtGui Module
+ \contentspage Qt's Modules
+ \previouspage QtCore
+ \nextpage QtNetwork
+ \ingroup modules
+
+ \brief The QtGui module extends QtCore with GUI functionality.
+
+ To include the definitions of both modules' classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtgui.qdoc 0
+
+ The QtGui module is part of the \l{Qt GUI Framework Edition},
+ the \l{Qt Full Framework Edition}, and the \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtMultimedia
+ \title QtMultimedia Module
+ \contentspage Qt's Modules
+ \previouspage QtCore
+ \nextpage QtNetwork
+ \ingroup modules
+
+ \brief The QtMultimedia module provides low-level multimedia functionality.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtmultimedia.qdoc 1
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtmultimedia.qdoc 0
+
+ The functionality provided by the \l{Phonon Module} is on a higher level
+ and in many cases more suitable for application developers.
+*/
+
+/*!
+ \module QtNetwork
+ \title QtNetwork Module
+ \contentspage Qt's Modules
+ \previouspage QtMultimedia
+ \nextpage QtOpenGL
+ \ingroup modules
+
+ \brief The QtNetwork module provides classes to make network programming
+ easier and portable.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 1
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 0
+
+ The QtNetwork module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtOpenGL
+ \title QtOpenGL Module
+ \contentspage Qt's Modules
+ \previouspage QtNetwork
+ \nextpage QtOpenVG
+ \ingroup modules
+
+ \brief The QtOpenGL module offers classes that make it easy to
+ use OpenGL in Qt applications.
+
+ OpenGL is a standard API for rendering 3D graphics. OpenGL only
+ deals with 3D rendering and provides little or no support for GUI
+ programming issues. The user interface for an OpenGL application
+ must be created with another toolkit, such as Motif on the X
+ platform, Microsoft Foundation Classes (MFC) under Windows, or Qt
+ on both platforms.
+
+ \note OpenGL is a trademark of Silicon Graphics, Inc. in
+ the United States and other countries.
+
+ The Qt OpenGL module makes it easy to use OpenGL in Qt applications.
+ It provides an OpenGL widget class that can be used just like any
+ other Qt widget, except that it opens an OpenGL display buffer where
+ you can use the OpenGL API to render the contents.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 1
+
+ The Qt OpenGL module is implemented as a platform-independent Qt/C++
+ wrapper around the platform-dependent GLX (version 1.3 or later),
+ WGL, or AGL C APIs. Although the basic functionality provided is very
+ similar to Mark Kilgard's GLUT library, applications using the Qt
+ OpenGL module can take advantage of the whole Qt API for
+ non-OpenGL-specific GUI functionality.
+
+ The QtOpenGL module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}. It is available on Windows, X11, and Mac OS X.
+ \l{Qt for Embedded Linux} supports OpenGL ES (OpenGL for Embedded Systems).
+ To be able to use the OpenGL API in \l{Qt for Embedded Linux}, it must be
+ integrated with the Q Window System (QWS). See the
+ \l{Qt for Embedded Linux and OpenGL} documentation for details.
+*/
+
+/*!
+ \module QtOpenVG
+ \title QtOpenVG Module
+ \since 4.6
+ \contentspage Qt's Modules
+ \previouspage QtOpenGL
+ \nextpage QtScript
+ \ingroup modules
+
+ \brief The QtOpenVG module is a plugin that provides support for
+ OpenVG painting.
+
+ OpenVG is a standard API from the
+ \l{http://www.khronos.org/openvg}{Khronos Group} for accelerated
+ 2D vector graphics that is appearing in an increasing number of
+ embedded devices.
+
+ OpenVG support can be enabled by passing the \c{-openvg} option
+ to configure. It is assumed that the following qmake variables
+ are set to appropriate values in the qmake.conf file for your
+ platform:
+
+ \list
+ \o QMAKE_INCDIR_OPENVG
+ \o QMAKE_LIBDIR_OPENVG
+ \o QMAKE_LIBS_OPENVG
+ \endlist
+
+ Most OpenVG implementations are based on EGL, so the following
+ variables may also need to be set:
+
+ \list
+ \o QMAKE_INCDIR_EGL
+ \o QMAKE_LIBDIR_EGL
+ \o QMAKE_LIBS_EGL
+ \endlist
+
+ See \l{qmake Variable Reference} for more information on these variables.
+
+ Two kinds of OpenVG engines are currently supported: EGL based,
+ and engines built on top of OpenGL such as
+ \l{http://sourceforge.net/projects/shivavg}{ShivaVG}.
+ EGL based engines are preferred.
+
+ Once the graphics system plugin has been built and installed,
+ applications can be run as follows to use the plugin:
+
+ \code
+ app -graphicssystem OpenVG
+ \endcode
+
+ If ShivaVG is being used, then substitute \c ShivaVG instead of
+ \c OpenVG in the line above.
+*/
+
+/*!
+ \module QtScript
+ \title QtScript Module
+ \since 4.3
+ \contentspage Qt's Modules
+ \previouspage QtOpenVG
+ \nextpage QtScriptTools
+ \ingroup modules
+
+ \brief The QtScript module provides classes for making Qt applications scriptable.
+
+ The QtScript module only provides core scripting facilities; the
+ QtScriptTools module provides additional Qt Script-related
+ components that application developers may find useful.
+
+ \tableofcontents
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 1
+
+ The QtScript module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtScriptTools
+ \title QtScriptTools Module
+ \since 4.5
+ \contentspage Qt's Modules
+ \previouspage QtScript
+ \nextpage QtSql
+ \ingroup modules
+
+ \brief The QtScriptTools module provides additional components for applications that use Qt Script.
+
+ \tableofcontents
+
+ \section1 Configuring the Build Process
+
+ Applications that use the Qt Script Tools classes need to
+ be configured to be built against the QtScriptTools module.
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c .pro file:
+
+ \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 1
+
+ The QtScriptTools module is part of the \l{Qt Full Framework Edition} and
+ the \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtSql
+ \title QtSql Module
+ \contentspage Qt's Modules
+ \previouspage QtScript
+ \nextpage QtSvg
+ \ingroup modules
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 1
+
+ The QtSql module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtSvg
+ \title QtSvg Module
+ \since 4.1
+ \contentspage Qt's Modules
+ \previouspage QtSql
+ \nextpage QtWebKit
+ \ingroup modules
+
+ \brief The QtSvg module provides classes for displaying the contents of SVG
+ files.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 1
+
+ The QtSvg module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 License Information
+
+ Some code for arc handling in this module is derived from code with
+ the following license:
+
+ \legalese
+ Copyright 2002 USC/Information Sciences Institute
+
+ Permission to use, copy, modify, distribute, and sell this software
+ and its documentation for any purpose is hereby granted without
+ fee, provided that the above copyright notice appear in all copies
+ and that both that copyright notice and this permission notice
+ appear in supporting documentation, and that the name of
+ Information Sciences Institute not be used in advertising or
+ publicity pertaining to distribution of the software without
+ specific, written prior permission. Information Sciences Institute
+ makes no representations about the suitability of this software for
+ any purpose. It is provided "as is" without express or implied
+ warranty.
+
+ INFORMATION SCIENCES INSTITUTE DISCLAIMS ALL WARRANTIES WITH REGARD
+ TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL INFORMATION SCIENCES
+ INSTITUTE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
+ OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ \endlegalese
+*/
+
+/*!
+ \module QtXml
+ \title QtXml Module
+ \contentspage Qt's Modules
+ \previouspage QtSvg
+ \nextpage QtXmlPatterns
+ \ingroup modules
+
+ \brief The QtXml module provides a stream reader and writer for
+ XML documents, and C++ implementations of SAX and DOM.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 1
+
+ Further XML support is provided by the \l{Qt Solutions} group who
+ provide, for example, classes that support SOAP and MML with the
+ Qt XML classes.
+
+ This module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtXmlPatterns
+ \title QtXmlPatterns Module
+ \since 4.4
+ \contentspage Qt's Modules
+ \previouspage QtXml
+ \nextpage Phonon Module
+ \ingroup modules
+
+ \brief The QtXmlPatterns module provides support for XPath,
+ XQuery, XSLT and XML schema-validation.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 1
+
+ This module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 License Information
+
+ The XML Schema implementation provided by this module contains the \c xml.xsd file
+ (located in \c{src/xmlpatterns/schema/schemas}) which is licensed under the terms
+ given below. This module is always built with XML Schema support enabled.
+
+ \legalese
+ W3C\copyright SOFTWARE NOTICE AND LICENSE
+
+ This license came from: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+ This work (and included software, documentation such as READMEs, or other
+ related items) is being provided by the copyright holders under the following
+ license. By obtaining, using and/or copying this work, you (the licensee)
+ agree that you have read, understood, and will comply with the following
+ terms and conditions.
+
+ Permission to copy, modify, and distribute this software and its
+ documentation, with or without modification, for any purpose and without
+ fee or royalty is hereby granted, provided that you include the following on
+ ALL copies of the software and documentation or portions thereof, including
+ modifications:
+
+ 1. The full text of this NOTICE in a location viewable to users of the
+ redistributed or derivative work.\br
+ 2. Any pre-existing intellectual property disclaimers, notices, or terms
+ and conditions. If none exist, the W3C Software Short Notice should be
+ included (hypertext is preferred, text is permitted)
+ within the body of any redistributed or derivative code.\br
+ 3. Notice of any changes or modifications to the files, including the date
+ changes were made. (We recommend you provide URIs to the location from
+ which the code is derived.)
+
+ THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
+ MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+ LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
+ PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
+ ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+ COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+ CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+ DOCUMENTATION.
+
+ The name and trademarks of copyright holders may NOT be used in
+ advertising or publicity pertaining to the software without specific, written
+ prior permission. Title to copyright in this software and any associated
+ documentation will at all times remain with copyright holders.
+ \endlegalese
+*/
+
+/*!
+ \page phonon-module.html
+ \module Phonon
+ \title Phonon Module
+ \contentspage Qt's Modules
+ \previouspage QtXmlPatterns
+ \nextpage Qt3Support
+ \ingroup modules
+
+ \brief The Phonon module contains namespaces and classes for multimedia functionality.
+
+ \generatelist{classesbymodule Phonon}
+
+ Phonon is a cross-platform multimedia framework that enables the use of
+ audio and video content in Qt applications. The \l{Phonon Overview}
+ document provides an introduction to the architecture and features included
+ in Phonon. The \l{Phonon} namespace contains a list of all classes, functions
+ and namespaces provided by the module.
+
+ Applications that use Phonon's classes need to
+ be configured to be built against the Phonon module.
+ The following declaration in a \c qmake project file ensures that
+ an application is compiled and linked appropriately:
+
+ \snippet doc/src/snippets/code/doc_src_phonon.qdoc 1
+
+ The Phonon module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 Qt Backends
+
+ Qt Backends are currently developed for Phonon version 4.1. The Phonon
+ project has moved on and introduced new features that the Qt Backends do not
+ implement. We have chosen not to document the part of Phonon that we do not
+ support. Any class or function not appearing in our documentation can be
+ considered unsupported.
+
+ \section1 License Information
+
+ Qt Commercial Edition licensees that wish to distribute applications that
+ use the Phonon module need to be aware of their obligations under the
+ GNU Lesser General Public License (LGPL).
+
+ Developers using the Open Source Edition can choose to redistribute
+ the module under the appropriate version of the GNU LGPL; version 2.1
+ for applications and libraries licensed under the GNU GPL version 2,
+ or version 3 for applications and libraries licensed under the GNU
+ GPL version 2.
+
+ \legalese
+ This file is part of the KDE project
+
+ Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org> \BR
+ Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ Contact: Nokia Corporation (qt-info@nokia.com)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ \endlegalese
+*/
+
+/*!
+ \module Qt3Support
+ \title Qt3Support Module
+ \contentspage Qt's Modules
+ \previouspage Phonon Module
+ \nextpage QtDesigner
+ \ingroup modules
+
+ \keyword Qt3Support
+ \brief The Qt3Support module provides classes that ease porting
+ from Qt 3 to Qt 4.
+
+ \warning The classes in this module are intended to be used in
+ intermediate stages of a porting process and are not intended
+ to be used in production code.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 1
+
+ \note Since this module provides compatibility classes for
+ diverse parts of the Qt 3 API, it has dependencies on the QtCore,
+ QtGui, QtNetwork, QtSql, and QtXml modules.
+
+ This module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}. Most classes offered by this module are
+ also part of the \l{Qt GUI Framework Edition}.
+\if defined(opensourceedition) || defined(desktoplightedition)
+ Classes that are not available for \l{Qt GUI Framework Edition}
+ users are marked as such in the class documentation.
+\endif
+
+ \sa {Porting to Qt 4}
+*/
+
+/*!
+ \module QtDesigner
+ \title QtDesigner Module
+ \contentspage Qt's Modules
+ \previouspage Qt3Support
+ \nextpage QtUiTools
+ \ingroup modules
+
+ \brief The QtDesigner module provides classes that allow you to
+ create your own custom widget plugins for Qt Designer, and classes
+ that enable you to access Qt Designer's components.
+
+ In addition, the QFormBuilder class provides the possibility of
+ constructing user interfaces from UI files at run-time.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 0
+
+ To link against the module, add this line to your \c qmake .pro
+ file:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 1
+
+ \note These classes are part of the \l{Open Source Versions of Qt} and
+ \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
+ users.
+*/
+
+/*!
+ \module QtUiTools
+ \title QtUiTools Module
+ \since 4.1
+ \contentspage Qt's Modules
+ \previouspage QtDesigner
+ \nextpage QtHelp
+ \ingroup modules
+
+ \brief The QtUiTools module provides classes to handle forms created
+ with Qt Designer.
+
+ These forms are processed at run-time to produce dynamically-generated
+ user interfaces. In order to generate a form at run-time, a resource
+ file containing a UI file is needed. Applications that use the
+ form handling classes need to be configured to be built against the
+ QtUiTools module. This is done by including the following declaration
+ in a \c qmake project file to ensure that the application is compiled
+ and linked appropriately.
+
+ \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 0
+
+ A form loader object, provided by the QUiLoader class, is used to
+ construct the user interface. This user interface can
+ be retrieved from any QIODevice; for example, a QFile object can be
+ used to obtain a form stored in a project's resources. The
+ QUiLoader::load() function takes the user interface description
+ contained in the file and constructs the form widget.
+
+ To include the definitions of the module's classes, use the following
+ directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 1
+
+ \note These classes are part of the \l{Open Source Versions of Qt} and
+ \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
+ users.
+
+ \sa{Calculator Builder Example}, {World Time Clock Builder Example}
+*/
+
+/*!
+ \module QtHelp
+ \title QtHelp Module
+ \contentspage Qt's Modules
+ \previouspage QtUiTools
+ \nextpage QtTest
+ \ingroup modules
+
+ \brief The QtHelp module provides classes for integrating
+ online documentation in applications.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 1
+
+ These classes are part of the \l{Open Source Versions of Qt} and
+ \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
+ users.
+
+ \section1 License Information
+
+ The QtHelp module uses the CLucene indexing library to provide full-text
+ searching capabilities for Qt Assistant and applications that use the
+ features of QtHelp.
+
+ Qt Commercial Edition licensees that wish to distribute applications that
+ use these features of the QtHelp module need to be aware of their
+ obligations under the GNU Lesser General Public License (LGPL).
+
+ Developers using the Open Source Edition can choose to redistribute
+ the module under the appropriate version of the GNU LGPL; version 2.1
+ for applications and libraries licensed under the GNU GPL version 2,
+ or version 3 for applications and libraries licensed under the GNU
+ GPL version 3.
+
+ \legalese
+ Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team \BR
+ Changes are Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ \endlegalese
+
+ \sa {The Qt Help Framework}
+*/
+
+/*!
+ \module QtTest
+ \title QtTest Module
+ \contentspage Qt's Modules
+ \previouspage QtHelp
+ \nextpage QAxContainer
+ \ingroup modules
+
+ \keyword QtTest
+
+ \brief The QtTest module provides classes for unit testing Qt applications and libraries.
+
+ Applications that use Qt's unit testing classes need to
+ be configured to be built against the QtTest module.
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qttest.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qttest.qdoc 1
+
+ See the \l{QTestLib Manual} for a detailed introduction on how to use
+ Qt's unit testing features with your applications.
+
+ The QtTest module is part of all \l{Qt editions}.
+*/
+
+/*!
+ \module QAxContainer
+ \title QAxContainer Module
+ \contentspage Qt's Modules
+ \previouspage QtTest
+ \nextpage QAxServer
+ \ingroup modules
+
+ \brief The QAxContainer module is a Windows-only extension for
+ accessing ActiveX controls and COM objects.
+
+ \section1 License Information
+
+ The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
+ the \l{GNU Lesser General Public License (LGPL)}, or the
+ \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
+ the following license.
+
+ \legalese
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
+ All rights reserved.
+
+ Contact: Nokia Corporation (qt-info@nokia.com)\br
+
+ You may use this file under the terms of the BSD license as follows:\br
+
+ "Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list
+ of conditions and the following disclaimer.\br
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.\br
+ * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the names of
+ its contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+ \endlegalese
+*/
+
+/*!
+ \module QAxServer
+ \title QAxServer Module
+ \contentspage Qt's Modules
+ \previouspage QAxContainer
+ \nextpage QtDBus module
+ \ingroup modules
+
+ \brief The QAxServer module is a Windows-only static library that
+ you can use to turn a standard Qt binary into a COM server.
+
+ \section1 License Information
+
+ The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
+ the \l{GNU Lesser General Public License (LGPL)}, or the
+ \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
+ the following license.
+
+ \legalese
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
+ All rights reserved.
+
+ Contact: Nokia Corporation (qt-info@nokia.com)\br
+
+ You may use this file under the terms of the BSD license as follows:\br
+
+ "Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list
+ of conditions and the following disclaimer.\br
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.\br
+ * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the names of
+ its contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+ \endlegalese
+*/
+
+/*!
+ \module QtDBus
+ \title QtDBus module
+ \contentspage Qt's Modules
+ \previouspage QAxServer
+ \ingroup modules
+
+ \keyword QtDBus
+ \target The QDBus compiler
+
+ \brief The QtDBus module is a Unix-only library that you can use
+ to make Inter-Process Communication using the \l {Introduction to
+ D-Bus} {D-Bus} protocol.
+
+ Applications using the QtDBus module can provide services to
+ other, remote applications by exporting objects, as well as use
+ services exported by those applications by placing calls and
+ accessing properties.
+
+ The QtDBus module provides an interface that extends the Qt \l
+ {signalsandslots.html}{Signals and Slots} mechanism, allowing one
+ to connect to a signal emitted remotely as well as to connect a
+ local signal to remote slot.
+
+ To use this module, use the following code in your application:
+
+ \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 0
+
+ If you're using qmake to build your application, you can add this
+ line to your .pro file to make it link against the QtDBus
+ libraries:
+
+ \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 1
+
+ \note The source code for this module is located in the \c{src/qdbus}
+ directory. When installing Qt from source, this module is built when Qt's
+ tools are built.
+
+ See the \l {Introduction to D-Bus} page for detailed information on
+ how to use this module.
+
+ This module is part of all \l{Qt editions}.
+*/
+
+/*!
+ \page qtmain.html
+ \title The qtmain Library
+ \ingroup licensing
+ \ingroup platform-specific
+ \brief Describes the use and license of the qtmain helper library.
+
+ qtmain is a helper library that enables the developer to write a
+ cross-platform main() function on Windows. If you do not use \l qmake
+ or other build tools such as CMake, then you need to link against
+ the \c qtmain library.
+
+ \section1 License Information
+
+ The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
+ the \l{GNU Lesser General Public License (LGPL)}, or the
+ \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
+ the following license.
+
+ \legalese
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
+ All rights reserved.
+
+ Contact: Nokia Corporation (qt-info@nokia.com)\br
+
+ You may use this file under the terms of the BSD license as follows:\br
+
+ "Redistribution and use in source and binary forms, with or without modification,
+ are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list
+ of conditions and the following disclaimer.\br
+ * Redistributions in binary form must reproduce the above copyright notice, this
+ list of conditions and the following disclaimer in the documentation and/or other
+ materials provided with the distribution.\br
+ * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the names of
+ its contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+ SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+ \endlegalese
+*/
+
+/*!
+ \page qtassistant.html
+ \title QtAssistant
+
+ This module is no longer needed. Use the QtHelp module to integrate documentation
+ into your application.
+
+ \sa {QtHelp}
+*/
diff --git a/doc/src/qtnetwork.qdoc b/doc/src/network-programming/qtnetwork.qdoc
index 7af99bf..0b2e6f9 100644
--- a/doc/src/qtnetwork.qdoc
+++ b/doc/src/network-programming/qtnetwork.qdoc
@@ -40,46 +40,32 @@
****************************************************************************/
/*!
- \module QtNetwork
- \title QtNetwork Module
- \contentspage Qt's Modules
- \previouspage QtGui
- \nextpage QtOpenGL
- \ingroup modules
+ \group network
+ \title Network Programming API
+ \brief Classes for Network Programming
- \brief The QtNetwork module offers classes that allow you to
- write TCP/IP clients and servers.
-
- The network module provides classes to make network programming
- easier and portable. It offers classes such as QFtp that
- implement specific application-level protocols, lower-level classes
- such as QTcpSocket, QTcpServer and QUdpSocket that represent low
- level network concepts, and high level classes such as QNetworkRequest,
- QNetworkReply and QNetworkAccessManager to perform network operations using common protocols.
+ \ingroup groups
+*/
- The QtNetwork module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
+/*!
+ \page network-programming.html
+ \title Network Programming
+ \brief An Introduction to Network Programming with Qt
- Topics:
+ The QtNetwork module offers classes that allow you to write TCP/IP clients
+ and servers. it offers classes such as QFtp that implement specific
+ application-level protocols, lower-level classes such as QTcpSocket,
+ QTcpServer and QUdpSocket that represent low level network concepts,
+ and high level classes such as QNetworkRequest, QNetworkReply and
+ QNetworkAccessManager to perform network operations using common protocols.
\tableofcontents
- \section1 Configuring the Build Process
-
- Applications that use Qt's networking classes need to
- be configured to be built against the QtNetwork module.
- The following declaration in a \c qmake project file ensures that
- an application is compiled and linked appropriately:
-
- \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 0
-
- This line is necessary because only the QtCore and QtGui modules
- are used in the default build process.
+ \section1 Qt's Classes for Network Programming
- To include the definitions of the module's classes, use the
- following directive:
+ The following classes provide support for network programming in Qt.
- \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 1
+ \annotatedlist network
\section1 High Level Network Operations for HTTP and FTP
diff --git a/doc/src/classes/qpagesetupdialog.qdoc b/doc/src/network-programming/ssl.qdoc
index 5715fa8..44d4196 100644
--- a/doc/src/classes/qpagesetupdialog.qdoc
+++ b/doc/src/network-programming/ssl.qdoc
@@ -40,45 +40,28 @@
****************************************************************************/
/*!
- \class QPageSetupDialog
+ \group ssl
+ \title Secure Sockets Layer (SSL) Classes
+ \ingroup groups
- \brief The QPageSetupDialog class provides a configuration dialog
- for the page-related options on a printer.
+ \brief Classes for secure communication over network sockets.
+ \keyword SSL
- On Windows and Mac OS X the page setup dialog is implemented using
- the native page setup dialogs.
+ The classes below provide support for secure network communication using
+ the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} to
+ perform encryption and protocol handling.
- Note that on Windows and Mac OS X custom paper sizes won't be
- reflected in the native page setup dialogs. Additionally, custom
- page margins set on a QPrinter won't show in the native Mac OS X
- page setup dialog.
+ See the \l{General Qt Requirements} page for information about the
+ versions of OpenSSL that are known to work with Qt.
- \sa QPrinter, QPrintDialog
-*/
-
-
-/*!
- \fn QPageSetupDialog::QPageSetupDialog(QPrinter *printer, QWidget *parent)
+ \note Due to import and export restrictions in some parts of the world, we
+ are unable to supply the OpenSSL Toolkit with Qt packages. Developers wishing
+ to use SSL communication in their deployed applications should either ensure
+ that their users have the appropriate libraries installed, or they should
+ consult a suitably qualified legal professional to ensure that applications
+ using code from the OpenSSL project are correctly certified for import
+ and export in relevant regions of the world.
- Constructs a page setup dialog that configures \a printer with \a
- parent as the parent widget.
+ When the QtNetwork module is built with SSL support, the library is linked
+ against OpenSSL in a way that requires OpenSSL license compliance.
*/
-
-/*!
- \since 4.5
-
- \fn QPageSetupDialog::QPageSetupDialog(QWidget *parent)
-
- Constructs a page setup dialog that configures a default-constructed
- QPrinter with \a parent as the parent widget.
-
- \sa printer()
-*/
-
-/*!
- \fn QPrinter *QPageSetupDialog::printer()
-
- Returns the printer that was passed to the QPageSetupDialog
- constructor.
-*/
-
diff --git a/doc/src/metaobjects.qdoc b/doc/src/objectmodel/metaobjects.qdoc
index c11cf4d..961a4c6 100644
--- a/doc/src/metaobjects.qdoc
+++ b/doc/src/objectmodel/metaobjects.qdoc
@@ -43,7 +43,6 @@
\page metaobjects.html
\title Meta-Object System
\brief An overview of Qt's meta-object system and introspection capabilities.
- \ingroup architecture
\keyword meta-object
Qt's meta-object system provides the signals and slots mechanism for
diff --git a/doc/src/object.qdoc b/doc/src/objectmodel/object.qdoc
index 35d2ba3..a3c2292 100644
--- a/doc/src/object.qdoc
+++ b/doc/src/objectmodel/object.qdoc
@@ -42,9 +42,10 @@
/*!
\page object.html
\title Qt Object Model
- \ingroup architecture
\brief A description of the powerful features made possible by Qt's dynamic object model.
+ \ingroup frameworks-technologies
+
The standard C++ object model provides very efficient runtime
support for the object paradigm. But its static nature is
inflexibile in certain problem domains. Graphical user interface
@@ -85,6 +86,12 @@
templates; see \l{Why Doesn't Qt Use Templates for Signals and
Slots?}
+ \section1 Important Classes
+
+ These classes form the basis of the Qt Object Model.
+
+ \annotatedlist objectmodel
+
\target Identity vs Value
\section1 Qt Objects: Identity vs Value
diff --git a/doc/src/objectmodel/objecttrees.qdoc b/doc/src/objectmodel/objecttrees.qdoc
new file mode 100644
index 0000000..bc5353f
--- /dev/null
+++ b/doc/src/objectmodel/objecttrees.qdoc
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page objecttrees.html
+ \title Object Trees and Object Ownership
+ \brief Information about the parent-child pattern used to describe
+ object ownership in Qt.
+
+ \section1 Overview
+
+ \link QObject QObjects\endlink organize themselves in object trees.
+ When you create a QObject with another object as parent, it's added to
+ the parent's \link QObject::children() children() \endlink list, and
+ is deleted when the parent is. It turns out that this approach fits
+ the needs of GUI objects very well. For example, a \l QShortcut
+ (keyboard shortcut) is a child of the relevant window, so when the
+ user closes that window, the shorcut is deleted too.
+
+ \l QWidget, the base class of everything that appears on the screen,
+ extends the parent-child relationship. A child normally also becomes a
+ child widget, i.e. it is displayed in its parent's coordinate system
+ and is graphically clipped by its parent's boundaries. For example,
+ when the application deletes a message box after it has been
+ closed, the message box's buttons and label are also deleted, just as
+ we'd want, because the buttons and label are children of the message
+ box.
+
+ You can also delete child objects yourself, and they will remove
+ themselves from their parents. For example, when the user removes a
+ toolbar it may lead to the application deleting one of its \l QToolBar
+ objects, in which case the tool bar's \l QMainWindow parent would
+ detect the change and reconfigure its screen space accordingly.
+
+ The debugging functions \l QObject::dumpObjectTree() and \l
+ QObject::dumpObjectInfo() are often useful when an application looks or
+ acts strangely.
+
+ \target note on the order of construction/destruction of QObjects
+ \section1 Construction/Destruction Order of QObjects
+
+ When \l {QObject} {QObjects} are created on the heap (i.e., created
+ with \e new), a tree can be constructed from them in any order, and
+ later, the objects in the tree can be destroyed in any order. When any
+ QObject in the tree is deleted, if the object has a parent, the
+ destructor automatically removes the object from its parent. If the
+ object has children, the destructor automatically deletes each
+ child. No QObject is deleted twice, regardless of the order of
+ destruction.
+
+ When \l {QObject} {QObjects} are created on the stack, the same
+ behavior applies. Normally, the order of destruction still doesn't
+ present a problem. Consider the following snippet:
+
+ \snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 0
+
+ The parent, \c window, and the child, \c quit, are both \l {QObject}
+ {QObjects} because QPushButton inherits QWidget, and QWidget inherits
+ QObject. This code is correct: the destructor of \c quit is \e not
+ called twice because the C++ language standard \e {(ISO/IEC 14882:2003)}
+ specifies that destructors of local objects are called in the reverse
+ order of their constructors. Therefore, the destructor of
+ the child, \c quit, is called first, and it removes itself from its
+ parent, \c window, before the destructor of \c window is called.
+
+ But now consider what happens if we swap the order of construction, as
+ shown in this second snippet:
+
+ \snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 1
+
+ In this case, the order of destruction causes a problem. The parent's
+ destructor is called first because it was created last. It then calls
+ the destructor of its child, \c quit, which is incorrect because \c
+ quit is a local variable. When \c quit subsequently goes out of scope,
+ its destructor is called again, this time correctly, but the damage has
+ already been done.
+*/
diff --git a/doc/src/properties.qdoc b/doc/src/objectmodel/properties.qdoc
index cc28497..f640e31 100644
--- a/doc/src/properties.qdoc
+++ b/doc/src/objectmodel/properties.qdoc
@@ -42,7 +42,6 @@
/*!
\page properties.html
\title Qt's Property System
- \ingroup architecture
\brief An overview of Qt's property system.
Qt provides a sophisticated property system similar to the ones
diff --git a/doc/src/signalsandslots.qdoc b/doc/src/objectmodel/signalsandslots.qdoc
index 07e0ef8..6bdd4bc 100644
--- a/doc/src/signalsandslots.qdoc
+++ b/doc/src/objectmodel/signalsandslots.qdoc
@@ -42,7 +42,6 @@
/*!
\page signalsandslots.html
\title Signals and Slots
- \ingroup architecture
\brief An overview of Qt's signals and slots inter-object
communication mechanism.
diff --git a/doc/src/objecttrees.qdoc b/doc/src/objecttrees.qdoc
deleted file mode 100644
index 183f7cd..0000000
--- a/doc/src/objecttrees.qdoc
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page objecttrees.html
-\title Object Trees and Object Ownership
-\ingroup architecture
-\brief Information about the parent-child pattern used to describe
-object ownership in Qt.
-
-\section1 Overview
-
-\link QObject QObjects\endlink organize themselves in object trees.
-When you create a QObject with another object as parent, it's added to
-the parent's \link QObject::children() children() \endlink list, and
-is deleted when the parent is. It turns out that this approach fits
-the needs of GUI objects very well. For example, a \l QShortcut
-(keyboard shortcut) is a child of the relevant window, so when the
-user closes that window, the shorcut is deleted too.
-
-\l QWidget, the base class of everything that appears on the screen,
-extends the parent-child relationship. A child normally also becomes a
-child widget, i.e. it is displayed in its parent's coordinate system
-and is graphically clipped by its parent's boundaries. For example,
-when the application deletes a message box after it has been
-closed, the message box's buttons and label are also deleted, just as
-we'd want, because the buttons and label are children of the message
-box.
-
-You can also delete child objects yourself, and they will remove
-themselves from their parents. For example, when the user removes a
-toolbar it may lead to the application deleting one of its \l QToolBar
-objects, in which case the tool bar's \l QMainWindow parent would
-detect the change and reconfigure its screen space accordingly.
-
-The debugging functions \l QObject::dumpObjectTree() and \l
-QObject::dumpObjectInfo() are often useful when an application looks or
-acts strangely.
-
-\target note on the order of construction/destruction of QObjects
-\section1 Construction/Destruction Order of QObjects
-
-When \l {QObject} {QObjects} are created on the heap (i.e., created
-with \e new), a tree can be constructed from them in any order, and
-later, the objects in the tree can be destroyed in any order. When any
-QObject in the tree is deleted, if the object has a parent, the
-destructor automatically removes the object from its parent. If the
-object has children, the destructor automatically deletes each
-child. No QObject is deleted twice, regardless of the order of
-destruction.
-
-When \l {QObject} {QObjects} are created on the stack, the same
-behavior applies. Normally, the order of destruction still doesn't
-present a problem. Consider the following snippet:
-
-\snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 0
-
-The parent, \c window, and the child, \c quit, are both \l {QObject}
-{QObjects} because QPushButton inherits QWidget, and QWidget inherits
-QObject. This code is correct: the destructor of \c quit is \e not
-called twice because the C++ language standard \e {(ISO/IEC 14882:2003)}
-specifies that destructors of local objects are called in the reverse
-order of their constructors. Therefore, the destructor of
-the child, \c quit, is called first, and it removes itself from its
-parent, \c window, before the destructor of \c window is called.
-
-But now consider what happens if we swap the order of construction, as
-shown in this second snippet:
-
-\snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 1
-
-In this case, the order of destruction causes a problem. The parent's
-destructor is called first because it was created last. It then calls
-the destructor of its child, \c quit, which is incorrect because \c
-quit is a local variable. When \c quit subsequently goes out of scope,
-its destructor is called again, this time correctly, but the damage has
-already been done.
-
-*/
diff --git a/doc/src/overviews.qdoc b/doc/src/overviews.qdoc
index f4085f5..8b986fc 100644
--- a/doc/src/overviews.qdoc
+++ b/doc/src/overviews.qdoc
@@ -46,3 +46,28 @@
\generatelist overviews
*/
+
+/*!
+ \group frameworks-technologies
+ \title Frameworks and Technologies
+
+ \brief Documentation about the frameworks and technologies in Qt
+
+ These documents dive into the frameworks of classes that Qt provides,
+ and provide background information about the technical solutions used
+ in Qt's architecture.
+
+ \generatelist{related}
+*/
+
+/*!
+ \group best-practices
+ \title How-To's and Best Practices
+
+ \brief How-To Guides and Best Practices
+
+ These documents provide guidelines and best practices explaining
+ how to use Qt to solve specific technical problems.
+
+ \generatelist{related}
+*/
diff --git a/doc/src/coordsys.qdoc b/doc/src/painting-and-printing/coordsys.qdoc
index 6042300..5269ea2 100644
--- a/doc/src/coordsys.qdoc
+++ b/doc/src/painting-and-printing/coordsys.qdoc
@@ -39,25 +39,16 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Qt Coordinate System Documentation.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page coordsys.html
\title The Coordinate System
- \ingroup architecture
\brief Information about the coordinate system used by the paint
system.
+ \previouspage Drawing and Filling
+ \contentspage The Paint System
+ \nextpage Reading and Writing Image Files
+
The coordinate system is controlled by the QPainter
class. Together with the QPaintDevice and QPaintEngine classes,
QPainter form the basis of Qt's painting system, Arthur. QPainter
diff --git a/doc/src/paintsystem.qdoc b/doc/src/painting-and-printing/paintsystem.qdoc
index 23b5685..4fd29d5 100644
--- a/doc/src/paintsystem.qdoc
+++ b/doc/src/painting-and-printing/paintsystem.qdoc
@@ -40,9 +40,28 @@
****************************************************************************/
/*!
- \page paintsystem.html
+ \group painting
+ \title Painting Classes
+ \ingroup groups
+
+ \brief Classes that provide support for painting.
+
+ See also this introduction to the \link coordsys.html Qt
+ coordinate system. \endlink
+*/
+
+/*!
+ \group painting-3D
+ \title Rendering in 3D
+ \ingroup groups
+
+ \brief Classes that provide support for rendering in 3D.
+*/
+/*!
+ \page paintsystem.html
\title The Paint System
+ \ingroup frameworks-technologies
Qt's paint system enables painting on screen and print devices
using the same API, and is primarily based on the QPainter,
@@ -62,14 +81,211 @@
same painting pipeline making it easy to add support for new
features and providing default implementations for unsupported
ones.
+
+ \section1 Topics
+ \list
+ \o \l{Classes for Painting}
+ \o \l{Paint Devices and Backends}
+ \o \l{Drawing and Filling}
+ \o \l{The Coordinate System}
+ \o \l{Reading and Writing Image Files}
+ \o \l{Styling}
+ \o \l{Printing with Qt}
+ \endlist
+
+ \section1 Classes for Painting
+
+ These classes provide support for painting onto a paint device.
+
+ \annotatedlist painting
Alternatively, Qt provides the QtOpenGL module, offering classes
that makes it easy to use OpenGL in Qt applications. Among others,
the module provides an OpenGL widget class that can be used just
like any other Qt widget, except that it opens an OpenGL display
buffer where the OpenGL API can be used to render the contents.
+*/
+
+
+/*!
+ \page paintsystem-devices.html
+ \title Paint Devices and Backends
+
+ \contentspage The Paint System
+ \nextpage Drawing and Filling
+
+ \section1 Creating a Paint Device
+
+ The QPaintDevice class is the base class of objects that can be
+ painted, i.e. QPainter can draw on any QPaintDevice
+ subclass. QPaintDevice's drawing capabilities are currently
+ implemented by the QWidget, QImage, QPixmap, QGLWidget,
+ QGLPixelBuffer, QPicture and QPrinter subclasses.
+
+ \image paintsystem-devices.png
+
+ \table 100%
+ \row \o \bold Widget
+
+ The QWidget class is the base class of all user interface
+ objects. The widget is the atom of the user interface: it receives
+ mouse, keyboard and other events from the window system, and
+ paints a representation of itself on the screen.
+
+ \row \o \bold Image
+
+ The QImage class provides a hardware-independent image
+ representation which is designed and optimized for I/O, and for
+ direct pixel access and manipulation. QImage supports several
+ image formats including monochrome, 8-bit, 32-bit and
+ alpha-blended images.
+
+ One advantage of using QImage as a paint device is that it is
+ possible to guarantee the pixel exactness of any drawing operation
+ in a platform-independent way. Another benefit is that the
+ painting can be performed in another thread than the current GUI
+ thread.
+
+ \row \o \bold Pixmap
+
+ The QPixmap class is an off-screen image representation which is
+ designed and optimized for showing images on screen. Unlike
+ QImage, the pixel data in a pixmap is internal and is managed by
+ the underlying window system, i.e. pixels can only be accessed
+ through QPainter functions or by converting the QPixmap to a
+ QImage.
+
+ To optimize drawing with QPixmap, Qt provides the QPixmapCache
+ class which can be used to store temporary pixmaps that are
+ expensive to generate without using more storage space than the
+ cache limit.
+
+ Qt also provides the QBitmap convenience class, inheriting
+ QPixmap. QBitmap guarantees monochrome (1-bit depth) pixmaps, and
+ is mainly used for creating custom QCursor and QBrush objects,
+ constructing QRegion objects, and for setting masks for pixmaps
+ and widgets.
+
+ \row \o \bold {OpenGL Widget}
+
+ As mentioned previously, Qt provides the QtOpenGL module offering
+ classes that makes it easy to use OpenGL in Qt applications. For
+ example, the QGLWidget enables the OpenGL API for
+ rendering.
+
+ But QGLWidget is also a QWidget subclass, and can be used by
+ QPainter as any other paint device. One huge benefit from this is
+ that it enables Qt to utilize the high performance of OpenGL for
+ most drawing operations, such as transformations and pixmap
+ drawing.
+
+ \row \o \bold {Pixel Buffer}
+
+ The QtOpenGL module also provides the QGLPixelBuffer class which
+ inherits QPaintDevice directly.
+
+ QGLPixelBuffer encapsulates an OpenGL pbuffer. Rendering into a
+ pbuffer is normally done using full hardware acceleration which
+ can be significantly faster than rendering into a QPixmap.
- \tableofcontents section1
+ \row \o \bold {Framebuffer Object}
+
+ The QtOpenGL module also provides the QGLFramebufferObject class
+ which inherits QPaintDevice directly.
+
+ QGLFramebufferObject encapsulates an OpenGL framebuffer object.
+ Framebuffer objects can also be used for off-screen rendering, and
+ offer several advantages over pixel buffers for this purpose.
+ These are described in the QGLFramebufferObject class documentation.
+
+ \row \o \bold {Picture}
+
+ The QPicture class is a paint device that records and replays
+ QPainter commands. A picture serializes painter commands to an IO
+ device in a platform-independent format. QPicture is also
+ resolution independent, i.e. a QPicture can be displayed on
+ different devices (for example svg, pdf, ps, printer and screen)
+ looking the same.
+
+ Qt provides the QPicture::load() and QPicture::save() functions
+ as well as streaming operators for loading and saving pictures.
+
+ \row \o \bold {Printer}
+
+ The QPrinter class is a paint device that paints on a printer. On
+ Windows or Mac OS X, QPrinter uses the built-in printer
+ drivers. On X11, QPrinter generates postscript and sends that to
+ lpr, lp, or another print program. QPrinter can also print to any
+ other QPrintEngine object.
+
+ The QPrintEngine class defines an interface for how QPrinter
+ interacts with a given printing subsystem. The common case when
+ creating your own print engine, is to derive from both
+ QPaintEngine and QPrintEngine.
+
+ The output format is by default determined by the platform the
+ printer is running on, but by explicitly setting the output format
+ to QPrinter::PdfFormat, QPrinter will generate its output as a PDF
+ file.
+
+ \row \o \bold {Custom Backends}
+
+ Support for a new backend can be implemented by deriving from the
+ QPaintDevice class and reimplementing the virtual
+ QPaintDevice::paintEngine() function to tell QPainter which paint
+ engine should be used to draw on this particular device. To
+ actually be able to draw on the device, this paint engine must be
+ a custom paint engine created by deriving from the QPaintEngine
+ class.
+
+ \endtable
+
+ \section1 Selecting the Painting Backend
+
+ Since Qt 4.5, it is possible to replace the paint engines and paint
+ devices used for widgets, pixmaps and the offscreen double buffer. By
+ default the backends are:
+
+ \table
+ \row
+ \o Windows
+ \o Software Rasterizer
+ \row
+ \o X11
+ \o X11
+ \row
+ \o Mac OS X
+ \o CoreGraphics
+ \row
+ \o Embedded
+ \o Software Rasterizer
+ \endtable
+
+ Passing a command line parameter to the application, such as,
+ \c{-graphicssystem raster}, specifies that Qt should use the software
+ rasterizer for this application. The Software rasterizer is fully
+ supported on all platforms.
+
+ \code
+ > analogclock -graphicssystem raster
+ \endcode
+
+ There is also a \c{-graphicssystem opengl} mode that uses OpenGL for
+ all drawing. Currently, this engine is experimental as it does not draw
+ everything correctly.
+
+ Qt also supports being configured using \c {-graphicssystem
+ raster|opengl} in which case all applications will use the
+ specified graphics system for its graphics.
+*/
+
+/*!
+ \page paintsystem-drawing.html
+ \title Drawing and Filling
+
+ \previouspage Paint Devices and Backends
+ \contentspage The Paint System
+ \nextpage The Coordinate System
\section1 Drawing
@@ -185,134 +401,15 @@
colors around a center point.
\endtable
+*/
- \section1 Creating a Paint Device
-
- The QPaintDevice class is the base class of objects that can be
- painted, i.e. QPainter can draw on any QPaintDevice
- subclass. QPaintDevice's drawing capabilities are currently
- implemented by the QWidget, QImage, QPixmap, QGLWidget,
- QGLPixelBuffer, QPicture and QPrinter subclasses.
-
- \image paintsystem-devices.png
-
- \table 100%
- \row \o \bold {Custom Backends}
-
- Support for a new backend can be implemented by deriving from the
- QPaintDevice class and reimplementing the virtual
- QPaintDevice::paintEngine() function to tell QPainter which paint
- engine should be used to draw on this particular device. To
- actually be able to draw on the device, this paint engine must be
- a custom paint engine created by deriving from the QPaintEngine
- class.
-
- \endtable
-
- \section2 Widget
-
- The QWidget class is the base class of all user interface
- objects. The widget is the atom of the user interface: it receives
- mouse, keyboard and other events from the window system, and
- paints a representation of itself on the screen.
-
- \section2 Image
-
- The QImage class provides a hardware-independent image
- representation which is designed and optimized for I/O, and for
- direct pixel access and manipulation. QImage supports several
- image formats including monochrome, 8-bit, 32-bit and
- alpha-blended images.
-
- One advantage of using QImage as a paint device is that it is
- possible to guarantee the pixel exactness of any drawing operation
- in a platform-independent way. Another benefit is that the
- painting can be performed in another thread than the current GUI
- thread.
-
- \section2 Pixmap
-
- The QPixmap class is an off-screen image representation which is
- designed and optimized for showing images on screen. Unlike
- QImage, the pixel data in a pixmap is internal and is managed by
- the underlying window system, i.e. pixels can only be accessed
- through QPainter functions or by converting the QPixmap to a
- QImage.
-
- To optimize drawing with QPixmap, Qt provides the QPixmapCache
- class which can be used to store temporary pixmaps that are
- expensive to generate without using more storage space than the
- cache limit.
-
- Qt also provides the QBitmap convenience class, inheriting
- QPixmap. QBitmap guarantees monochrome (1-bit depth) pixmaps, and
- is mainly used for creating custom QCursor and QBrush objects,
- constructing QRegion objects, and for setting masks for pixmaps
- and widgets.
-
- \section2 OpenGL Widget
-
- As mentioned above, Qt provides the QtOpenGL module offering
- classes that makes it easy to use OpenGL in Qt applications. For
- example, the QGLWidget enables the OpenGL API for
- rendering.
-
- But QGLWidget is also a QWidget subclass, and can be used by
- QPainter as any other paint device. One huge benefit from this is
- that it enables Qt to utilize the high performance of OpenGL for
- most drawing operations, such as transformations and pixmap
- drawing.
-
- \section2 Pixel Buffer
-
- The QtOpenGL module also provides the QGLPixelBuffer class which
- inherits QPaintDevice directly.
-
- QGLPixelBuffer encapsulates an OpenGL pbuffer. Rendering into a
- pbuffer is normally done using full hardware acceleration which
- can be significantly faster than rendering into a QPixmap.
-
- \section2 Framebuffer Object
-
- The QtOpenGL module also provides the QGLFramebufferObject class
- which inherits QPaintDevice directly.
-
- QGLFramebufferObject encapsulates an OpenGL framebuffer object.
- Framebuffer objects can also be used for off-screen rendering, and
- offer several advantages over pixel buffers for this purpose.
- These are described in the QGLFramebufferObject class documentation.
-
- \section2 Picture
-
- The QPicture class is a paint device that records and replays
- QPainter commands. A picture serializes painter commands to an IO
- device in a platform-independent format. QPicture is also
- resolution independent, i.e. a QPicture can be displayed on
- different devices (for example svg, pdf, ps, printer and screen)
- looking the same.
-
- Qt provides the QPicture::load() and QPicture::save() functions
- as well as streaming operators for loading and saving pictures.
-
- \section2 Printer
-
- The QPrinter class is a paint device that paints on a printer. On
- Windows or Mac OS X, QPrinter uses the built-in printer
- drivers. On X11, QPrinter generates postscript and sends that to
- lpr, lp, or another print program. QPrinter can also print to any
- other QPrintEngine object.
-
- The QPrintEngine class defines an interface for how QPrinter
- interacts with a given printing subsystem. The common case when
- creating your own print engine, is to derive from both
- QPaintEngine and QPrintEngine.
-
- The output format is by default determined by the platform the
- printer is running on, but by explicitly setting the output format
- to QPrinter::PdfFormat, QPrinter will generate its output as a PDF
- file.
+/*!
+ \page paintsystem-images.html
+ \title Reading and Writing Image Files
- \section1 Reading and Writing Image Files
+ \previouspage The Coordinate System
+ \contentspage The Paint System
+ \nextpage Styling
The most common way to read images is through QImage and QPixmap's
constructors, or by calling the QImage::load() and QPixmap::load()
@@ -359,30 +456,57 @@
QImageReader and QImageWriter will automatically load the plugin
and start using it.
+ \section1 Rendering SVG files
+
\table 100%
\row
\o \image paintsystem-svg.png
\o \bold {SVG Rendering}
- Scalable Vector Graphics (SVG) is an language for describing both
- static and animated two-dimensional vector graphics. Qt includes
- support for the static features of SVG 1.2 Tiny.
+ Scalable Vector Graphics (SVG) is a language for describing two-dimensional
+ graphics and graphical applications in XML. SVG 1.1 is a W3C Recommendation
+ and forms the core of the current SVG developments in Qt. SVG 1.2 is the
+ specification currently being developed by the \l{SVG Working Group}, and it
+ is \l{http://www.w3.org/TR/SVG12/}{available in draft form}.
+ The \l{Mobile SVG Profiles} (SVG Basic and SVG Tiny) are aimed at
+ resource-limited devices and are part of the 3GPP platform for third generation
+ mobile phones. You can read more about SVG at \l{About SVG}.
+
+ Qt supports the \l{SVG 1.2 Tiny Static Features}{static features} of
+ \l{SVG 1.2 Tiny}. ECMA scripts and DOM manipulation are currently not
+ supported.
- SVG drawings can be rendered onto any QPaintDevice subclass. This
+ SVG drawings can be rendered onto any QPaintDevice subclass. This
approach gives developers the flexibility to experiment, in order
to find the best solution for each application.
- The easiest way to render SVG files is to construct a QSvgWidget
- and load an SVG file using one of the QSvgWidget::load()
- functions. The rendering is performed by the QSvgRenderer class
- which also can be used directly to provide SVG support for custom
- widgets.
+ The easiest way to render SVG files is to construct a QSvgWidget and
+ load an SVG file using one of the QSvgWidget::load() functions.
- For more information, see the QtSvg module documentation.
+ QSvgRenderer is the class responsible for rendering SVG files for
+ QSvgWidget, and it can be used directly to provide SVG support for
+ custom widgets.
+ To load an SVG file, construct a QSvgRenderer with a file name or the
+ contents of a file, or call QSvgRenderer::load() on an existing
+ renderer. If the SVG file has been loaded successfully the
+ QSvgRenderer::isValid() will return true.
+
+ Once you have loaded the SVG file successfully, you can render it
+ with the QSvgRenderer::render() function. Note that this scheme allows
+ you to render SVG files on all paint devices supported by Qt, including
+ QWidget, QGLWidget, and QImage. See the \l{SVG Viewer Example}{SVG Viewer}
+ example for more details.
\endtable
+*/
- \section1 Styling
+/*!
+ \page paintsystem-styling.html
+ \title Styling
+
+ \previouspage Reading and Writing Image Files
+ \contentspage The Paint System
+ \nextpage Printing with Qt
Qt's built-in widgets use the QStyle class to perform nearly all
of their drawing. QStyle is an abstract base class that
@@ -440,44 +564,7 @@
state.
\endtable
-
- \section1 Selecting the Painting Backend
-
- Since Qt 4.5, it is possible to replace the paint engines and paint
- devices used for widgets, pixmaps and the offscreen double buffer. By
- default the backends are:
-
- \table
- \row
- \o Windows
- \o Software Rasterizer
- \row
- \o X11
- \o X11
- \row
- \o Mac OS X
- \o CoreGraphics
- \row
- \o Embedded
- \o Software Rasterizer
- \endtable
-
- Passing a command line parameter to the application, such as,
- \c{-graphicssystem raster}, specifies that Qt should use the software
- rasterizer for this application. The Software rasterizer is fully
- supported on all platforms.
-
- \code
- > analogclock -graphicssystem raster
- \endcode
-
- There is also a \c{-graphicssystem opengl} mode that uses OpenGL for
- all drawing. Currently, this engine is experimental as it does not draw
- everything correctly.
-
- Qt also supports being configured using \c {-graphicssystem
- raster|opengl} in which case all applications will use the
- specified graphics system for its graphics.
-
- */
-
+
+ For more information about widget styling and appearance, see the
+ documentation about \l{Implementing Styles and Style Aware Widgets}.
+*/
diff --git a/doc/src/printing.qdoc b/doc/src/painting-and-printing/printing.qdoc
index 0472827..291286e 100644
--- a/doc/src/printing.qdoc
+++ b/doc/src/painting-and-printing/printing.qdoc
@@ -40,10 +40,19 @@
****************************************************************************/
/*!
+ \group printing
+ \title Printer and Printing APIs
+ \brief Classes for producing printed output
+ \ingroup groups
+*/
+
+/*!
\page printing.html
\title Printing with Qt
- \ingroup multimedia
- \ingroup text-processing
+
+ \previouspage Styling
+ \contentspage The Paint System
+
\brief A guide to producing printed output with Qt's paint system and widgets.
Qt provides extensive cross-platform support for printing. Using the printing
@@ -53,6 +62,13 @@
generation facilities.
\tableofcontents
+
+ \section1 Classes Supporting Printing
+
+ The following classes support the selecting and setting up of printers and
+ printing output.
+
+ \annotatedlist printing
\section1 Paint Devices and Printing
diff --git a/doc/src/atomic-operations.qdoc b/doc/src/platforms/atomic-operations.qdoc
index d0f5978..19fbea6 100644
--- a/doc/src/atomic-operations.qdoc
+++ b/doc/src/platforms/atomic-operations.qdoc
@@ -42,19 +42,20 @@
/*!
\page atomic-operations.html
\title Implementing Atomic Operations
- \ingroup architecture
- \ingroup qt-embedded-linux
\brief A guide to implementing atomic operations on new architectures.
+ \ingroup best-practices
+ \ingroup qt-embedded-linux
+
Qt uses an optimization called \l {Implicitly Shared
Classes}{implicit sharing} for many of its value classes.
Starting with Qt 4, all of Qt's implicitly shared classes can
safely be copied across threads like any other value classes,
- i.e., they are fully \l {Thread Support in Qt#Reentrancy and
- Thread-Safety}{reentrant}. This is accomplished by implementing
- reference counting operations using atomic hardware instructions
- on all the different platforms supported by Qt.
+ i.e., they are fully \l {Reentrancy and Thread-Safety}{reentrant}.
+ This is accomplished by implementing reference counting
+ operations using atomic hardware instructions on all the
+ different platforms supported by Qt.
To support a new architecture, it is important to ensure that
these platform-specific atomic operations are implemented in a
diff --git a/doc/src/compiler-notes.qdoc b/doc/src/platforms/compiler-notes.qdoc
index 4873cf5..f4e9805 100644
--- a/doc/src/compiler-notes.qdoc
+++ b/doc/src/platforms/compiler-notes.qdoc
@@ -41,7 +41,7 @@
/*!
\page compiler-notes.html
- \ingroup platform-notes
+ \ingroup platform-specific
\title Compiler Notes
\brief Information about the C++ compilers and tools used to build Qt.
diff --git a/doc/src/emb-accel.qdoc b/doc/src/platforms/emb-accel.qdoc
index 818538a..818538a 100644
--- a/doc/src/emb-accel.qdoc
+++ b/doc/src/platforms/emb-accel.qdoc
diff --git a/doc/src/qtopiacore-architecture.qdoc b/doc/src/platforms/emb-architecture.qdoc
index 06ffac6..06ffac6 100644
--- a/doc/src/qtopiacore-architecture.qdoc
+++ b/doc/src/platforms/emb-architecture.qdoc
diff --git a/doc/src/emb-charinput.qdoc b/doc/src/platforms/emb-charinput.qdoc
index 5ceb6a4..5ceb6a4 100644
--- a/doc/src/emb-charinput.qdoc
+++ b/doc/src/platforms/emb-charinput.qdoc
diff --git a/doc/src/emb-crosscompiling.qdoc b/doc/src/platforms/emb-crosscompiling.qdoc
index 2e0ba4b..2e0ba4b 100644
--- a/doc/src/emb-crosscompiling.qdoc
+++ b/doc/src/platforms/emb-crosscompiling.qdoc
diff --git a/doc/src/emb-deployment.qdoc b/doc/src/platforms/emb-deployment.qdoc
index 9a83dcf..9a83dcf 100644
--- a/doc/src/emb-deployment.qdoc
+++ b/doc/src/platforms/emb-deployment.qdoc
diff --git a/doc/src/emb-differences.qdoc b/doc/src/platforms/emb-differences.qdoc
index cf3ab75..cf3ab75 100644
--- a/doc/src/emb-differences.qdoc
+++ b/doc/src/platforms/emb-differences.qdoc
diff --git a/doc/src/qtopiacore-displaymanagement.qdoc b/doc/src/platforms/emb-displaymanagement.qdoc
index 8a743b1..8a743b1 100644
--- a/doc/src/qtopiacore-displaymanagement.qdoc
+++ b/doc/src/platforms/emb-displaymanagement.qdoc
diff --git a/doc/src/emb-envvars.qdoc b/doc/src/platforms/emb-envvars.qdoc
index c423fef..c423fef 100644
--- a/doc/src/emb-envvars.qdoc
+++ b/doc/src/platforms/emb-envvars.qdoc
diff --git a/doc/src/emb-features.qdoc b/doc/src/platforms/emb-features.qdoc
index fdd2e46..fdd2e46 100644
--- a/doc/src/emb-features.qdoc
+++ b/doc/src/platforms/emb-features.qdoc
diff --git a/doc/src/emb-fonts.qdoc b/doc/src/platforms/emb-fonts.qdoc
index 70fddbf..70fddbf 100644
--- a/doc/src/emb-fonts.qdoc
+++ b/doc/src/platforms/emb-fonts.qdoc
diff --git a/doc/src/emb-framebuffer-howto.qdoc b/doc/src/platforms/emb-framebuffer-howto.qdoc
index 14400c2..14400c2 100644
--- a/doc/src/emb-framebuffer-howto.qdoc
+++ b/doc/src/platforms/emb-framebuffer-howto.qdoc
diff --git a/doc/src/emb-install.qdoc b/doc/src/platforms/emb-install.qdoc
index e23cc1b..e23cc1b 100644
--- a/doc/src/emb-install.qdoc
+++ b/doc/src/platforms/emb-install.qdoc
diff --git a/doc/src/emb-kmap2qmap.qdoc b/doc/src/platforms/emb-kmap2qmap.qdoc
index 291a553..291a553 100644
--- a/doc/src/emb-kmap2qmap.qdoc
+++ b/doc/src/platforms/emb-kmap2qmap.qdoc
diff --git a/doc/src/emb-makeqpf.qdoc b/doc/src/platforms/emb-makeqpf.qdoc
index dc1196a..dc1196a 100644
--- a/doc/src/emb-makeqpf.qdoc
+++ b/doc/src/platforms/emb-makeqpf.qdoc
diff --git a/doc/src/qtopiacore-opengl.qdoc b/doc/src/platforms/emb-opengl.qdoc
index e61ccde..e61ccde 100644
--- a/doc/src/qtopiacore-opengl.qdoc
+++ b/doc/src/platforms/emb-opengl.qdoc
diff --git a/doc/src/emb-performance.qdoc b/doc/src/platforms/emb-performance.qdoc
index 9bc373b..9bc373b 100644
--- a/doc/src/emb-performance.qdoc
+++ b/doc/src/platforms/emb-performance.qdoc
diff --git a/doc/src/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc
index 39a8482..39a8482 100644
--- a/doc/src/emb-pointer.qdoc
+++ b/doc/src/platforms/emb-pointer.qdoc
diff --git a/doc/src/emb-porting.qdoc b/doc/src/platforms/emb-porting.qdoc
index 1afd1be..1afd1be 100644
--- a/doc/src/emb-porting.qdoc
+++ b/doc/src/platforms/emb-porting.qdoc
diff --git a/doc/src/emb-qvfb.qdoc b/doc/src/platforms/emb-qvfb.qdoc
index 48e0d35..48e0d35 100644
--- a/doc/src/emb-qvfb.qdoc
+++ b/doc/src/platforms/emb-qvfb.qdoc
diff --git a/doc/src/emb-running.qdoc b/doc/src/platforms/emb-running.qdoc
index cb7a7ae..cb7a7ae 100644
--- a/doc/src/emb-running.qdoc
+++ b/doc/src/platforms/emb-running.qdoc
diff --git a/doc/src/emb-vnc.qdoc b/doc/src/platforms/emb-vnc.qdoc
index c8289f8..c8289f8 100644
--- a/doc/src/emb-vnc.qdoc
+++ b/doc/src/platforms/emb-vnc.qdoc
diff --git a/doc/src/mac-differences.qdoc b/doc/src/platforms/mac-differences.qdoc
index ee77125..b911510 100644
--- a/doc/src/mac-differences.qdoc
+++ b/doc/src/platforms/mac-differences.qdoc
@@ -43,7 +43,7 @@
\page mac-differences.html
\title Qt for Mac OS X - Specific Issues
\brief A description of issues with Qt that are specific to Mac OS X.
- \ingroup platform-notes
+ \ingroup platform-specific
This file outlines known issues and possible workarounds when
using Qt on Mac OS X. Contact Qt's technical support team if you find
diff --git a/doc/src/platform-notes-rtos.qdoc b/doc/src/platforms/platform-notes-rtos.qdoc
index 8a52d84..8a52d84 100644
--- a/doc/src/platform-notes-rtos.qdoc
+++ b/doc/src/platforms/platform-notes-rtos.qdoc
diff --git a/doc/src/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc
index fc829f7..20f0933 100644
--- a/doc/src/platform-notes.qdoc
+++ b/doc/src/platforms/platform-notes.qdoc
@@ -40,8 +40,19 @@
****************************************************************************/
/*!
- \page platform-notes-platforms.html
- \ingroup platform-notes
+ \group platform-specific
+ \title Platform-Specific Documentation
+ \brief Documents describing platform-specific features of Qt.
+
+ These documents describe platform-specific features provided by Qt, and
+ discuss issues related to particular platforms and environments.
+
+ \generatelist{related}
+*/
+
+/*!
+ \page platform-notes.html
+ \ingroup platform-specific
\title Platform Notes
\brief Information about the platforms on which Qt can be used.
diff --git a/doc/src/qtopiacore.qdoc b/doc/src/platforms/qt-embedded-linux.qdoc
index c8fccf1..5329218 100644
--- a/doc/src/qtopiacore.qdoc
+++ b/doc/src/platforms/qt-embedded-linux.qdoc
@@ -40,8 +40,20 @@
****************************************************************************/
/*!
+ \group qws
+ \title Qt for Embedded Linux Classes
+ \ingroup groups
+ \ingroup qt-embedded-linux
+ \ingroup platform-specific
+
+ \brief Classes that are specific to Qt for Embedded Linux.
+
+ These classes are relevant to \l{Qt for Embedded Linux} users.
+*/
+
+
+/*!
\group qt-embedded-linux
- \ingroup topics
\ingroup qt-embedded
\title Qt for Embedded Linux
\brief Documents specifically about Qt for Embedded Linux.
@@ -71,7 +83,7 @@
\o \l {Qt for Embedded Linux Architecture}{Architecture Overview}
\o \l {Installing Qt for Embedded Linux}{Installation}
\o \l {Running Qt for Embedded Linux Applications}{Running Applications}
- \o \l {Qt Examples#Qt for Embedded Linux}{Examples}
+ \o \l {Qt for Embedded Linux Examples}{Examples}
\endlist
\o
\list
diff --git a/doc/src/qt-embedded.qdoc b/doc/src/platforms/qt-embedded.qdoc
index be9a458..22cba80 100644
--- a/doc/src/qt-embedded.qdoc
+++ b/doc/src/platforms/qt-embedded.qdoc
@@ -41,9 +41,9 @@
/*!
\group qt-embedded
- \ingroup topics
\title Qt for Embedded Platforms
\brief Documents related to Qt for Embedded Platforms.
+ \ingroup platform-specific
Qt is available for embedded platforms and devices as well as for a number
of desktop platforms. The features provided for each platform depend on the
diff --git a/doc/src/qtmac-as-native.qdoc b/doc/src/platforms/qtmac-as-native.qdoc
index 61c2143..265d222 100644
--- a/doc/src/qtmac-as-native.qdoc
+++ b/doc/src/platforms/qtmac-as-native.qdoc
@@ -86,7 +86,7 @@
\page qtmac-as-native.html
\title Qt is Mac OS X Native
\brief An explanation of Qt's native features on Mac OS X.
- \ingroup platform-notes
+ \ingroup platform-specific
This document explains what makes an application native on Mac OS X.
It shows the areas where Qt is compliant, and the grey areas where
diff --git a/doc/src/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc
index 6f63c87..8aec1e2 100644
--- a/doc/src/supported-platforms.qdoc
+++ b/doc/src/platforms/supported-platforms.qdoc
@@ -43,7 +43,7 @@
\page supported-platforms.html
\title Supported Platforms
\brief The platforms supported by Nokia for Qt.
- \ingroup platform-notes
+ \ingroup platform-specific
The Qt team strives to provide support for the platforms most
frequently used by Qt users. We have designed our internal testing procedure to
diff --git a/doc/src/wince-customization.qdoc b/doc/src/platforms/wince-customization.qdoc
index 06de1c8..06de1c8 100644
--- a/doc/src/wince-customization.qdoc
+++ b/doc/src/platforms/wince-customization.qdoc
diff --git a/doc/src/wince-introduction.qdoc b/doc/src/platforms/wince-introduction.qdoc
index 9a2c672..29f880e 100644
--- a/doc/src/wince-introduction.qdoc
+++ b/doc/src/platforms/wince-introduction.qdoc
@@ -40,11 +40,43 @@
****************************************************************************/
/*!
+ \group qtce
+ \title Qt for Windows CE
+ \ingroup qt-embedded
+ \brief Documents related to Qt on Windows CE
+
+ Qt for Windows CE is a C++ framework for GUI and application development
+ for embedded devices running Windows CE. It runs on a variety of processors,
+ including ARM, Intel x86, MIPS and SH-4.
+
+ \table 100%
+ \header \o Getting Started \o Reference \o Performance and Optimization
+ \row
+ \o
+ \list
+ \o \l {Qt for Windows CE Requirements}
+ \o \l {Installing Qt on Windows CE}
+ \o \l {Windows CE - Introduction to using Qt}{Introduction to using Qt}
+ \endlist
+ \o
+ \list
+ \o \l {Windows CE - Using shadow builds}{Using shadow builds}
+ \o \l {Windows CE - Working with Custom SDKs}{Working with Custom SDKs}
+ \endlist
+ \o
+ \list
+ \o \l {Windows CE OpenGL ES}{OpenGL ES}
+ \o \l {Qt Performance Tuning}
+ \o \l {Fine-Tuning Features in Qt}
+ \endlist
+ \endtable
+*/
+
+/*!
\page wince-with-qt-introduction.html
\title Windows CE - Introduction to using Qt
\brief An introduction to Qt for Windows CE developers.
- \ingroup howto
\ingroup qtce
\tableofcontents
diff --git a/doc/src/wince-opengl.qdoc b/doc/src/platforms/wince-opengl.qdoc
index 3c7e22f..3c7e22f 100644
--- a/doc/src/wince-opengl.qdoc
+++ b/doc/src/platforms/wince-opengl.qdoc
diff --git a/doc/src/winsystem.qdoc b/doc/src/platforms/winsystem.qdoc
index 8bb295d..5afa1f7 100644
--- a/doc/src/winsystem.qdoc
+++ b/doc/src/platforms/winsystem.qdoc
@@ -42,8 +42,7 @@
/*!
\page winsystem.html
\title Window System Specific Notes
- \ingroup buildsystem
- \ingroup deployment
+ \ingroup platform-specific
Qt is a cross-platform GUI toolkit, so almost the entire API is the
same on all platforms and window systems. If you wish to use
diff --git a/doc/src/qtopengl.qdoc b/doc/src/platforms/x11overlays.qdoc
index bb2f4e7..7d7a776 100644
--- a/doc/src/qtopengl.qdoc
+++ b/doc/src/platforms/x11overlays.qdoc
@@ -40,73 +40,8 @@
****************************************************************************/
/*!
- \module QtOpenGL
- \title QtOpenGL Module
- \contentspage Qt's Modules
- \previouspage QtNetwork
- \nextpage QtOpenVG
- \ingroup modules
-
- \brief The QtOpenGL module offers classes that make it easy to
- use OpenGL in Qt applications.
-
- OpenGL is a standard API for rendering 3D graphics. OpenGL only
- deals with 3D rendering and provides little or no support for GUI
- programming issues. The user interface for an OpenGL application
- must be created with another toolkit, such as Motif on the X
- platform, Microsoft Foundation Classes (MFC) under Windows, or Qt
- on both platforms.
-
- \bold{Note:} OpenGL is a trademark of Silicon Graphics, Inc. in
- the United States and other countries.
-
- The Qt OpenGL module makes it easy to use OpenGL in Qt applications.
- It provides an OpenGL widget class that can be used just like any
- other Qt widget, except that it opens an OpenGL display buffer where
- you can use the OpenGL API to render the contents.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 1
-
- The Qt OpenGL module is implemented as a platform-independent Qt/C++
- wrapper around the platform-dependent GLX (version 1.3 or later),
- WGL, or AGL C APIs. Although the basic functionality provided is very
- similar to Mark Kilgard's GLUT library, applications using the Qt
- OpenGL module can take advantage of the whole Qt API for
- non-OpenGL-specific GUI functionality.
-
- \warning The QtOpenGL module is part of the \l{Qt Full Framework Edition}
- and the \l{Open Source Versions of Qt}. It is available on Windows,
- X11, and Mac OS X. \l{Qt for Embedded Linux} supports OpenGL ES (OpenGL for
- Embedded Systems). To be able to use the OpenGL API in \l{Qt for Embedded Linux},
- it must be integrated with the Q Window System (QWS). See the
- \l{Qt for Embedded Linux and OpenGL} documentation for details.
-
- \section1 Installation
-
- When you install Qt for X11, the configure script will autodetect if
- OpenGL headers and libraries are installed on your system, and if so,
- it will include the QtOpenGL module in the Qt library. (If your
- OpenGL headers or libraries are placed in a non-standard directory,
- you may need to change the \c QMAKE_INCDIR_OPENGL and/or
- \c QMAKE_LIBDIR_OPENGL in the config file for your system).
-
- When you install Qt for Windows and Mac OS X, the QtOpenGL
- module is always included. X11 users might like to read the notes
- on overlays below.
-
- The QGL documentation assumes that you are familiar with OpenGL
- programming. If you're new to the subject a good starting point is
- \l{http://www.opengl.org/}.
-
- \section1 How to Use X11 Overlays with Qt
+ \page x11overlays.html
+ \title How to Use X11 Overlays with Qt
X11 overlays are a powerful mechanism for drawing
annotations etc., on top of an image without destroying it, thus saving
diff --git a/doc/src/porting-qsa.qdoc b/doc/src/porting/porting-qsa.qdoc
index d22e2db..d22e2db 100644
--- a/doc/src/porting-qsa.qdoc
+++ b/doc/src/porting/porting-qsa.qdoc
diff --git a/doc/src/porting4-canvas.qdoc b/doc/src/porting/porting4-canvas.qdoc
index ce68d56..5435723 100644
--- a/doc/src/porting4-canvas.qdoc
+++ b/doc/src/porting/porting4-canvas.qdoc
@@ -46,7 +46,6 @@
\previouspage Porting UI Files to Qt 4
\nextpage qt3to4 - The Qt 3 to 4 Porting Tool
\ingroup porting
- \ingroup multimedia
\brief Hints and tips to assist with porting canvas applications to the
Graphics View framework.
diff --git a/doc/src/porting4-designer.qdoc b/doc/src/porting/porting4-designer.qdoc
index d356392..d356392 100644
--- a/doc/src/porting4-designer.qdoc
+++ b/doc/src/porting/porting4-designer.qdoc
diff --git a/doc/src/porting/porting4-dnd.qdoc b/doc/src/porting/porting4-dnd.qdoc
new file mode 100644
index 0000000..2eb2d01
--- /dev/null
+++ b/doc/src/porting/porting4-dnd.qdoc
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \page porting4-dnd.html
+ \title Porting to Qt 4 - Drag and Drop
+ \contentspage {Porting Guides}{Contents}
+ \previouspage Porting to Qt 4 - Virtual Functions
+ \nextpage Porting UI Files to Qt 4
+ \ingroup porting
+ \brief An overview of the porting process for applications that use drag and drop.
+
+ Qt 4 introduces a new set of classes to handle drag and drop operations
+ that aim to be easier to use than their counterparts in Qt 3. As a result,
+ the way that drag and drop is performed is quite different to the way
+ developers of Qt 3 applications have come to expect. In this guide, we
+ show the differences between the old and new APIs and indicate where
+ applications need to be changed when they are ported to Qt 4.
+
+ \tableofcontents
+
+ \section1 Dragging
+
+ In Qt 3, drag operations are encapsulated by \c QDragObject (see Q3DragObject)
+ and its subclasses. These objects are typically constructed on the heap in
+ response to mouse click or mouse move events, and ownership of them is
+ transferred to Qt so that they can be deleted when the corresponding drag and
+ drop operations have been completed. The drag source has no control over how
+ the drag and drop operation is performed once the object's
+ \l{Q3DragObject::}{drag()} function is called, and it receives no information
+ about how the operation ended.
+
+ \snippet doc/src/snippets/code/doc_src_dnd.qdoc 0
+
+ Similarly, in Qt 4, drag operations are also initiated when a QDrag object
+ is constructed and its \l{QDrag::}{exec()} function is called. In contrast,
+ these objects are typically constructed on the stack rather than the heap
+ since each drag and drop operation is performed synchronously as far as the
+ drag source is concerned. One key benefit of this is that the drag source
+ can receive information about how the operation ended from the value returned
+ by \l{QDrag::}{exec()}.
+
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 2
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 3
+ \dots 8
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 4
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 5
+
+ A key difference in the above code is the use of the QMimeData class to hold
+ information about the data that is transferred. Qt 3 relies on subclasses
+ of \c QDragObject to provide support for specific MIME types; in Qt 4, the
+ use of QMimeData as a generic container for data makes the relationship
+ between MIME type and data more tranparent. QMimeData is described in more
+ detail later in this document.
+
+ \section1 Dropping
+
+ In both Qt 3 and Qt 4, it is possible to prepare a custom widget to accept
+ dropped data by enabling the \l{QWidget::}{acceptDrops} property of a widget,
+ usually in the widget's constructor. As a result, the widget will receive
+ drag enter events that can be handled by its \l{QWidget::}{dragEnterEvent()}
+ function.
+ As in Qt 3, custom widgets in Qt 4 handle these events by determining
+ whether the data supplied by the drag and drop operation can be dropped onto
+ the widget. Since the classes used to encapsulate MIME data are different in
+ Qt 3 and Qt 4, the exact implementations differ.
+
+ In Qt 3, the drag enter event is handled by checking whether each of the
+ standard \c QDragObject subclasses can decode the data supplied, and
+ indicating success or failure of these checks via the event's
+ \l{QDragEnterEvent::}{accept()} function, as shown in this simple example:
+
+ \snippet doc/src/snippets/code/doc_src_dnd.qdoc 1
+
+ In Qt 4, you can examine the MIME type describing the data to determine
+ whether the widget should accept the event or, for common data types, you
+ can use convenience functions:
+
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 0
+
+ The widget has some control over the type of drag and drop operation to be
+ performed. In the above code, the action proposed by the drag source is
+ accepted, but
+ \l{Drag and Drop#Overriding Proposed Actions}{this can be overridden} if
+ required.
+
+ In both Qt 3 and Qt 4, it is necessary to accept a given drag event in order
+ to receive the corresponding drop event. A custom widget in Qt 3 that can
+ accept dropped data in the form of text or images might provide an
+ implementation of \l{QWidget::}{dropEvent()} that looks like the following:
+
+ \snippet doc/src/snippets/code/doc_src_dnd.qdoc 2
+
+ In Qt 4, the event is handled in a similar way:
+
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 1
+
+ It is also possible to extract data stored for a particular MIME type if it
+ was specified by the drag source.
+
+ \section1 MIME Types and Data
+
+ In Qt 3, data to be transferred in drag and drop operations is encapsulated
+ in instances of \c QDragObject and its subclasses, representing specific
+ data formats related to common MIME type and subtypes.
+
+ In Qt 4, only the QMimeData class is used to represent data, providing a
+ container for data stored in multiple formats, each associated with
+ a relevant MIME type. Since arbitrary MIME types can be specified, there is
+ no need for an extensive class hierarchy to represent different kinds of
+ information. Additionally, QMimeData it provides some convenience functions
+ to allow the most common data formats to be stored and retrieved with less
+ effort than for arbitrary MIME types.
+*/
diff --git a/doc/src/porting4-modifiedvirtual.qdocinc b/doc/src/porting/porting4-modifiedvirtual.qdocinc
index 1164238..1164238 100644
--- a/doc/src/porting4-modifiedvirtual.qdocinc
+++ b/doc/src/porting/porting4-modifiedvirtual.qdocinc
diff --git a/doc/src/porting4-obsoletedmechanism.qdocinc b/doc/src/porting/porting4-obsoletedmechanism.qdocinc
index 584b910..584b910 100644
--- a/doc/src/porting4-obsoletedmechanism.qdocinc
+++ b/doc/src/porting/porting4-obsoletedmechanism.qdocinc
diff --git a/doc/src/porting4-overview.qdoc b/doc/src/porting/porting4-overview.qdoc
index 5eff1ba..5eff1ba 100644
--- a/doc/src/porting4-overview.qdoc
+++ b/doc/src/porting/porting4-overview.qdoc
diff --git a/doc/src/porting4-removedenumvalues.qdocinc b/doc/src/porting/porting4-removedenumvalues.qdocinc
index fe38d0e..fe38d0e 100644
--- a/doc/src/porting4-removedenumvalues.qdocinc
+++ b/doc/src/porting/porting4-removedenumvalues.qdocinc
diff --git a/doc/src/porting4-removedtypes.qdocinc b/doc/src/porting/porting4-removedtypes.qdocinc
index 9d7c519..9d7c519 100644
--- a/doc/src/porting4-removedtypes.qdocinc
+++ b/doc/src/porting/porting4-removedtypes.qdocinc
diff --git a/doc/src/porting4-removedvariantfunctions.qdocinc b/doc/src/porting/porting4-removedvariantfunctions.qdocinc
index dfaa8f3..dfaa8f3 100644
--- a/doc/src/porting4-removedvariantfunctions.qdocinc
+++ b/doc/src/porting/porting4-removedvariantfunctions.qdocinc
diff --git a/doc/src/porting4-removedvirtual.qdocinc b/doc/src/porting/porting4-removedvirtual.qdocinc
index 1af4fa6..1af4fa6 100644
--- a/doc/src/porting4-removedvirtual.qdocinc
+++ b/doc/src/porting/porting4-removedvirtual.qdocinc
diff --git a/doc/src/porting4-renamedclasses.qdocinc b/doc/src/porting/porting4-renamedclasses.qdocinc
index ef315a1..ef315a1 100644
--- a/doc/src/porting4-renamedclasses.qdocinc
+++ b/doc/src/porting/porting4-renamedclasses.qdocinc
diff --git a/doc/src/porting4-renamedenumvalues.qdocinc b/doc/src/porting/porting4-renamedenumvalues.qdocinc
index 9519da1..9519da1 100644
--- a/doc/src/porting4-renamedenumvalues.qdocinc
+++ b/doc/src/porting/porting4-renamedenumvalues.qdocinc
diff --git a/doc/src/porting4-renamedfunctions.qdocinc b/doc/src/porting/porting4-renamedfunctions.qdocinc
index 3e59a82..3e59a82 100644
--- a/doc/src/porting4-renamedfunctions.qdocinc
+++ b/doc/src/porting/porting4-renamedfunctions.qdocinc
diff --git a/doc/src/porting4-renamedstatic.qdocinc b/doc/src/porting/porting4-renamedstatic.qdocinc
index 156ab73..156ab73 100644
--- a/doc/src/porting4-renamedstatic.qdocinc
+++ b/doc/src/porting/porting4-renamedstatic.qdocinc
diff --git a/doc/src/porting4-renamedtypes.qdocinc b/doc/src/porting/porting4-renamedtypes.qdocinc
index fc8f604..fc8f604 100644
--- a/doc/src/porting4-renamedtypes.qdocinc
+++ b/doc/src/porting/porting4-renamedtypes.qdocinc
diff --git a/doc/src/porting4.qdoc b/doc/src/porting/porting4.qdoc
index 4efb7be..f4bcfcc 100644
--- a/doc/src/porting4.qdoc
+++ b/doc/src/porting/porting4.qdoc
@@ -40,6 +40,19 @@
****************************************************************************/
/*!
+ \group porting
+ \title Porting Guides
+ \brief Guides related to porting Qt applications and libraries.
+ \ingroup best-practices
+
+ A number of guides and documents are available that cover porting issues,
+ from detailed coverage of API differences between Qt 3 and Qt 4 to
+ platform and tool-specific documentation.
+
+ \generatelist{related}
+*/
+
+/*!
\page porting4.html
\title Porting to Qt 4
\contentspage {Porting Guides}{Contents}
@@ -267,7 +280,7 @@
\table
\header \o Qt 3 class name \o Qt 4 class name
- \input porting4-renamedclasses.qdocinc
+ \input porting/porting4-renamedclasses.qdocinc
\endtable
The table below lists the enums and typedefs that have been
@@ -281,7 +294,7 @@
\table
\header \o Qt 3 type name \o Qt 4 type name
- \input porting4-renamedtypes.qdocinc
+ \input porting/porting4-renamedtypes.qdocinc
\endtable
\omit
@@ -301,7 +314,7 @@
\table
\header \o Qt 3 enum value name \o Qt 4 enum value name
- \input porting4-renamedenumvalues.qdocinc
+ \input porting/porting4-renamedenumvalues.qdocinc
\endtable
In addition, the following \l{Qt::WindowFlags}{window flags} have
@@ -722,7 +735,7 @@
The \c QAsyncIO class was used internally in Qt 2.x in
conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QBackInsertIterator
@@ -1220,20 +1233,20 @@
The \c QDataPump class was used internally in Qt 2.x in
conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QDataSink
The \c QDataSink class was used internally in Qt 2.x in conjunction
with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QDataSource
The \c QDataSource class was used internally in Qt 2.x in
conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QDataTable
@@ -2116,7 +2129,7 @@
The QIODeviceSource class was used internally in Qt 2.x in
conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
+ \input porting/porting4-obsoletedmechanism.qdocinc
\section1 QLabel
@@ -2553,7 +2566,7 @@
If you need to manage a set of actions created for a particular menu,
we suggest that you construct a QActionGroup and add them to that.
- The \l{Qt Examples#Main Windows}{Main Window examples} provided
+ The \l{Main Window Examples} provided
show how to use Qt's action system to construct menus, toolbars, and other
common user interface elements.
@@ -3974,7 +3987,7 @@
\table
\header \o Qt 3 function \o Qt 4 function
- \input porting4-removedvariantfunctions.qdocinc
+ \input porting/porting4-removedvariantfunctions.qdocinc
\endtable
See the QVariant::Type enum for a list of types supported by QVariant.
@@ -4219,13 +4232,13 @@
\table
\header \o Qt 3 function signature \o Qt 4 function signature
- \input porting4-modifiedvirtual.qdocinc
+ \input porting/porting4-modifiedvirtual.qdocinc
\endtable
Virtual functions that are not virtual in Qt 4:
\table
\header \o Qt 3 function \o Comment
- \input porting4-removedvirtual.qdocinc
+ \input porting/porting4-removedvirtual.qdocinc
\endtable
*/
diff --git a/doc/src/qt3to4.qdoc b/doc/src/porting/qt3to4.qdoc
index d788f67..d788f67 100644
--- a/doc/src/qt3to4.qdoc
+++ b/doc/src/porting/qt3to4.qdoc
diff --git a/doc/src/qt4-accessibility.qdoc b/doc/src/porting/qt4-accessibility.qdoc
index 747ca8d..1b985c1 100644
--- a/doc/src/qt4-accessibility.qdoc
+++ b/doc/src/porting/qt4-accessibility.qdoc
@@ -42,7 +42,6 @@
/*!
\page qt4-accessibility.html
\title Cross-Platform Accessibility Support in Qt 4
- \ingroup accessibility
\contentspage {What's New in Qt 4}{Home}
\previouspage The New Qt Designer
diff --git a/doc/src/qt4-arthur.qdoc b/doc/src/porting/qt4-arthur.qdoc
index b253d06..b253d06 100644
--- a/doc/src/qt4-arthur.qdoc
+++ b/doc/src/porting/qt4-arthur.qdoc
diff --git a/doc/src/qt4-designer.qdoc b/doc/src/porting/qt4-designer.qdoc
index 0bfe034..0bfe034 100644
--- a/doc/src/qt4-designer.qdoc
+++ b/doc/src/porting/qt4-designer.qdoc
diff --git a/doc/src/qt4-interview.qdoc b/doc/src/porting/qt4-interview.qdoc
index 158de87..158de87 100644
--- a/doc/src/qt4-interview.qdoc
+++ b/doc/src/porting/qt4-interview.qdoc
diff --git a/doc/src/qt4-mainwindow.qdoc b/doc/src/porting/qt4-mainwindow.qdoc
index 7c48b95..7c48b95 100644
--- a/doc/src/qt4-mainwindow.qdoc
+++ b/doc/src/porting/qt4-mainwindow.qdoc
diff --git a/doc/src/qt4-network.qdoc b/doc/src/porting/qt4-network.qdoc
index 36fd46a..36fd46a 100644
--- a/doc/src/qt4-network.qdoc
+++ b/doc/src/porting/qt4-network.qdoc
diff --git a/doc/src/qt4-scribe.qdoc b/doc/src/porting/qt4-scribe.qdoc
index 64037cf..64037cf 100644
--- a/doc/src/qt4-scribe.qdoc
+++ b/doc/src/porting/qt4-scribe.qdoc
diff --git a/doc/src/qt4-sql.qdoc b/doc/src/porting/qt4-sql.qdoc
index 3425e96..3425e96 100644
--- a/doc/src/qt4-sql.qdoc
+++ b/doc/src/porting/qt4-sql.qdoc
diff --git a/doc/src/qt4-styles.qdoc b/doc/src/porting/qt4-styles.qdoc
index 4134962..4134962 100644
--- a/doc/src/qt4-styles.qdoc
+++ b/doc/src/porting/qt4-styles.qdoc
diff --git a/doc/src/qt4-threads.qdoc b/doc/src/porting/qt4-threads.qdoc
index 1800d6a..1800d6a 100644
--- a/doc/src/qt4-threads.qdoc
+++ b/doc/src/porting/qt4-threads.qdoc
diff --git a/doc/src/qt4-tulip.qdoc b/doc/src/porting/qt4-tulip.qdoc
index 9354651..9354651 100644
--- a/doc/src/qt4-tulip.qdoc
+++ b/doc/src/porting/qt4-tulip.qdoc
diff --git a/doc/src/trolltech-webpages.qdoc b/doc/src/qt-webpages.qdoc
index 20e6c66..20e6c66 100644
--- a/doc/src/trolltech-webpages.qdoc
+++ b/doc/src/qt-webpages.qdoc
diff --git a/doc/src/qt3support.qdoc b/doc/src/qt3support.qdoc
deleted file mode 100644
index 59698e1..0000000
--- a/doc/src/qt3support.qdoc
+++ /dev/null
@@ -1,81 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module Qt3Support
- \title Qt3Support Module
- \contentspage Qt's Modules
- \previouspage Phonon Module
- \nextpage QtDesigner
- \ingroup modules
-
- \keyword Qt3Support
- \brief The Qt3Support module provides classes that ease porting
- from Qt 3 to Qt 4.
-
- \warning The classes in this module are intended to be used in
- intermediate stages of a porting process and are not intended
- to be used in production code.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 1
-
- \note Since this module provides compatibility classes for
- diverse parts of the Qt 3 API, it has dependencies on the QtCore,
- QtGui, QtNetwork, QtSql, and QtXml modules.
-
- This module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}. Most classes offered by this module are
- also part of the \l{Qt GUI Framework Edition}.
-\if defined(opensourceedition) || defined(desktoplightedition)
- Classes that are not available for \l{Qt GUI Framework Edition}
- users are marked as such in the class documentation.
-\endif
-
- \sa {Porting to Qt 4}
-*/
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index 45a95b2..5c2642e 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -87,8 +87,8 @@
\o \l{QtXmlPatterns Module}{XQuery and XPath} support, providing facilities for
XML processing beyond that supported by the QtXml module.
\o Support for embedded widgets in \l{Graphics View} scenes.
- \o The \l{Threading and Concurrent Programming}{QtConcurrent framework} for
- concurrent programming using Qt paradigms and threading features.
+ \o The \l{QtConcurrent} framework for concurrent programming using Qt paradigms and
+ threading features.
\o An \l{QtHelp Module}{improved help system} that can be used in conjunction
with Qt Assistant or as an independent help resource manager.
\o Printing system improvements, including the QPrinterInfo, QPrintPreviewWidget
@@ -563,7 +563,7 @@
\section1 Improved Network Proxy Support
Qt's networking classes have been updated with
- \l{QtNetwork Module#Support for Network Proxies}{improved proxy support}.
+ \l{Network Programming#Support for Network Proxies}{improved proxy support}.
This includes improved integration with system proxy settings and the added
ability to handle non-trivial proxy cases.
diff --git a/doc/src/qtdbus.qdoc b/doc/src/qtdbus.qdoc
deleted file mode 100644
index d4a6908..0000000
--- a/doc/src/qtdbus.qdoc
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/** -*- mode: C++ -*-
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtDBus
- \title QtDBus module
- \contentspage Qt's Modules
- \previouspage QAxServer
- \ingroup modules
-
- \keyword QtDBus
- \target The QDBus compiler
-
- \brief The QtDBus module is a Unix-only library that you can use
- to make Inter-Process Communication using the \l {Introduction to
- D-Bus} {D-Bus} protocol.
-
- Applications using the QtDBus module can provide services to
- other, remote applications by exporting objects, as well as use
- services exported by those applications by placing calls and
- accessing properties.
-
- The QtDBus module provides an interface that extends the Qt \l
- {signalsandslots.html}{Signals and Slots} mechanism, allowing one
- to connect to a signal emitted remotely as well as to connect a
- local signal to remote slot.
-
- To use this module, use the following code in your application:
-
- \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 0
-
- If you're using qmake to build your application, you can add this
- line to your .pro file to make it link against the QtDBus
- libraries:
-
- \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 1
-
- \note The source code for this module is located in the \c{src/qdbus}
- directory. When installing Qt from source, this module is built when Qt's
- tools are built.
-
- See the \l {Introduction to D-Bus} page for detailed information on
- how to use this module.
-
- This module is part of all \l{Qt editions}.
-*/
diff --git a/doc/src/qtgui.qdoc b/doc/src/qtgui.qdoc
deleted file mode 100644
index 63e544c..0000000
--- a/doc/src/qtgui.qdoc
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtGui
- \title QtGui Module
- \contentspage Qt's Modules
- \previouspage QtCore
- \nextpage QtNetwork
- \ingroup modules
-
- \brief The QtGui module extends QtCore with GUI functionality.
-
- To include the definitions of both modules' classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtgui.qdoc 0
-
- The QtGui module is part of the \l{Qt GUI Framework Edition},
- the \l{Qt Full Framework Edition}, and the \l{Open Source Versions of Qt}.
-*/
diff --git a/doc/src/qtmain.qdoc b/doc/src/qtmain.qdoc
deleted file mode 100644
index 5f1f273..0000000
--- a/doc/src/qtmain.qdoc
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qtmain.html
- \title The qtmain Library
- \ingroup licensing
- \ingroup platform-notes
- \brief Describes the use and license of the qtmain helper library.
-
- qtmain is a helper library that enables the developer to write a
- cross-platform main() function on Windows.
-
- If you do not use \l qmake or the \l{Visual Studio Integration}
- available to \l{Qt Commercial Editions}{commercial licensees}, you also
- need to link against the \c qtmain library.
-
- \section1 License Information
-
- The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
- the \l{GNU Lesser General Public License (LGPL)}, or the
- \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
- the following license.
-
- \legalese
- Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
- All rights reserved.
-
- Contact: Nokia Corporation (qt-info@nokia.com)\br
-
- You may use this file under the terms of the BSD license as follows:\br
-
- "Redistribution and use in source and binary forms, with or without modification,
- are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list
- of conditions and the following disclaimer.\br
- * Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution.\br
- * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the names of
- its contributors may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
- SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
- \endlegalese
-*/
diff --git a/doc/src/qtscripttools.qdoc b/doc/src/qtscripttools.qdoc
deleted file mode 100644
index 7a5ffe6..0000000
--- a/doc/src/qtscripttools.qdoc
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtScriptTools
- \title QtScriptTools Module
- \since 4.5
- \contentspage Qt's Modules
- \previouspage QtScript
- \nextpage QtSql
- \ingroup modules
- \ingroup scripting
-
- \brief The QtScriptTools module provides additional components for applications that use Qt Script.
-
- \tableofcontents
-
- \section1 Configuring the Build Process
-
- Applications that use the Qt Script Tools classes need to
- be configured to be built against the QtScriptTools module.
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 0
-
- To link against the module, add this line to your \l qmake \c .pro file:
-
- \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 1
-
- The QtScriptTools module is part of the \l{Qt Full Framework Edition} and
- the \l{Open Source Versions of Qt}.
-
- */
diff --git a/doc/src/qtsvg.qdoc b/doc/src/qtsvg.qdoc
deleted file mode 100644
index 18db387..0000000
--- a/doc/src/qtsvg.qdoc
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtSvg
- \title QtSvg Module
- \since 4.1
- \contentspage Qt's Modules
- \previouspage QtSql
- \nextpage QtWebKit
- \ingroup modules
-
- \brief The QtSvg module provides classes for displaying the contents of SVG
- files.
-
- Scalable Vector Graphics (SVG) is a language for describing two-dimensional
- graphics and graphical applications in XML. SVG 1.1 is a W3C Recommendation
- and forms the core of the current SVG developments in Qt. SVG 1.2 is the
- specification currently being developed by the \l{SVG Working Group}, and it
- is \l{http://www.w3.org/TR/SVG12/}{available in draft form}.
- The \l{Mobile SVG Profiles} (SVG Basic and SVG Tiny) are aimed at
- resource-limited devices and are part of the 3GPP platform for third generation
- mobile phones. You can read more about SVG at \l{About SVG}.
-
- \tableofcontents
-
- \section1 SVG Support
- Qt supports the \l{SVG 1.2 Tiny Static Features}{static features} of
- \l{SVG 1.2 Tiny}. ECMA scripts and DOM manipulation are currently not
- supported.
-
- \section1 Configuring the Build Process
-
- Applications that use Qt's SVG classes need to
- be configured to be built against the QtSvg module.
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 1
-
- The QtSvg module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- \section1 Rendering SVG files
-
- The easiest way to render SVG files is to construct a QSvgWidget and
- load an SVG file using one of the QSvgWidget::load() functions.
-
- QSvgRenderer is the class responsible for rendering SVG files for
- QSvgWidget, and it can be used directly to provide SVG support for
- custom widgets.
- To load an SVG file, construct a QSvgRenderer with a file name or the
- contents of a file, or call QSvgRenderer::load() on an existing
- renderer. If the SVG file has been loaded successfully the
- QSvgRenderer::isValid() will return true.
-
- Once you have loaded the SVG file successfully, you can render it
- with the QSvgRenderer::render() function. Note that this scheme allows
- you to render SVG files on all paint devices supported by Qt, including
- QWidget, QGLWidget, and QImage. See the \l{SVG Viewer Example}{SVG Viewer}
- example for more details.
-
- \section1 Additional Information
-
- Some code for arc handling in this module is derived from code with
- the following license:
-
- \legalese
- Copyright 2002 USC/Information Sciences Institute
-
- Permission to use, copy, modify, distribute, and sell this software
- and its documentation for any purpose is hereby granted without
- fee, provided that the above copyright notice appear in all copies
- and that both that copyright notice and this permission notice
- appear in supporting documentation, and that the name of
- Information Sciences Institute not be used in advertising or
- publicity pertaining to distribution of the software without
- specific, written prior permission. Information Sciences Institute
- makes no representations about the suitability of this software for
- any purpose. It is provided "as is" without express or implied
- warranty.
-
- INFORMATION SCIENCES INSTITUTE DISCLAIMS ALL WARRANTIES WITH REGARD
- TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL INFORMATION SCIENCES
- INSTITUTE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
- OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- \endlegalese
-*/
diff --git a/doc/src/qttest.qdoc b/doc/src/qttest.qdoc
deleted file mode 100644
index 5bb2626..0000000
--- a/doc/src/qttest.qdoc
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtTest
- \title QtTest Module
- \contentspage Qt's Modules
- \previouspage QtAssistant
- \nextpage QAxContainer
- \ingroup modules
-
- \keyword QtTest
-
- \brief The QtTest module provides classes for unit testing Qt applications and libraries.
-
- Applications that use Qt's unit testing classes need to
- be configured to be built against the QtTest module.
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qttest.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qttest.qdoc 1
-
- See the \l{QTestLib Manual} for a detailed introduction on how to use
- Qt's unit testing features with your applications.
-
- The QtTest module is part of all \l{Qt editions}.
-*/
diff --git a/doc/src/qtuiloader.qdoc b/doc/src/qtuiloader.qdoc
deleted file mode 100644
index ba621a8..0000000
--- a/doc/src/qtuiloader.qdoc
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtUiTools
- \title QtUiTools Module
- \since 4.1
- \contentspage Qt's Modules
- \previouspage QtDesigner
- \nextpage QtHelp
- \ingroup modules
-
- \brief The QtUiTools module provides classes to handle forms created
- with Qt Designer.
-
- These forms are processed at run-time to produce dynamically-generated
- user interfaces. In order to generate a form at run-time, a resource
- file containing a UI file is needed. Applications that use the
- form handling classes need to be configured to be built against the
- QtUiTools module. This is done by including the following declaration
- in a \c qmake project file to ensure that the application is compiled
- and linked appropriately.
-
- \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 0
-
- A form loader object, provided by the QUiLoader class, is used to
- construct the user interface. This user interface can
- be retrieved from any QIODevice; for example, a QFile object can be
- used to obtain a form stored in a project's resources. The
- QUiLoader::load() function takes the user interface description
- contained in the file and constructs the form widget.
-
- To include the definitions of the module's classes, use the following
- directive:
-
- \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 1
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
- users.
-
- \sa{Calculator Builder Example}, {World Time Clock Builder Example}
-*/
-
diff --git a/doc/src/qundo.qdoc b/doc/src/qundo.qdoc
deleted file mode 100644
index 9de2aa9..0000000
--- a/doc/src/qundo.qdoc
+++ /dev/null
@@ -1,113 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page qundo.html
-\title Overview of Qt's Undo Framework
-\keyword Undo framework
-\ingroup architecture
-
-\section1 Introduction
-
-Qt's Undo Framework is an implementation of the Command pattern, for
-implementing undo/redo functionality in applications.
-
-The Command pattern is based on the idea that all editing in
-an application is done by creating instances of command objects.
-Command objects apply changes to the document and are stored
-on a command stack. Furthermore, each command knows how to undo its
-changes to bring the document back to its previous state. As long
-as the application only uses command objects to change the state of
-the document, it is possible to undo a sequence of commands by
-traversing the stack downwards and calling undo
-on each command in turn. It is also possible to redo a sequence of
-commands by traversing the stack upwards and calling
-redo on each command.
-
-\section1 Classes
-
-The framework consists of four classes:
-
-\list
-\i \l QUndoCommand is the base class of all commands stored on an
- undo stack. It can apply (redo) or undo a single change in the document.
-\i \l QUndoStack is a list of QUndoCommand objects. It contains all the
- commands executed on the document and can roll the document's state
- backwards or forwards by undoing or redoing them.
-\i \l QUndoGroup is a group of undo stacks. It is useful when an application
- contains more than one undo stack, typically one for each opened
- document. QUndoGroup provides a single pair of undo/redo slots for all
- the stacks in the group. It forwards undo and redo requests to
- the active stack, which is the stack associated with the document that
- is currently being edited by the user.
-\i \l QUndoView is a widget which shows the contents of an undo stack. Clicking
- on a command in the view rolls the document's state backwards or
- forwards to that command.
-\endlist
-
-\section1 Concepts
-
-The following concepts are supported by the framework:
-
-\list
-\i \bold{Clean state:} Used to signal when the document enters and leaves a
- state that has been saved to disk. This is typically used to disable or
- enable the save actions, and to update the document's title bar.
-\i \bold{Command compression:} Used to compress sequences of commands into a
- single command.
- For example: In a text editor, the commands that insert individual
- characters into the document can be compressed into a single command that
- inserts whole sections of text. These bigger changes are more convenient
- for the user to undo and redo.
-\i \bold{Command macros:} A sequence of commands, all of which are undone or
- redone in one step.
- These simplify the task of writing an application, since a set of simpler
- commands can be composed into more complex commands. For example, a command
- that moves a set of selected objects in a document can be created by
- combining a set of commands, each of which moves a single object.
-\endlist
-
-QUndoStack provides convenient undo and redo QAction objects that
-can be inserted into a menu or a toolbar. The text properties of these
-actions always reflect what command will be undone or redone when
-they are triggered. Similarly, QUndoGroup provides undo and redo actions
-that always behave like the undo and redo actions of the active stack.
-*/
diff --git a/doc/src/richtext.qdoc b/doc/src/richtext.qdoc
deleted file mode 100644
index 405afd1..0000000
--- a/doc/src/richtext.qdoc
+++ /dev/null
@@ -1,1076 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page richtext.html
-\nextpage Rich Text Document Structure
-
-\title Rich Text Processing
-\ingroup architecture
-\ingroup text-processing
-\brief An overview of Qt's rich text processing, editing and display features.
-
-The Scribe framework provides a set of classes for reading and manipulating
-structured rich text documents. Unlike previous rich text support in Qt, the
-new classes are centered around the QTextDocument class rather than raw
-textual information. This enables the developer to create and modify
-structured rich text documents without having to prepare content in an
-intermediate markup format.
-
-The information within a document can be accessed via two complementary
-interfaces: A cursor-based interface is used for editing, and a read-only
-hierarchical interface provides a high level overview of the document
-structure. The main advantage of the cursor-based interface is that the
-text can be edited using operations that mimic a user's interaction with
-an editor, without losing the underlying structure of the document. The
-read-only hierarchical interface is most useful when performing operations
-such as searching and document export.
-
-This document is divided up into chapters for convenient reference:
-
-\list
-\i \l{Rich Text Document Structure} outlines
- the different kinds of elements in a QTextDocument, and describes how
- they are arranged in a document structure.
-\i \l{The QTextCursor Interface} explains how rich
- text documents can be edited using the cursor-based interface.
-\i \l{Common Rich Text Editing Tasks} examines some
- common tasks that involve reading or manipulating rich text documents.
-\i \l{Advanced Rich Text Processing} examines advanced rich text editing tasks.
-\i \l{Supported HTML Subset} lists the HTML tags supported by QTextDocument.
-\endlist
-
-See also the list of \l{Text Processing Classes}.
-
-*/
-
-/*!
-\page richtext-structure.html
-\contentspage richtext.html Contents
-\previouspage Rich Text Processing
-\nextpage The QTextCursor Interface
-
-\title Rich Text Document Structure
-
-\tableofcontents
-
-The structured representation of a text document presents its contents as
-a hierarchy of text blocks, frames, tables, and other objects. These provide
-a logical structure to the document and describe how their contents will be
-displayed. Generally, frames and tables are used to group other
-structures while text blocks contain the actual textual information.
-
-New elements are created and inserted into the document programmatically
-\l{richtext-cursor.html}{with a QTextCursor} or by using an editor
-widget, such as QTextEdit. Elements can be given a particular format when
-they are created; otherwise they take the cursor's current format for the
-element.
-
-\table
-\row
-\i \inlineimage richtext-document.png
-\i \bold{Basic structure}
-
-The "top level" of a document might be populated in the way shown.
-Each document always contains a root frame, and this always contains
-at least one text block.
-
-For documents with some textual content, the root
-frame usually contains a sequence of blocks and other elements.
-
-Sequences of frames and tables are always separated by text blocks in a
-document, even if the text blocks contain no information. This ensures that
-new elements can always be inserted between existing structures.
-\endtable
-
-In this chapter, we look at each of the structural elements
-used in a rich text document, outline their features and uses, and show
-how to examine their contents. Document editing is described in
-\l{richtext-cursor.html}{The QTextCursor Interface}.
-
-\section1 Rich Text Documents
-
-QTextDocument objects contain all the information required to construct
-rich text documents for use with a QTextEdit widget or in a custom editor.
-Although QTextEdit makes it easy to display and edit rich text, documents
-can also be used independently of any editor widget, for example:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 0
-
-Alternatively, they can be extracted from an existing editor:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 1
-
-This flexibility enables applications to handle multiple rich text
-documents without the overhead of multiple editor widgets, or requiring
-documents to be stored in some intermediate format.
-
-An empty document contains a root frame which itself contains a single
-empty text block. The \l{richtext-cursor.html}{text cursor interface}
-automatically inserts new document elements into the root frame, and
-ensures that it is padded with empty blocks where necessary.
-
-We obtain the root frame in the following manner:
-
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.h 0
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 0
-
-When navigating the document structure, it is useful to begin at the
-root frame because it provides access to the entire document structure.
-
-\section1 Document Elements
-
-Rich text documents usually consist of common elements such as paragraphs,
-frames, tables, and lists. These are represented in a QTextDocument
-by the QTextBlock, QTextFrame, QTextTable, and QTextList classes.
-Unlike the other elements in a document, images are represented by
-specially formatted text fragments. This enables them to be placed
-formatted inline with the surrounding text.
-
-The basic structural building blocks in documents are QTextBlock and
-QTextFrame. Blocks themselves contain fragments of rich text
-(QTextFragment), but these do not directly influence the high level
-structure of a document.
-
-Elements which can group together other document elements are typically
-subclasses of QTextObject, and fall into two categories: Elements that
-group together text blocks are subclasses of QTextBlockGroup, and those
-that group together frames and other elements are subclasses of QTextFrame.
-
-\section2 Text Blocks
-
-Text blocks are provided by the QTextBlock class.
-
-Text blocks group together fragments of text with different character formats,
-and are used to represent paragraphs in the document. Each block
-typically contains a number of text fragments with different styles.
-Fragments are created when text is inserted into the document, and more
-of them are added when the document is edited. The document splits, merges,
-and removes fragments to efficiently represent the different styles
-of text in the block.
-
-The fragments within a given block can be examined by using a
-QTextBlock::iterator to traverse the block's internal structure:
-
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 3
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 5
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 6
-
-Blocks are also used to represent list items. As a result, blocks can
-define their own character formats which contain information about
-block-level decoration, such as the type of bullet points used for
-list items. The formatting for the block itself is described by the
-QTextBlockFormat class, and describes properties such as text alignment,
-indentation, and background color.
-
-Although a given document may contain complex structures, once we have a
-reference to a valid block in the document, we can navigate between each
-of the text blocks in the order in which they were written:
-
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 0
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 1
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 2
-
-This method is useful for when you want to extract just the rich text from a
-document because it ignores frames, tables, and other types of structure.
-
-QTextBlock provides comparison operators that make it easier to manipulate
-blocks: \l{QTextBlock::operator==()}{operator==()} and
-\l{QTextBlock::operator!=()}{operator!=()} are used to test whether two
-blocks are the same, and \l{QTextBlock::operator<()}{operator<()} is used
-to determine which one occurs first in a document.
-
-\section2 Frames
-
-Frames are provided by the QTextFrame class.
-
-Text frames group together blocks of text and child frames, creating
-document structures that are larger than paragraphs. The format of a frame
-specifies how it is rendered and positioned on the page. Frames are
-either inserted into the text flow, or they float on the left or right
-hand side of the page.
-Each document contains a root frame that contains all the other document
-elements. As a result, all frames except the root frame have a parent
-frame.
-
-Since text blocks are used to separate other document elements, each
-frame will always contain at least one text block, and zero or more
-child frames. We can inspect the contents of a frame by using a
-QTextFrame::iterator to traverse the frame's child elements:
-
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 1
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 2
-
-Note that the iterator selects both frames and blocks, so it is necessary
-to check which it is referring to. This allows us to navigate the document
-structure on a frame-by-frame basis yet still access text blocks if
-required. Both the QTextBlock::iterator and QTextFrame::iterator classes
-can be used in complementary ways to extract the required structure from
-a document.
-
-\section2 Tables
-
-Tables are provided by the QTextTable class.
-
-Tables are collections of cells that are arranged in rows and columns.
-Each table cell is a document element with its own character format, but it
-can also contain other elements, such as frames and text blocks. Table cells
-are automatically created when the table is constructed, or when extra rows
-or columns are added. They can also be moved between tables.
-
-QTextTable is a subclass of QTextFrame, so tables are treated like frames
-in the document structure. For each frame that we encounter in the
-document, we can test whether it represents a table, and deal with it in a
-different way:
-
-\snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 0
-\snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 1
-
-The cells within an existing table can be examined by iterating through
-the rows and columns.
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 9
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 10
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 11
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 12
-
-
-\section2 Lists
-
-Lists are provided by the QTextList class.
-
-Lists are sequences of text blocks that are formatted in the usual way, but
-which also provide the standard list decorations such as bullet points and
-enumerated items. Lists can be nested, and will be indented if the list's
-format specifies a non-zero indentation.
-
-We can refer to each list item by its index in the list:
-
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 0
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 1
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 2
-
-Since QTextList is a subclass of QTextBlockGroup, it does not group the
-list items as child elements, but instead provides various functions for
-managing them. This means that any text block we find when traversing a
-document may actually be a list item. We can ensure that list items are
-correctly identified by using the following code:
-
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 3
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 4
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 5
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 6
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 7
-
-
-\section2 Images
-
-Images in QTextDocument are represented by text fragments that reference
-external images via the resource mechanism. Images are created using the
-cursor interface, and can be modified later by changing the character
-format of the image's text fragment:
-
-\snippet doc/src/snippets/textdocument-imageformat/main.cpp 0
-\snippet doc/src/snippets/textdocument-imageformat/main.cpp 1
-\snippet doc/src/snippets/textdocument-imageformat/main.cpp 2
-
-The fragment that represents the image can be found by iterating over
-the fragments in the text block that contains the image.
-*/
-
-/*!
-\page richtext-cursor.html
-\contentspage richtext.html Contents
-\previouspage Rich Text Document Structure
-\nextpage Common Rich Text Editing Tasks
-
-\title The QTextCursor Interface
-
-\tableofcontents
-
-The QTextCursor interface allows documents and their structure to be
-edited in a way that should be familiar to most users of text editors and
-document editing software. Rich text documents can have multiple cursors
-associated with them, and each of these contains information about their
-position in the document and any selections that they may hold. This
-cursor-based paradigm makes common operations, such as cutting and pasting
-text, simple to implement programmatically, yet it also allows more complex
-editing operations to be performed on the document.
-
-This chapter describes most of the common editing operations that you
-will need to perform using a cursor, from basic insertion of text and
-document elements to more complex manipulation of document structures.
-
-\section1 Cursor-Based Editing
-
-At the simplest level, text documents are made up of a string of characters,
-marked up in some way to represent the block structure of the text within the
-document. QTextCursor provides a cursor-based interface that allows the
-contents of a QTextDocument to be manipulated at the character level. Since
-the elements (blocks, frames, tables, etc.) are also encoded in the character
-stream, the document structure can itself be changed by the cursor.
-
-The cursor keeps track of its location within its parent document, and can
-report information about the surrounding structure, such as the enclosing
-text block, frame, table, or list. The formats of the enclosing structures
-can also be directly obtained through the cursor.
-
-\section2 Using a Cursor
-
-The main use of a cursor is to insert or modify text within a block.
-We can use a text editor's cursor to do this:
-
-\snippet doc/src/snippets/textblock-formats/main.cpp 0
-
-Alternatively, we can obtain a cursor directly from a document:
-
-\snippet doc/src/snippets/textdocument-images/main.cpp 0
-
-The cursor is positioned at the start of the document so that we can write
-into the first (empty) block in the document.
-
-\section2 Grouping Cursor Operations
-
-A series of editing operations can be packaged together so that they can
-be replayed, or undone together in a single action. This is achieved by
-using the \c beginEditBlock() and \c endEditBlock() functions in the
-following way, as in the following example where we select the word that
-contains the cursor:
-
-\snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 0
-
-If editing operations are not grouped, the document automatically records
-the individual operations so that they can be undone later. Grouping
-operations into larger packages can make editing more efficient both for
-the user and for the application, but care has to be taken not to group too
-many operations together as the user may want find-grained control over the
-undo process.
-
-\section2 Multiple Cursors
-
-Multiple cursors can be used to simultaneously edit the same document,
-although only one will be visible to the user in a QTextEdit widget.
-The QTextDocument ensures that each cursor writes text correctly and
-does not interfere with any of the others.
-
-\omit
-\snippet doc/src/snippets/textdocument-cursors/main.cpp 0
-\snippet doc/src/snippets/textdocument-cursors/main.cpp 1
-\endomit
-
-\section1 Inserting Document Elements
-
-QTextCursor provides several functions that can be used to change the
-structure of a rich text document. Generally, these functions allow
-document elements to be created with relevant formatting information,
-and they are inserted into the document at the cursor's position.
-
-The first group of functions insert block-level elements, and update the
-cursor position, but they do not return the element that was inserted:
-
-\list
-\i \l{QTextCursor::insertBlock()}{insertBlock()} inserts a new text block
- (paragraph) into a document at the cursor's position, and moves the
- cursor to the start of the new block.
-\i \l{QTextCursor::insertFragment()}{insertFragment()} inserts an existing
- text fragment into a document at the cursor's position.
-\i \l{QTextCursor::insertImage()}{insertImage()} inserts an image into a
- document at the cursor's position.
-\i \l{QTextCursor::insertText()}{insertText()} inserts text into the
- document at the cursor's position.
-\endlist
-
-You can examine the contents of the element that was inserted through the
-cursor interface.
-
-The second group of functions insert elements that provide structure to
-the document, and return the structure that was inserted:
-
-\list
-\i \l{QTextCursor::insertFrame()}{insertFrame()} inserts a frame into the
- document \e after the cursor's current block, and moves the cursor to
- the start of the empty block in the new frame.
-\i \l{QTextCursor::insertList()}{insertList()} inserts a list into the
- document at the cursor's position, and moves the cursor to the start
- of the first item in the list.
-\i \l{QTextCursor::insertTable()}{insertTable()} inserts a table into
- the document \e after the cursor's current block, and moves the cursor
- to the start of the block following the table.
-\endlist
-
-These elements either contain or group together other elements in the
-document.
-
-\section2 Text and Text Fragments
-
-Text can be inserted into the current block in the current character
-format, or in a custom format that is specified with the text:
-
-\snippet doc/src/snippets/textdocument-charformats/main.cpp 0
-
-Once the character format has been used with a cursor, that format becomes
-the default format for any text inserted with that cursor until another
-character format is specified.
-
-If a cursor is used to insert text without specifying a character format,
-the text will be given the character format used at that position in the
-document.
-
-\section2 Blocks
-
-Text blocks are inserted into the document with the
-\l{QTextCursor::insertBlock()}{insertBlock()} function.
-
-\snippet doc/src/snippets/textblock-formats/main.cpp 1
-
-The cursor is positioned at the start of the new block.
-
-\section2 Frames
-
-Frames are inserted into a document using the cursor, and will be placed
-within the cursor's current frame \e after the current block.
-The following code shows how a frame can be inserted between two text
-blocks in a document's root frame. We begin by finding the cursor's
-current frame:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 0
-
-We insert some text in this frame then set up a frame format for the
-child frame:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 1
-
-The frame format will give the frame an external margin of 32 pixels,
-internal padding of 8 pixels, and a border that is 4 pixels wide.
-See the QTextFrameFormat documentation for more information about
-frame formats.
-
-The frame is inserted into the document after the preceding text:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 2
-
-We add some text to the document immediately after we insert the frame.
-Since the text cursor is positioned \e{inside the frame} when it is inserted
-into the document, this text will also be inserted inside the frame.
-
-Finally, we position the cursor outside the frame by taking the last
-available cursor position inside the frame we recorded earlier:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 3
-
-The text that we add last is inserted after the child frame in the
-document. Since each frame is padded with text blocks, this ensures that
-more elements can always be inserted with a cursor.
-
-\section2 Tables
-
-Tables are inserted into the document using the cursor, and will be
-placed within the cursor's current frame \e after the current block:
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 0
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 3
-
-Tables can be created with a specific format that defines the overall
-properties of the table, such as its alignment, background color, and
-the cell spacing used. It can also determine the constraints on each
-column, allowing each of them to have a fixed width, or resize according
-to the available space.
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 2
-
-The columns in the table created above will each take up a certain
-percentage of the available width. Note that the table format is
-optional; if you insert a table without a format, some sensible
-default values will be used for the table's properties.
-
-Since cells can contain other document elements, they too can be
-formatted and styled as necessary.
-
-Text can be added to the table by navigating to each cell with the cursor
-and inserting text.
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 4
-
-We can create a simple timetable by following this approach:
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 5
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 6
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 7
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 8
-
-\section2 Lists
-
-Lists of block elements can be automatically created and inserted into the
-document at the current cursor position. Each list that is created in this
-way requires a list format to be specified:
-
-\snippet doc/src/snippets/textdocument-lists/mainwindow.cpp 0
-
-The above code first checks whether the cursor is within an existing list
-and, if so, gives the list format for the new list a suitable level of
-indentation. This allows nested lists to be created with increasing
-levels of indentation. A more sophisticated implementation would also use
-different kinds of symbol for the bullet points in each level of the list.
-
-\section2 Images
-
-Inline images are added to documents through the cursor in the usual manner.
-Unlike many other elements, all of the image properties are specified by the
-image's format. This means that a QTextImageFormat object has to be
-created before an image can be inserted:
-
-\snippet doc/src/snippets/textdocument-images/main.cpp 1
-
-The image name refers to an entry in the application's resource file.
-The method used to derive this name is described in
-\l{resources.html}{The Qt Resource System}.
-
-*/
-
-/*!
-\page richtext-common-tasks.html
-\contentspage richtext.html Contents
-\previouspage The QTextCursor Interface
-\nextpage Advanced Rich Text Processing
-
-\title Common Rich Text Editing Tasks
-
-\tableofcontents
-
-There are a number of tasks that are often performed by developers
-when editing and processing text documents using Qt. These include the use
-of display widgets such as QTextBrowser and QTextEdit, creation of
-documents with QTextDocument, editing using a QTextCursor, and
-exporting the document structure.
-This document outlines some of the more common ways of using the rich
-text classes to perform these tasks, showing convenient patterns that can
-be reused in your own applications.
-
-\section1 Using QTextEdit
-
-A text editor widget can be constructed and used to display HTML in the
-following way:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 2
-
-By default, the text editor contains a document with a root frame, inside
-which is an empty text block. This document can be obtained so that it can
-be modified directly by the application:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 3
-
-The text editor's cursor may also be used to edit a document:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 4
-
-Although a document can be edited using many cursors at once, a QTextEdit
-only displays a single cursor at a time. Therefore, if we want to update the
-editor to display a particular cursor or its selection, we need to set the
-editor's cursor after we have modified the document:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 5
-
-\section1 Selecting Text
-
-Text is selected by moving the cursor using operations that are similar to
-those performed by a user in a text editor. To select text between two
-points in the document, we need to position the cursor at the first point
-then move it using a special mode (\l{QTextCursor::MoveMode}) with a
-move operation (\l{QTextCursor::MoveOperation}).
-When we select the text, we leave the selection anchor at the old cursor
-position just as the user might do by holding down the Shift key when
-selecting text:
-
-\snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 1
-
-In the above code, a whole word is selected using this method. QTextCursor
-provides a number of common move operations for selecting individual
-characters, words, lines, and whole blocks.
-
-\section1 Finding Text
-
-QTextDocument provides a cursor-based interface for searching, making
-it easy to find and modify text in the style of a text editor. The following
-code finds all the instances of a particular word in a document, and changes
-the color of each:
-
-\snippet doc/src/snippets/textdocument-find/main.cpp 0
-\snippet doc/src/snippets/textdocument-find/main.cpp 1
-
-Note that the cursor does not have to be moved after each search and replace
-operation; it is always positioned at the end of the word that was just
-replaced.
-
-\section1 Printing Documents
-
-QTextEdit is designed for the display of large rich text documents that are
-read on screen, rendering them in the same way as a web browser. As a result,
-it does not automatically break the contents of the document into page-sized
-pieces that are suitable for printing.
-
-QTextDocument provides a \l{QTextDocument::print()}{print()} function to
-allow documents to be printed using the QPrinter class. The following code
-shows how to prepare a document in a QTextEdit for printing with a QPrinter:
-
-\snippet doc/src/snippets/textdocument-printing/mainwindow.cpp 0
-
-The document is obtained from the text editor, and a QPrinter is constructed
-then configured using a QPrintDialog. If the user accepts the printer's
-configuration then the document is formatted and printed using the
-\l{QTextDocument::print()}{print()} function.
-
-*/
-
-/*!
-\page richtext-advanced-processing.html
-\contentspage richtext.html Contents
-\previouspage Common Rich Text Editing Tasks
-\nextpage Supported HTML Subset
-
-\title Advanced Rich Text Processing
-
-\section1 Handling Large Files
-
-Qt does not limit the size of files that are used for text
-processing. In most cases, this will not present a problem. For
-especially large files, however, you might experience that your
-application will become unresponsive or that you will run out of
-memory. The size of the files you can load depends on your
-hardware and on Qt's and your own application's implementation.
-
-If you are faced with this problem, we recommend that you address the
-following issues:
-
-\list
- \o You should consider breaking up large paragraphs into smaller
- ones as Qt handles small paragraphs better. You could also
- insert line breaks at regular intervals, which will look the
- same as one large paragraph in a QTextEdit.
- \o You can reduce the amount of blocks in a QTextDocument with
- \l{QTextDocument::}{maximumBlockCount()}. The document is only
- as large as the number of blocks as far as QTextEdit is concerned.
- \o When adding text to a text edit, it is an advantage to add it
- in an edit block (see example below). The result is that the
- text edit does not need to build the entire document structure at once.
-\endlist
-
-We give an example of the latter technique from the list. We assume that
-the text edit is visible.
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 6
-
-\omit
-Ideas for other sections:
-
- * Hiding QTextBlock elements.
- * Changing the word wrapping mode in QTextEdit. Custom word wrapping?
-\endomit
-*/
-
-/*!
- \page richtext-html-subset.html
- \title Supported HTML Subset
- \brief Describes the support for HTML markup in text widgets.
-
- \contentspage richtext.html Contents
- \previouspage Common Rich Text Editing Tasks
-
- Qt's text widgets are able to display rich text, specified using a subset of \l{HTML 4}
- markup. Widgets that use QTextDocument, such as QLabel and QTextEdit, are able to display
- rich text specified in this way.
-
- \tableofcontents
-
- \section1 Using HTML Markup in Text Widgets
-
- Widgets automatically detect HTML markup and display rich text accordingly. For example,
- setting a label's \l{QLabel::}{text} property with the string \c{"<b>Hello</b> <i>Qt!</i>"}
- will result in the label displaying text like this: \bold{Hello} \e{Qt!}
-
- When HTML markup is used for text, Qt follows the rules defined by the \l{HTML 4}
- specification. This includes default properties for text layout, such as the
- direction of the text flow (left-to-right) which can be changed by applying the
- \l{#Block Attributes}{\c dir} attribute to blocks of text.
-
- \section1 Supported Tags
-
- The following table lists the HTML tags supported by Qt's
- \l{Rich Text Processing}{rich text} engine:
-
- \table
- \header \o Tag
- \o Description
- \o Comment
- \row \o \c a
- \o Anchor or link
- \o Supports the \c href and \c name attributes.
- \row \o \c address
- \o Address
- \o
- \row \o \c b
- \o Bold
- \o
- \row \o \c big
- \o Larger font
- \o
- \row \o \c blockquote
- \o Indented paragraph
- \o
- \row \o \c body
- \o Document body
- \o Supports the \c bgcolor attribute, which
- can be a Qt \l{QColor::setNamedColor()}{color name}
- or a \c #RRGGBB color specification.
- \row \o \c br
- \o Line break
- \o
- \row \o \c center
- \o Centered paragraph
- \o
- \row \o \c cite
- \o Inline citation
- \o Same as \c i.
- \row \o \c code
- \o Code
- \o Same as \c tt.
- \row \o \c dd
- \o Definition data
- \o
- \row \o \c dfn
- \o Definition
- \o Same as \c i.
- \row \o \c div
- \o Document division
- \o Supports the standard \l{block attributes}.
- \row \o \c dl
- \o Definition list
- \o Supports the standard \l{block attributes}.
- \row \o \c dt
- \o Definition term
- \o Supports the standard \l{block attributes}.
- \row \o \c em
- \o Emphasized
- \o Same as \c i.
- \row \o \c font
- \o Font size, family, and/or color
- \o Supports the following attributes:
- \c size, \c face, and \c color (Qt
- \l{QColor::setNamedColor()}{color names} or
- \c #RRGGBB).
- \row \o \c h1
- \o Level 1 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h2
- \o Level 2 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h3
- \o Level 3 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h4
- \o Level 4 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h5
- \o Level 5 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h6
- \o Level 6 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c head
- \o Document header
- \o
- \row \o \c hr
- \o Horizontal line
- \o Supports the \c width attribute, which can
- be specified as an absolute or relative (\c %) value.
- \row \o \c html
- \o HTML document
- \o
- \row \o \c i
- \o Italic
- \o
- \row \o \c img
- \o Image
- \o Supports the \c src, \c source
- (for Qt 3 compatibility), \c width, and \c height
- attributes.
- \row \o \c kbd
- \o User-entered text
- \o
- \row \o \c meta
- \o Meta-information
- \o If a text encoding is specified using the \c{meta} tag,
- it is picked up by Qt::codecForHtml().
- Likewise, if an encoding is specified to
- QTextDocument::toHtml(), the encoding is stored using
- a \c meta tag, for example:
-
- \snippet doc/src/snippets/code/doc_src_richtext.qdoc 7
-
- \row \o \c li
- \o List item
- \o
- \row \o \c nobr
- \o Non-breakable text
- \o
- \row \o \c ol
- \o Ordered list
- \o Supports the standard \l{list attributes}.
- \row \o \c p
- \o Paragraph
- \o Left-aligned by default. Supports the standard
- \l{block attributes}.
- \row \o \c pre
- \o Preformated text
- \o
- \row \o \c qt
- \o Qt rich-text document
- \o Synonym for \c html. Provided for compatibility with
- earlier versions of Qt.
- \row \o \c s
- \o Strikethrough
- \o
- \row \o \c samp
- \o Sample code
- \o Same as \c tt.
- \row \o \c small
- \o Small font
- \o
- \row \o \c span
- \o Grouped elements
- \o
- \row \o \c strong
- \o Strong
- \o Same as \c b.
- \row \o \c sub
- \o Subscript
- \o
- \row \o \c sup
- \o Superscript
- \o
- \row \o \c table
- \o Table
- \o Supports the following attributes: \c border,
- \c bgcolor (Qt \l{QColor::setNamedColor()}{color names}
- or \c #RRGGBB), \c cellspacing, \c cellpadding,
- \c width (absolute or relative), and \c height.
- \row \o \c tbody
- \o Table body
- \o Does nothing.
- \row \o \c td
- \o Table data cell
- \o Supports the standard \l{table cell attributes}.
- \row \o \c tfoot
- \o Table footer
- \o Does nothing.
- \row \o \c th
- \o Table header cell
- \o Supports the standard \l{table cell attributes}.
- \row \o \c thead
- \o Table header
- \o If the \c thead tag is specified, it is used when printing tables
- that span multiple pages.
- \row \o \c title
- \o Document title
- \o The value specified using the \c
- title tag is available through
- QTextDocument::metaInformation().
- \row \o \c tr
- \o Table row
- \o Supports the \c bgcolor attribute, which
- can be a Qt \l{QColor::setNamedColor()}{color name}
- or a \c #RRGGBB color specification.
- \row \o \c tt
- \o Typewrite font
- \o
- \row \o \c u
- \o Underlined
- \o
- \row \o \c ul
- \o Unordered list
- \o Supports the standard \l{list attributes}.
- \row \o \c var
- \o Variable
- \o Same as \c i.
- \endtable
-
- \section1 Block Attributes
-
- The following attributes are supported by the \c div, \c dl, \c
- dt, \c h1, \c h2, \c h3, \c h4, \c h5, \c h6, \c p tags:
-
- \list
- \o \c align (\c left, \c right, \c center, \c justify)
- \o \c dir (\c ltr, \c rtl)
- \endlist
-
- \section1 List Attributes
-
- The following attribute is supported by the \c ol and \c ul tags:
-
- \list
- \o \c type (\c 1, \c a, \c A, \c square, \c disc, \c circle)
- \endlist
-
- \section1 Table Cell Attributes
-
- The following attributes are supported by the \c td and \c th
- tags:
-
- \list
- \o \c width (absolute, relative, or no-value)
- \o \c bgcolor (Qt \l{QColor::setNamedColor()}{color names} or \c #RRGGBB)
- \o \c colspan
- \o \c rowspan
- \o \c align (\c left, \c right, \c center, \c justify)
- \o \c valign (\c top, \c middle, \c bottom)
- \endlist
-
- \section1 CSS Properties
- The following table lists the CSS properties supported by Qt's
- \l{Rich Text Processing}{rich text} engine:
-
- \table
- \header \o Property
- \o Values
- \o Description
- \row
- \o \c background-color
- \o <color>
- \o Background color for elements
- \row
- \o \c background-image
- \o <uri>
- \o Background image for elements
- \row \o \c color
- \o <color>
- \o Text foreground color
- \row \o \c font-family
- \o <family name>
- \o Font family name
- \row \o \c font-size
- \o [ small | medium | large | x-large | xx-large ] | <size>pt | <size>px
- \o Font size relative to the document font, or specified in points or pixels
- \row \o \c font-style
- \o [ normal | italic | oblique ]
- \o
- \row \o \c font-weight
- \o [ normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 ]
- \o Specifies the font weight used for text, where \c normal and \c bold
- are mapped to the corresponding QFont weights. Numeric values are
- 8 times the equivalent QFont weight values.
- \row \o \c text-decoration
- \o none | [ underline || overline || line-through ]
- \o Additional text effects
- \row \o \c font
- \o [ [ <'font-style'> || <'font-weight'> ]? <'font-size'> <'font-family'> ]
- \o Font shorthand property
- \row \o \c text-indent
- \o <length>px
- \o First line text indentation in pixels
- \row \o \c white-space
- \o normal | pre | nowrap | pre-wrap
- \o Declares how whitespace in HTML is handled.
- \row \o \c margin-top
- \o <length>px
- \o Top paragraph margin in pixels
- \row \o \c margin-bottom
- \o <length>px
- \o Bottom paragraph margin in pixels
- \row \o \c margin-left
- \o <length>px
- \o Left paragraph margin in pixels
- \row \o \c margin-right
- \o <length>px
- \o Right paragraph margin in pixels
- \row \o \c padding-top
- \o <length>px
- \o Top table cell padding in pixels
- \row \o \c padding-bottom
- \o <length>px
- \o Bottom table cell padding in pixels
- \row \o \c padding-left
- \o <length>px
- \o Left table cell padding in pixels
- \row \o \c padding-right
- \o <length>px
- \o Right table cell padding in pixels
- \row \o \c padding
- \o <length>px
- \o Shorthand for setting all the padding properties at once.
- \row \o \c vertical-align
- \o baseline | sub | super | middle | top | bottom
- \o Vertical text alignment. For vertical alignment in text table cells only middle, top, and bottom apply.
- \row \o \c border-color
- \o <color>
- \o Border color for text tables.
- \row \o \c border-style
- \o none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset
- \o Border style for text tables.
- \row \o \c background
- \o [ <'background-color'> || <'background-image'> ]
- \o Background shorthand property
- \row \o \c page-break-before
- \o [ auto | always ]
- \o Make it possible to enforce a page break before the paragraph/table
- \row \o \c page-break-after
- \o [ auto | always ]
- \o Make it possible to enforce a page break after the paragraph/table
- \row \o float
- \o [ left | right | none ]
- \o Specifies where an image or a text will be placed in another element. Note that the \c float property is
- only supported for tables and images.
- \row \o \c text-transform
- \o [ uppercase | lowercase ]
- \o Select the transformation that will be performed on the text prior to displaying it.
- \row \o \c font-variant
- \o small-caps
- \o Perform the smallcaps transformation on the text prior to displaying it.
- \row \o \c word-spacing
- \o <width>px
- \o Specifies an alternate spacing between each word.
- \endtable
-
- \section1 Supported CSS Selectors
-
- All CSS 2.1 selector classes are supported except pseudo-class selectors such
- as \c{:first-child}, \c{:visited} and \c{:hover}.
-
-*/
diff --git a/doc/src/ecmascript.qdoc b/doc/src/scripting/ecmascript.qdoc
index a13f55d..e6c36d1 100644
--- a/doc/src/ecmascript.qdoc
+++ b/doc/src/scripting/ecmascript.qdoc
@@ -42,7 +42,6 @@
/*!
\page ecmascript.html
\title ECMAScript Reference
- \ingroup scripting
\brief A list of objects, functions and properties supported by QtScript.
This reference contains a list of objects, functions and
diff --git a/doc/src/qtscriptdebugger-manual.qdoc b/doc/src/scripting/qtscriptdebugger-manual.qdoc
index 5c80a7e..1dada93 100644
--- a/doc/src/qtscriptdebugger-manual.qdoc
+++ b/doc/src/scripting/qtscriptdebugger-manual.qdoc
@@ -42,7 +42,6 @@
/*!
\page qtscriptdebugger-manual.html
\title Qt Script Debugger Manual
- \ingroup scripting
\brief A manual describing how to use the Qt Script debugger.
The Qt Script debugger is a tool for debugging script execution in
diff --git a/doc/src/qtscriptextensions.qdoc b/doc/src/scripting/qtscriptextensions.qdoc
index ed09862..d0317ff 100644
--- a/doc/src/qtscriptextensions.qdoc
+++ b/doc/src/scripting/qtscriptextensions.qdoc
@@ -39,20 +39,9 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page qtscriptextensions.html
\title Creating QtScript Extensions
- \ingroup scripting
\brief A guide to creating and using QtScript extensions.
QtScript extensions can make additional functionality available to scripts
diff --git a/doc/src/qtscript.qdoc b/doc/src/scripting/scripting.qdoc
index 33b5691..5fcf8b2 100644
--- a/doc/src/qtscript.qdoc
+++ b/doc/src/scripting/scripting.qdoc
@@ -40,38 +40,28 @@
****************************************************************************/
/*!
- \module QtScript
- \title QtScript Module
- \since 4.3
- \contentspage Qt's Modules
- \previouspage QtOpenVG
- \nextpage QtScriptTools
- \ingroup modules
- \ingroup scripting
+ \group script
+ \title Scripting Classes and Overviews
- \brief The QtScript module provides classes for making Qt applications scriptable.
+ \brief Classes that add scripting capabilities to Qt applications.
+*/
- \tableofcontents
-
- \section1 Configuring the Build Process
-
- Applications that use Qt's Script classes need to
- be configured to be built against the QtScript module.
- To include the definitions of the module's classes, use the
- following directive:
+/*!
+ \page scripting.html
+ \title Making Applications Scriptable
+ \ingroup frameworks-technologies
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 0
+ Qt 4.3 and later provides support for application scripting with ECMAScript.
+ The following guides and references cover aspects of programming with
+ ECMAScript and Qt.
- To link against the module, add this line to your \l qmake \c .pro file:
+ \tableofcontents
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 1
+ \section1 Scripting Classes
- The QtScript module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
+ The following classes add scripting capabilities to Qt applications.
- The QtScript module only provides core scripting facilities; the
- QtScriptTools module provides additional Qt Script-related
- components that application developers may find useful.
+ \annotatedlist script
\section1 Language Overview
@@ -287,11 +277,15 @@
When a signal or slot is overloaded, QtScript will attempt to
pick the right overload based on the actual types of the QScriptValue arguments
- involved in the function invocation. For example, if your class has slots \c{myOverloadedSlot(int)} and \c{myOverloadedSlot(QString)}, the following script code will behave reasonably:
+ involved in the function invocation. For example, if your class has slots
+ \c{myOverloadedSlot(int)} and \c{myOverloadedSlot(QString)}, the following
+ script code will behave reasonably:
\snippet doc/src/snippets/code/doc_src_qtscript.qdoc 11
- You can specify a particular overload by using array-style property access with the \l{QMetaObject::normalizedSignature()}{normalized signature} of the C++ function as the property name:
+ You can specify a particular overload by using array-style property access
+ with the \l{QMetaObject::normalizedSignature()}{normalized signature} of
+ the C++ function as the property name:
\snippet doc/src/snippets/code/doc_src_qtscript.qdoc 12
@@ -1371,8 +1365,7 @@
When experimenting with QtScript objects and inheritance, it can be
helpful to use the interactive interpreter included with the
- \l{Qt Examples#Qt Script}{Qt Script examples}, located in
- \c{examples/script/qscript}.
+ \l{Qt Script Examples}, located in \c{examples/script/qscript}.
\section2 Prototype Objects and Shared Properties
@@ -1689,8 +1682,9 @@
doesn't provide any debugging-specific functionality (e.g. setting
breakpoints), but it is the basis of tools that do.
- The QScriptEngineDebugger class introduced in Qt 4.5 provides a Qt Script
- debugger that can be embedded into your application.
+ The QScriptEngineDebugger class introduced in Qt 4.5 provides a
+ \l{Qt Script Debugger Manual}{Qt Script debugger} that can be embedded
+ into your application.
\section2 Redefining print()
@@ -1721,8 +1715,9 @@
scripts. There are currently no script plugins shipped with Qt.
If you are implementing some Qt Script functionality that you want other
- Qt application developers to be able to use, developing an extension (e.g.
- by subclassing QScriptExtensionPlugin) is worth looking into.
+ Qt application developers to be able to use, \l{Creating QtScript Extensions}
+ {developing an extension} (e.g. by subclassing QScriptExtensionPlugin) is
+ worth looking into.
\section1 Internationalization
diff --git a/doc/src/snippets/code/doc_src_qalgorithms.qdoc b/doc/src/snippets/code/doc_src_qalgorithms.qdoc
index 69d943c..e2126dd 100644
--- a/doc/src/snippets/code/doc_src_qalgorithms.qdoc
+++ b/doc/src/snippets/code/doc_src_qalgorithms.qdoc
@@ -302,7 +302,7 @@ list.clear();
QList<int> list;
list << 33 << 12 << 68 << 6 << 12;
qSort(list.begin(), list.end(), qLess<int>());
-// list: [ 68, 33, 12, 12, 6 ]
+// list: [ 6, 12, 12, 33, 68 ]
//! [24]
diff --git a/doc/src/snippets/code/doc_src_qtmultimedia.qdoc b/doc/src/snippets/code/doc_src_qtmultimedia.qdoc
new file mode 100644
index 0000000..87a03a4
--- /dev/null
+++ b/doc/src/snippets/code/doc_src_qtmultimedia.qdoc
@@ -0,0 +1,8 @@
+//! [0]
+QT += multimedia
+//! [0]
+
+
+//! [1]
+#include <QtMultimedia>
+//! [1]
diff --git a/doc/src/qsqldatatype-table.qdoc b/doc/src/sql-programming/qsqldatatype-table.qdoc
index 1903861..e8c2351 100644
--- a/doc/src/qsqldatatype-table.qdoc
+++ b/doc/src/sql-programming/qsqldatatype-table.qdoc
@@ -41,7 +41,9 @@
/*!
\page sql-types.html
- \title QtSql Module - Recommended Use of Data Types
+ \title Recommended Use of Data Types in Databases
+
+ \ingroup best-practices
\section1 Recommended Use of Types in Qt Supported Databases
diff --git a/doc/src/sql-driver.qdoc b/doc/src/sql-programming/sql-driver.qdoc
index ef5812e..832fd0c 100644
--- a/doc/src/sql-driver.qdoc
+++ b/doc/src/sql-programming/sql-driver.qdoc
@@ -42,9 +42,10 @@
/*!
\page sql-driver.html
\title SQL Database Drivers
- \ingroup architecture
\brief How to configure and install QtSql drivers for supported databases.
+ \ingroup best-practices
+
The QtSql module uses driver \l{How to Create Qt
Plugins}{plugins} to communicate with the different database
APIs. Since Qt's SQL Module API is database-independent, all
@@ -707,15 +708,14 @@
debug output when loading plugins.
\endlist
+ Make sure you have followed the guide to \l{Deploying Plugins}.
If you experience plugin load problems and see output like this:
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 31
- The problem is usually that the plugin had the wrong \l{How to
- Create Qt Plugins#The Build Key}{build key}. This might require
- removing an entry from the \l{How to Create Qt Plugins#The Plugin
- Cache} {plugin cache}. Here is some more \l{How to Create Qt
- Plugins#Debugging Plugins} {plugin debugging info}.
+ the problem is usually that the plugin had the wrong \l{Deploying
+ Plugins#The Build Key}{build key}. This might require removing an
+ entry from the \l{Deploying Plugins#The Plugin Cache} {plugin cache}.
\target development
\section1 How to Write Your Own Database Driver
diff --git a/doc/src/qtsql.qdoc b/doc/src/sql-programming/sql-programming.qdoc
index 0540ff5..7700a3d 100644
--- a/doc/src/qtsql.qdoc
+++ b/doc/src/sql-programming/sql-programming.qdoc
@@ -40,56 +40,17 @@
****************************************************************************/
/*!
- \module QtSql
- \title QtSql Module
- \contentspage Qt's Modules
- \previouspage QtScript
- \nextpage QtSvg
- \ingroup modules
+ \group database
+ \title Database Classes
- \brief The QtSql module helps you provide seamless database
- integration to your Qt applications.
-
- The SQL classes are divided into three layers:
-
- \table
- \header \o Layer \o Description
- \row \o \bold{Driver Layer}
- \o This comprises the classes QSqlDriver,
- QSqlDriverCreator<T>, QSqlDriverCreatorBase,
- QSqlDriverPlugin, and QSqlResult. This layer provides the
- low-level bridge between the specific databases and the
- SQL API layer. See \l{SQL Database Drivers} for more
- information.
- \row \o \bold{SQL API Layer}
- \o These classes provide access to databases. Connections
- are made using the QSqlDatabase class. Database
- interaction is achieved by using the QSqlQuery class.
- In addition to QSqlDatabase and QSqlQuery, the SQL API
- layer is supported by QSqlError, QSqlField, QSqlIndex,
- and QSqlRecord.
-
- \row \o \bold{User Interface Layer}
- \o These classes link the data from a database to
- data-aware widgets. They include QSqlQueryModel,
- QSqlTableModel, and QSqlRelationalTableModel. These
- classes are designed to work with Qt's model/view
- framework.
- \endtable
-
- Note that to use any of these classes, a QCoreApplication object
- must have been instantiated first. To include the definitions of
- the module's classes, use the following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
+ \brief Database related classes, e.g. for SQL databases.
+*/
- \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 1
+/*!
+ \page sql-programming.html
+ \title SQL Programming
- The QtSql module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
+ \brief Database integration for Qt applications.
This overview assumes that you have at least a basic knowledge of
SQL. You should be able to understand simple \c SELECT, \c
@@ -100,11 +61,65 @@
covering SQL databases is \e {An Introduction to Database Systems}
(7th Ed.) by C. J. Date, ISBN 0201385902.
- Topics:
+ \section1 Topics:
+
+ \list
+ \o \l{Database Classes}
+ \o \l{Connecting to Databases}
+ \list
+ \o \l{SQL Database Drivers}
+ \endlist
+ \o \l{Executing SQL Statements}
+ \list
+ \o \l{Recommended Use of Data Types in Databases}
+ \endlist
+ \o \l{Using the SQL Model Classes}
+ \o \l{Presenting Data in a Table View}
+ \o \l{Creating Data-Aware Forms}
+ \endlist
+
+ \section1 Database Classes
+
+ These classes provide access to SQL databases.
+
+ \annotatedlist database
+
+ The SQL classes are divided into three layers:
+
+ \section2 Driver Layer
+
+ This comprises the classes QSqlDriver, QSqlDriverCreator<T>,
+ QSqlDriverCreatorBase, QSqlDriverPlugin, and QSqlResult.
- \tableofcontents
+ This layer provides the low-level bridge between the specific databases
+ and the SQL API layer. See \l{SQL Database Drivers} for more information.
- \section1 Connecting to Databases
+ \section2 SQL API Layer
+
+ These classes provide access to databases. Connections
+ are made using the QSqlDatabase class. Database
+ interaction is achieved by using the QSqlQuery class.
+ In addition to QSqlDatabase and QSqlQuery, the SQL API
+ layer is supported by QSqlError, QSqlField, QSqlIndex,
+ and QSqlRecord.
+
+ \section2 User Interface Layer
+
+ These classes link the data from a database to data-aware widgets.
+ They include QSqlQueryModel, QSqlTableModel, and QSqlRelationalTableModel.
+ These classes are designed to work with Qt's
+ \l{Model/View Programming}{model/view framework}.
+
+ Note that to use any of these classes, a QCoreApplication object
+ must have been instantiated first.
+*/
+
+/*!
+ \page sql-connecting.html
+ \title Connecting to Databases
+
+ \contentspage SQL Programming
+ \nextpage Executing SQL Statements
To access a database with QSqlQuery or QSqlQueryModel, create and
open one or more database connections. Database connections are
@@ -165,8 +180,16 @@
To remove a database connection, first close the database using
QSqlDatabase::close(), then remove it using the static method
QSqlDatabase::removeDatabase().
+*/
- \section1 Executing SQL Statements
+/*!
+ \page sql-sqlstatements.html
+ \title Executing SQL Statements
+
+ \previouspage Connecting to Databases
+ \contentspage SQL Programming
+ \nextpage Using the SQL Model Classes
+
The QSqlQuery class provides an interface for executing SQL
statements and navigating through the result set of a query.
@@ -213,7 +236,7 @@
variants to QString and \c int.
For an overview of the recommended types used with Qt supported
- Databases, please refer to \l {QtSql Module - Recommended use of data types}{this table}.
+ Databases, please refer to \l{Recommended Use of Data Types in Databases}{this table}.
You can iterate back and forth using QSqlQuery::next(),
QSqlQuery::previous(), QSqlQuery::first(), QSqlQuery::last(), and
@@ -307,8 +330,15 @@
It would be useful to mention transactions, and the fact that
some databases don't support them.
\endomit
+*/
- \section1 Using the SQL Model Classes
+/*!
+ \page sql-model.html
+ \title Using the SQL Model Classes
+
+ \previouspage Executing SQL Statements
+ \contentspage SQL Programming
+ \nextpage Presenting Data in a Table View
In addition to QSqlQuery, Qt offers three higher-level classes
for accessing databases. These classes are QSqlQueryModel,
@@ -446,8 +476,15 @@
\snippet examples/sql/relationaltablemodel/relationaltablemodel.cpp 2
See the QSqlRelationalTableModel documentation for details.
+*/
- \section1 Presenting Data in a Table View
+/*!
+ \page sql-presenting.html
+ \title Presenting Data in a Table View
+
+ \previouspage Using the SQL Model Classes
+ \contentspage SQL Programming
+ \nextpage Creating Data-Aware Forms
The QSqlQueryModel, QSqlTableModel, and QSqlRelationalTableModel
classes can be used as a data source for Qt's view classes such
@@ -543,8 +580,14 @@
illustrates how to use QSqlRelationalTableModel in conjunction with
QSqlRelationalDelegate to provide tables with foreign key
support.
+*/
- \section1 Creating Data-Aware Forms
+/*!
+ \page sql-forms.html
+ \title Creating Data-Aware Forms
+
+ \previouspage Presenting Data in a Table View
+ \contentspage SQL Programming
Using the SQL models described above, the contents of a database can
be presented to other model/view components. For some applications,
diff --git a/doc/src/topics.qdoc b/doc/src/topics.qdoc
deleted file mode 100644
index df63d92..0000000
--- a/doc/src/topics.qdoc
+++ /dev/null
@@ -1,290 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\group topics
-\title Topics
-
-This page provides a collection of documents grouped by topic.
-
-The \l{Grouped Classes} page contains a similar list of groups for
-Qt's class documentation.
-
-\generatelist{related}
-*/
-
-/*!
-\group architecture
-\title Architecture
-\ingroup topics
-\brief Documents about Qt's architecture and design.
-
-These documents describe aspects of Qt's architecture and design,
-including overviews of core Qt features and technologies.
-
-\generatelist{related}
-*/
-
-/*!
-\group buildsystem
-\title Build System
-\ingroup topics
-\brief Tools to help automate building and installation of Qt applications.
-
-Qt is provided with a set of build tools to help developers automate
-the process of building and installing Qt applications.
-
-\table 100%
-\header \o Development \o Cross-Platform Issues \o Specific Tools
-\row
-\o
- \list
- \o \l {Debugging Techniques}
- \o \l {Qt's Tools}
- \o \l {The Qt Resource System}
- \o \l {Using Precompiled Headers}
-\endlist
-\o
-\list
- \o \l {Cross Compiling Qt for Embedded Linux Applications}
- \o \l {Deploying Qt Applications}
- \o \l {Installation}{Installing Qt}
- \o \l {Window System Specific Notes}
-\endlist
-\o
-\list
- \o \l lupdate and \l lrelease
- \o \l {moc}{Meta-Object Compiler (moc)}
- \o \l {User Interface Compiler (uic)}
- \o \l {Resource Compiler (rcc)}
-\endlist
-\endtable
-
-
-*/
-
-/*!
-\group classlists
-\title Class and Function Indexes
-\ingroup topics
-\brief Collections of classes and functions grouped together into lists.
-
-The following documents contain collections of classes, grouped by
-subject area or related to particular functionality, or comprehensive
-lists of classes and functions.
-
-\generatelist{related}
-*/
-
-/*!
-\group codecs
-\title Codecs
-\ingroup topics
-\brief Codec support in Qt.
-
-These codecs provide facilities for conversion between Unicode and
-specific text encodings.
-
-\generatelist{related}
-*/
-
-/*!
-\group gui-programming
-\title GUI Programming
-\ingroup topics
-\brief Resources for developers of GUI applications.
-
-The following list contains links to guides and other resources for
-developers of graphical user interface (GUI) applications.
-
-\generatelist{related}
-*/
-
-/*!
-\group howto
-\title How To Guides and Learning Resources
-\ingroup topics
-\brief Guides providing help on aspects of using Qt.
-
-These guides provide specific help about specific Qt-related topics.
-
-\generatelist{related}
-*/
-
-/*!
-\group platform-notes
-\title Platform-Specific Notes
-\ingroup topics
-\brief Documents describing platform-specific features of Qt.
-
-These documents describe platform-specific features provided by Qt, and
-discuss issues related to particular platforms and environments.
-
-\generatelist{related}
-*/
-
-/*!
-\group porting
-\title Porting Guides
-\ingroup topics
-\brief Guides related to porting Qt applications and libraries.
-
-A number of guides and documents are available that cover porting issues,
-from detailed coverage of API differences between Qt 3 and Qt 4 to
-platform and tool-specific documentation.
-
-\generatelist{related}
-*/
-
-/*!
-\group text-processing
-\title Text Processing
-\ingroup topics
-\brief Text processing guides and classes.
-
-Qt provides an extensive collection of classes for text handling.
-The following guides and references describe basic text handling, support
-for internationalization and character encodings, and Qt's rich text
-system.
-
-\generatelist{related}
-*/
-
-/*!
- \group tutorials
- \title Tutorials
- \ingroup topics
- \brief Tutorials, guides and overviews to help you learn Qt.
-
- A collection of tutorials and "walkthrough" guides are provided with Qt to
- help new users get started with Qt development. These documents cover a
- range of topics, from basic use of widgets to step-by-step tutorials that
- show how an application is put together.
-
- \section1 \l{Widgets Tutorial}
-
- \inlineimage widget-examples.png
-
- A beginner's guide to getting started with widgets and layouts to create
- GUI applications.
-
- \section1 \l{Address Book Tutorial}
-
- \inlineimage addressbook-tutorial.png
-
- A seven part guide to creating a fully-functioning address book
- application. This tutorial is also available with
- \l{Tutoriel "Carnet d'adresses"}{French explanation}.
-
-*/
-
-/*!
-\group activeqt-tools
-\title Tools for ActiveQt
-\ingroup topics
-\brief Tools to help integrate Qt applications with ActiveX components.
-
-These tools provide support for integrating Qt with ActiveX components.
-
-\generatelist{related}
-
-\sa {ActiveQt Framework}
-*/
-
-/*!
-\group scripting
-\title Scripting with ECMAScript
-\ingroup topics
-\brief Guides and references covering application scripting with ECMAScript.
-
-Qt 4.3 and later provides support for application scripting with ECMAScript.
-The following guides and references cover aspects of programming with
-ECMAScript and Qt.
-
-\generatelist{related}
-*/
-
-/*!
-\group threading
-\title Threading and Concurrent Programming
-\ingroup topics
-\brief Guides and references covering threading and concurrent programming.
-
-Qt provides a number of classes to handle the primitives used for multithreaded
-programming. From Qt 4.4, the QtConcurrent namespace also provides a set of higher
-level classes for concurrent programming.
-
-\generatelist{related}
-*/
-
-/*!
-\group qtce
-\title Qt for Windows CE
-\ingroup topics
-\ingroup qt-embedded
-\brief Documents related to Qt on Windows CE
-
-Qt for Windows CE is a C++ framework for GUI and application development
-for embedded devices running Windows CE. It runs on a variety of processors,
-including ARM, Intel x86, MIPS and SH-4.
-
-\table 100%
-\header \o Getting Started \o Reference \o Performance and Optimization
-\row
-\o
- \list
- \o \l {Qt for Windows CE Requirements}
- \o \l {Installing Qt on Windows CE}
- \o \l {Windows CE - Introduction to using Qt}{Introduction to using Qt}
-\endlist
-\o
-\list
- \o \l {Windows CE - Using shadow builds}{Using shadow builds}
- \o \l {Windows CE - Working with Custom SDKs}{Working with Custom SDKs}
-\endlist
-\o
-\list
- \o \l {Windows CE OpenGL ES}{OpenGL ES}
- \o \l {Qt Performance Tuning}
- \o \l {Fine-Tuning Features in Qt}
-\endlist
-\endtable
-*/
diff --git a/doc/src/tutorials/addressbook-fr.qdoc b/doc/src/tutorials/addressbook-fr.qdoc
index 3ce2987..990e06e 100644
--- a/doc/src/tutorials/addressbook-fr.qdoc
+++ b/doc/src/tutorials/addressbook-fr.qdoc
@@ -43,11 +43,10 @@
\page tutorials-addressbook-fr.html
\startpage {index.html}{Qt Reference Documentation}
+ \contentspage Tutorials
\nextpage {tutorials/addressbook-fr/part1}{Chapitre 1}
\title Tutoriel "Carnet d'adresses"
- \ingroup howto
- \ingroup tutorials
\brief Une introduction à la programation d'interface graphique montrant comment construire une application simple avec Qt.
Ce tutoriel est une introduction à la programmation de GUI (interface utilisateur)
diff --git a/doc/src/tutorials/addressbook.qdoc b/doc/src/tutorials/addressbook.qdoc
index d27b95c..4623aaa 100644
--- a/doc/src/tutorials/addressbook.qdoc
+++ b/doc/src/tutorials/addressbook.qdoc
@@ -43,11 +43,10 @@
\page tutorials-addressbook.html
\startpage {index.html}{Qt Reference Documentation}
+ \contentspage Tutorials
\nextpage {tutorials/addressbook/part1}{Chapter 1}
\title Address Book Tutorial
- \ingroup howto
- \ingroup tutorials
\brief An introduction to GUI programming, showing how to put together a
simple yet fully-functioning application.
diff --git a/doc/src/tutorials/widgets-tutorial.qdoc b/doc/src/tutorials/widgets-tutorial.qdoc
index 39f6b00..3c0220e 100644
--- a/doc/src/tutorials/widgets-tutorial.qdoc
+++ b/doc/src/tutorials/widgets-tutorial.qdoc
@@ -41,15 +41,15 @@
/*!
\page widgets-tutorial.html
- \startpage {index.html}{Qt Reference Documentation}
- \nextpage {tutorials/widgets/toplevel}{Creating a Window}
-
\title Widgets Tutorial
- \ingroup tutorials
-
\brief This tutorial covers basic usage of widgets and layouts, showing how
they are used to build GUI applications.
+ \startpage {index.html}{Qt Reference Documentation}
+ \contentspage Tutorials
+ \nextpage {tutorials/widgets/toplevel}{Creating a Window}
+
+
\section1 Introduction
Widgets are the basic building blocks of graphical user interface (GUI)
@@ -94,7 +94,7 @@
example. For example, the GUI for a main window may be set up in the
constructor of a QMainWindow subclass.
- The \l{Qt Examples#Widgets}{Widgets examples} are a good place to look for
+ The \l{Widgets examples} are a good place to look for
more complex and complete examples and applications.
\section1 Building Examples and Tutorials
@@ -279,6 +279,5 @@
\snippet tutorials/widgets/nestedlayouts/main.cpp set up the model
The use of models and views is covered in the
- \l{Qt Examples#Item Views}{item view examples} and in the
- \l{Model/View Programming} overview.
+ \l{Item Views Examples} and in the \l{Model/View Programming} overview.
*/
diff --git a/doc/src/focus.qdoc b/doc/src/widgets-and-layouts/focus.qdoc
index 459a9d8..1cbc71b 100644
--- a/doc/src/focus.qdoc
+++ b/doc/src/widgets-and-layouts/focus.qdoc
@@ -39,24 +39,11 @@
**
****************************************************************************/
-/****************************************************************************
-**
-** Documentation of focus handling in Qt.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
/*!
\page focus.html
\title Keyboard Focus
- \ingroup architecture
- \ingroup gui-programming
- \brief An overview of the keyboard focus management and handling.
+ \brief Keyboard focus management and handling.
+ \ingroup frameworks-technologies
\keyword keyboard focus
diff --git a/doc/src/gallery-cde.qdoc b/doc/src/widgets-and-layouts/gallery-cde.qdoc
index 02dabb1..02dabb1 100644
--- a/doc/src/gallery-cde.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-cde.qdoc
diff --git a/doc/src/gallery-cleanlooks.qdoc b/doc/src/widgets-and-layouts/gallery-cleanlooks.qdoc
index 13c0f8f..13c0f8f 100644
--- a/doc/src/gallery-cleanlooks.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-cleanlooks.qdoc
diff --git a/doc/src/gallery-gtk.qdoc b/doc/src/widgets-and-layouts/gallery-gtk.qdoc
index 8251f04..8251f04 100644
--- a/doc/src/gallery-gtk.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-gtk.qdoc
diff --git a/doc/src/gallery-macintosh.qdoc b/doc/src/widgets-and-layouts/gallery-macintosh.qdoc
index c7efabe..c7efabe 100644
--- a/doc/src/gallery-macintosh.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-macintosh.qdoc
diff --git a/doc/src/gallery-motif.qdoc b/doc/src/widgets-and-layouts/gallery-motif.qdoc
index 1539753..1539753 100644
--- a/doc/src/gallery-motif.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-motif.qdoc
diff --git a/doc/src/gallery-plastique.qdoc b/doc/src/widgets-and-layouts/gallery-plastique.qdoc
index 49bd13e..49bd13e 100644
--- a/doc/src/gallery-plastique.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-plastique.qdoc
diff --git a/doc/src/gallery-windows.qdoc b/doc/src/widgets-and-layouts/gallery-windows.qdoc
index 2fa971c..2fa971c 100644
--- a/doc/src/gallery-windows.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-windows.qdoc
diff --git a/doc/src/gallery-windowsvista.qdoc b/doc/src/widgets-and-layouts/gallery-windowsvista.qdoc
index 9ab3a2f..9ab3a2f 100644
--- a/doc/src/gallery-windowsvista.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-windowsvista.qdoc
diff --git a/doc/src/gallery-windowsxp.qdoc b/doc/src/widgets-and-layouts/gallery-windowsxp.qdoc
index aefff65..aefff65 100644
--- a/doc/src/gallery-windowsxp.qdoc
+++ b/doc/src/widgets-and-layouts/gallery-windowsxp.qdoc
diff --git a/doc/src/gallery.qdoc b/doc/src/widgets-and-layouts/gallery.qdoc
index e96a8ef..cb92cb4 100644
--- a/doc/src/gallery.qdoc
+++ b/doc/src/widgets-and-layouts/gallery.qdoc
@@ -42,7 +42,6 @@
/*!
\group gallery
\title Qt Widget Gallery
- \ingroup topics
\brief Qt widgets shown in different styles on various platforms.
Qt's support for widget styles and themes enables your application to fit in
diff --git a/doc/src/layout.qdoc b/doc/src/widgets-and-layouts/layout.qdoc
index dc75bc6..4622301 100644
--- a/doc/src/layout.qdoc
+++ b/doc/src/widgets-and-layouts/layout.qdoc
@@ -40,12 +40,21 @@
****************************************************************************/
/*!
- \page layout.html
+ \group geomanagement
+ \title Layout Classes
+*/
+/*!
+ \page layout.html
\title Layout Management
- \ingroup architecture
\brief A tour of the standard layout managers and an introduction to custom
layouts.
+
+ \previouspage Widget Classes
+ \contentspage Widgets and Layouts
+ \nextpage {Implementing Styles and Style Aware Widgets}{Styles}
+
+ \ingroup frameworks-technologies
The Qt layout system provides a simple and powerful way of automatically
arranging child widgets within a widget to ensure that they make good use
@@ -78,6 +87,8 @@
\endlist
\endlist
+ \section1 Qt's Layout Classes
+
Qt's layout classes were designed for hand-written C++ code, allowing
measurements to be specified in pixels for simplicity, so they are easy to
understand and use. The code generated for forms created using \QD also
@@ -85,6 +96,7 @@
design of a form since it avoids the compile, link and run cycle usually
involved in user interface development.
+ \annotatedlist geomanagement
\section1 Horizontal, Vertical, Grid, and Form Layouts
diff --git a/doc/src/styles.qdoc b/doc/src/widgets-and-layouts/styles.qdoc
index e6c6e8c..aa51838 100644
--- a/doc/src/styles.qdoc
+++ b/doc/src/widgets-and-layouts/styles.qdoc
@@ -40,23 +40,34 @@
****************************************************************************/
/*!
- \page style-reference.html
+ \group appearance
+ \title Widget Appearance and Style
+ \brief Classes used for customizing UI appearance and style.
+*/
+/*!
+ \page style-reference.html
\title Implementing Styles and Style Aware Widgets
- \ingroup architecture
\brief An overview of styles and the styling of widgets.
- \tableofcontents
+ \ingroup frameworks-technologies
- \section1 Introduction
+ \previouspage Widget Classes
+ \contentspage Widgets and Layouts
+ \nextpage {Qt Style Sheets}{Style sheets}
Styles (classes that inherit QStyle) draw on behalf of widgets
- and encapsulate the look and feel of a GUI. Several styles are
- built into Qt (e.g., windows style and motif style). Other styles are
- only available on specific platforms (such as the windows XP style).
- Custom styles are made available as plugins or by creating an
- instance of the style class in an application and setting it with
- QApplication::setStyle().
+ and encapsulate the look and feel of a GUI. The QStyle class is
+ an abstract base class that encapsulates the look and feel of a
+ GUI. Qt's built-in widgets use it to perform nearly all of their
+ drawing, ensuring that they look exactly like the equivalent
+ native widgets.
+
+ Several styles are built into Qt (e.g., windows style and motif style).
+ Other styles are only available on specific platforms (such as
+ the windows XP style). Custom styles are made available as plugins
+ or by creating an instance of the style class in an application and
+ setting it with QApplication::setStyle().
To implement a new style, you inherit one of Qt's existing styles
- the one most resembling the style you want to create - and
@@ -79,6 +90,15 @@
current style. This document shows how widgets draw themselves
and which possibilities the style gives them.
+ \tableofcontents
+
+ \section1 Classes for Widget Styling
+
+ These classes are used to customize an application's appearance and
+ style.
+
+ \annotatedlist appearance
+
\section1 The QStyle implementation
The API of QStyle contains functions that draw the widgets, static
@@ -91,9 +111,26 @@
QStyle draws graphical elements; an element is a widget or a
widget part like a push button bevel, a window frame, or a scroll
- bar. When a widget asks a style to draw an element, it provides the
- style with a style option, which is a class that contains the
- information necessary for drawing.
+ bar. Most draw functions now take four arguments:
+
+ \list
+ \o an enum value specifying which graphical element to draw
+ \o a QStyleOption specifying how and where to render that element
+ \o a QPainter that should be used to draw the element
+ \o a QWidget on which the drawing is performed (optional)
+ \endlist
+
+ When a widget asks a style to draw an element, it provides the style
+ with a QStyleOption, which is a class that contains the information
+ necessary for drawing. Thanks to QStyleOption, it is possible to make
+ QStyle draw widgets without linking in any code for the widget. This
+ makes it possible to use \l{QStyle}'s draw functions on any paint
+ device. Ie you can draw a combobox on any widget, not just on a
+ QComboBox.
+
+ The widget is passed as the last argument in case the style needs
+ it to perform special effects (such as animated default buttons on
+ Mac OS X), but it isn't mandatory.
We will in the course of this section look at the style elements,
the style options, and the functions of QStyle. Finally, we describe
@@ -236,11 +273,15 @@
\section2 Style Options
- A style option (a class that inherit QStyleOption) stores
- parameters used by QStyle functions. The sub-classes of
- QStyleOption contain all information necessary to style the
- individual widgets. The style options keep public variables for
- performance reasons. Style options are filled out by the widgets.
+ The sub-classes of QStyleOption contain all information necessary
+ to style the individual elements. Style options are instantiated -
+ usually on the stack - and filled out by the caller of the QStyle
+ function. Depending on what is drawn the style will expect
+ different a different style option class. For example, the
+ QStyle::PE_FrameFocusRect element expects a QStyleOptionFocusRect
+ argument, and it's possible to create custom subclasses that a
+ custom style can use. The style options keep public variables
+ for performance reasons.
The widgets can be in a number of different states, which are
defined by the \l{QStyle::}{State} enum. Some of the state flags have
@@ -256,6 +297,29 @@
the text, icon, and the size of their icon. The exact contents of
all options are described when we go through individual widgets.
+ When reimplementing QStyle functions that take a
+ QStyleOption parameter, you often need to cast the
+ QStyleOption to a subclass (e.g., QStyleOptionFocusRect). For
+ safety, you can use qstyleoption_cast() to ensure that the
+ pointer type is correct. If the object isn't of the right type,
+ qstyleoption_cast() returns 0. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 0
+
+ The following code snippet illustrates how to use QStyle to
+ draw the focus rectangle from a custom widget's paintEvent():
+
+ \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 1
+
+ The next example shows how to derive from an existing style to
+ customize the look of a graphical element:
+
+ \snippet doc/src/snippets/customstyle/customstyle.h 0
+ \codeline
+ \snippet doc/src/snippets/customstyle/customstyle.cpp 2
+ \snippet doc/src/snippets/customstyle/customstyle.cpp 3
+ \snippet doc/src/snippets/customstyle/customstyle.cpp 4
+
\section2 QStyle Functions
The QStyle class defines three functions for drawing the primitive,
diff --git a/doc/src/stylesheet.qdoc b/doc/src/widgets-and-layouts/stylesheet.qdoc
index 2afe924..6a3fcb2 100644
--- a/doc/src/stylesheet.qdoc
+++ b/doc/src/widgets-and-layouts/stylesheet.qdoc
@@ -41,12 +41,15 @@
/*!
\page stylesheet.html
- \startpage index.html QtReference Documentation
- \nextpage The Style Sheet Syntax
\title Qt Style Sheets
- \ingroup architecture
\brief How to use style sheets to customize the appearance of widgets.
+ \ingroup frameworks-technologies
+
+ \previouspage {Implementing Styles and Style Aware Widgets}{Styles}
+ \contentspage Widgets and Layouts
+ \nextpage The Style Sheet Syntax
+
\keyword style sheet
\keyword stylesheet
@@ -62,15 +65,10 @@
\list
\i \l{Overview}
\i \l{The Style Sheet Syntax}
- \tableofcontents{1 The Style Sheet Syntax}
\i \l{Qt Designer Integration}
- \tableofcontents{1 Qt Designer Integration}
\i \l{Customizing Qt Widgets Using Style Sheets}
- \tableofcontents{1 Customizing Qt Widgets Using Style Sheets}
\i \l{Qt Style Sheets Reference}
- \tableofcontents{1 Qt Style Sheets Reference}
\i \l{Qt Style Sheets Examples}
- \tableofcontents{1 Qt Style Sheets Examples}
\endlist
\target overview
@@ -150,7 +148,7 @@
subclasses. We plan to address this in some future release.
*/
- /*!
+/*!
\page stylesheet-syntax.html
\contentspage {Qt Style Sheet}{Contents}
\previouspage Qt Style Sheet
@@ -160,6 +158,8 @@
Qt Style Sheet terminology and syntactic rules are almost
identical to those of HTML CSS. If you already know CSS, you can
probably skim quickly through this section.
+
+ \tableofcontents
\section1 Style Rules
@@ -549,9 +549,9 @@
If the property references an enum declared with Q_ENUMS, you should
reference its constants by name, i.e., not their numeric value.
- */
+*/
- /*!
+/*!
\page stylesheet-designer.html
\contentspage {Qt Style Sheet}{Contents}
\previouspage The Style Sheet Syntax
@@ -577,7 +577,7 @@
\image designer-stylesheet-usage.png
*/
- /*!
+/*!
\page stylesheet-customizing.html
\contentspage {Qt Style Sheet}{Contents}
\previouspage Qt Designer Integration
@@ -589,6 +589,8 @@
padding rectangle, and the content rectangle. The box model describes
this in further detail.
+ \tableofcontents
+
\target box model
\section1 The Box Model
@@ -677,9 +679,9 @@
property or sub-control is customized, \bold{all} the other properties or
sub-controls must be customized as well.
- */
+*/
- /*!
+/*!
\page stylesheet-reference.html
\contentspage {Qt Style Sheet}{Contents}
\previouspage Customizing Qt Widgets Using Style Sheets
@@ -3356,17 +3358,17 @@
for an example of how to customize a subcontrol.
*/
- /*!
+/*!
\page stylesheet-examples.html
\contentspage {Qt Style Sheet}{Contents}
\previouspage Qt Style Sheets Reference
\title Qt Style Sheets Examples
+ We will now see a few examples to get started with using Qt Style Sheets.
+
\tableofcontents
\section1 Style Sheet Usage
- We will now see a few examples to get started with using Qt Style Sheets.
-
\section2 Customizing the Foreground and Background Colors
Let's start by setting yellow as the background color of all
diff --git a/doc/src/widgets-and-layouts/widgets.qdoc b/doc/src/widgets-and-layouts/widgets.qdoc
new file mode 100644
index 0000000..0697b94
--- /dev/null
+++ b/doc/src/widgets-and-layouts/widgets.qdoc
@@ -0,0 +1,187 @@
+/****************************************************************************
+**
+** 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 widgets-and-layouts.html
+ \title Widgets and Layouts
+
+ \ingroup frameworks-technologies
+
+ \nextpage Widget Classes
+
+ The primary elements for designing user interfaces in Qt are widgets and layouts.
+
+ \section1 Widgets
+
+ \l{Widget Classes}{Widgets} can display data and status information, receive
+ user input, and provide a container for other widgets that should be grouped
+ together. A widget that is not embedded in a parent widget is called a
+ \l{Application Windows and Dialogs}{window}.
+
+ \image parent-child-widgets.png A parent widget containing various child widgets.
+
+ The QWidget class provides the basic capability to render to the screen, and to
+ handle user input events. All UI elements that Qt provides are either subclasses
+ of QWidget, or are used in connection with a QWidget subclass. Creating custom
+ widgets is done by subclassing QWidget or a suitable subclass and reimplementing
+ the virtual event handlers.
+
+ \section1 Layouts
+
+ \l{Layout Management}{Layouts} are an elegant and flexible way to automatically
+ arrange child widgets within their container. Each widget reports its size requirements
+ to the layout through the \l{QWidget::}{sizeHint} and \l{QWidget::}{sizePolicy}
+ properties, and the layout distributes the available space accordingly.
+
+ \table
+ \row
+ \o \image qgridlayout-with-5-children.png
+ \o \image qformlayout-with-6-children.png
+ \endtable
+
+ \l{Qt Designer Manual}{\QD} is a powerful tool for interactively creating and
+ arranging widgets in layouts.
+
+ \section1 Widget Styles
+
+ \l{Implementing Styles and Style Aware Widgets}{Styles} draw on behalf of widgets
+ and encapsulate the look and feel of a GUI. Qt's built-in widgets use the QStyle
+ class to perform nearly all of their drawing, ensuring that they look exactly like
+ the equivalent native widgets.
+
+ \table
+ \row
+ \o \image windowsxp-tabwidget.png
+ \o \image plastique-tabwidget.png
+ \o \image macintosh-tabwidget.png
+ \endtable
+
+ \l{Qt Style Sheets} are a powerful mechanism that allows you to customize the
+ appearance of widgets, in addition to what is already possible by subclassing QStyle.
+*/
+
+/*!
+ \page widget-classes.html
+ \title Widget Classes
+
+ \contentspage Widgets and Layouts
+ \nextpage Layout Management
+
+ Below you find a list of all widget classes in Qt. You can also browse the
+ widget classes Qt provides in the various supported styles in the
+ \l{Qt Widget Gallery}.
+
+ \tableofcontents
+
+ \section1 Basic Widgets
+
+ These basic widgets (controls), such as buttons, comboboxes and scroll bars, are
+ designed for direct use.
+
+ \table
+ \row
+ \o \image windows-label.png
+ \o \image windowsvista-pushbutton.png
+ \o \image gtk-progressbar.png
+ \row
+ \o \image plastique-combobox.png
+ \o \image macintosh-radiobutton.png
+ \o \image cde-lineedit.png
+ \endtable
+
+ \annotatedlist basicwidgets
+
+ \section1 Advanced Widgets
+
+ Advanced GUI widgets such as tab widgets and progress bars provide more
+ complex user interface controls.
+
+ \table
+ \row
+ \o \image windowsxp-treeview.png
+ \o \image gtk-calendarwidget.png
+ \o \image qundoview.png
+ \endtable
+
+ \annotatedlist advanced
+
+ \table
+ \row
+ \o \image windowsvista-tabwidget.png
+ \o \image macintosh-groupbox.png
+ \endtable
+
+ \section1 Organizer Widgets
+
+ Classes like splitters, tab bars, button groups, etc are used to
+ organize and group GUI primitives into more complex applications or
+ dialogs.
+
+ \annotatedlist organizers
+
+ \section1 Abstract Widget Classes
+
+ Abstract widget classes usable through subclassing. They are generally
+ not usable in themselves, but provide functionality that can be used
+ by inheriting these classes.
+
+ \annotatedlist abstractwidgets
+*/
+
+/*!
+ \group advanced
+ \title Advanced Widgets
+*/
+
+/*!
+ \group abstractwidgets
+ \title Abstract Widget Classes
+*/
+
+/*!
+ \group basicwidgets
+ \title Basic Widgets
+*/
+
+/*!
+ \group organizers
+ \title Organizers
+*/
diff --git a/doc/src/qtcore.qdoc b/doc/src/windows-and-dialogs/dialogs.qdoc
index 7e23c5e..1c039d5 100644
--- a/doc/src/qtcore.qdoc
+++ b/doc/src/windows-and-dialogs/dialogs.qdoc
@@ -40,21 +40,37 @@
****************************************************************************/
/*!
- \module QtCore
- \title QtCore Module
- \contentspage Qt's Modules
- \previouspage Qt's Modules
- \nextpage QtGui
- \ingroup modules
+ \group standard-dialogs
+ \title Standard Dialog Classes
+*/
+
+/*!
+ \group dialog-classes
+ \title Classes for Building Dialogs
+*/
+
+/*!
+ \page dialogs.html
+ \title Dialog Windows
+ \brief An overview over dialog windows.
+
+ \previouspage The Application Main Window
+ \contentspage Application Windows and Dialogs
+ \nextpage Desktop Integration
- \keyword QtCore
+ Dialogs can be \e{modal}, in which case the user is required to provide
+ necessary information before work in the main window
+ can continue, or \e{modeless}. Modeless dialogs do not prevent the user from
+ interacting with any of the other windows in the application.
- \brief The QtCore module contains core non-GUI functionality.
+ Qt provides a set of ready-made dialogs for file, font, color-selection
+ and more.
- All other Qt modules rely on this module. To include the
- definitions of the module's classes, use the following directive:
+ \annotatedlist standard-dialogs
- \snippet doc/src/snippets/code/doc_src_qtcore.qdoc 0
+ Custom dialogs can be easily created by composing regular widgets into
+ a QDialog. These classes are specifically designed for building custom
+ dialogs:
- The QtCore module is part of all \l{Qt editions}.
+ \annotatedlist dialog-classes
*/
diff --git a/doc/src/windows-and-dialogs/mainwindow.qdoc b/doc/src/windows-and-dialogs/mainwindow.qdoc
new file mode 100644
index 0000000..e0134a4
--- /dev/null
+++ b/doc/src/windows-and-dialogs/mainwindow.qdoc
@@ -0,0 +1,279 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \group mainwindow-classes
+ \title Main Window and Related Classes
+*/
+
+/*!
+ \page application-windows.html
+ \title Application Windows and Dialogs
+ \ingroup frameworks-technologies
+
+ \nextpage The Application Main Window
+
+ A \l{Widgets}{widget} that is not embedded in a parent widget is called a window.
+ Usually, windows have a frame and a title bar, although it is also possible to create
+ windows without such decoration using suitable window flags). In Qt, QMainWindow
+ and the various subclasses of QDialog are the most common window types.
+
+ In applications, windows provide the screen space upon which the user
+ interface is built. Windows separate applications visually from each other
+ and usually provide a window decoration that allows the user to resize and
+ position the applications according to his preferences. Windows are typically
+ integrated into the desktop environment and to some degree managed by the
+ window management system that the desktop environment provides. For instance,
+ selected windows of an application are represented in the task bar.
+
+ \section1 Primary and Secondary Windows
+
+ Any QWidget that has no parent will become a window, and will on most platforms
+ be listed in the desktop's task bar. This is usually only wanted for one
+ window in the application, the \e{primary window}.
+
+ In addition, a QWidget that has a parent can become a window by setting the
+ \l{Qt::WindowType}{Qt::WA_Window} flag. Depending on the window management system
+ such \e{secondary windows} are usually stacked on top of their respective parent
+ window, and not have a task bar entry of their own.
+
+ The QMainWindow and the QDialog classes set the Qt::WA_Window flag in their
+ constructor, as they are designed to be used as windows and provide facilities
+ that are not wanted for child widgets.
+
+ \section1 Main Windows and Dialogs
+
+ \l{The Application Main Window} provides the framework for building the
+ application's main user interface, and are created by subclassing QMainWindow.
+ QMainWindow has its own layout to which you can add a \l{QMenuBar}{menu bar},
+ \l{QToolBar}{tool bars}, \l{QDockWidget}{dockable widgets} and a
+ \l{QStatusBar}{status bar}. The center area can be occupied by any kind of
+ QWidget.
+
+ \l{Dialog Windows} are used as secondary windows that present the user with
+ options and choices. Dialogs are created by subclassing QDialog and using
+ \l{Widgets and Layouts}{widgets and layouts} to implement the user interface.
+ In addition, Qt provides a number of ready-made standard dialogs that can be
+ used for standard tasks like file or font selection.
+
+ Both main windows and dialogs can be created with \QD, Qt's visual design tool.
+ Using \QD is a lot faster than hand-coding, and makes it easy to test different
+ design ideas. Creating designs visually and reading the code generated by
+ \l{uic} is a great way to learn Qt!
+
+ \keyword window geometry
+ \section1 Window Geometry
+
+ QWidget provides several functions that deal with a widget's
+ geometry. Some of these functions operate on the pure client area
+ (i.e. the window excluding the window frame), others include the
+ window frame. The differentiation is done in a way that covers the
+ most common usage transparently.
+
+ \list
+ \o \bold{Including the window frame:}
+ \l{QWidget::x()}{x()},
+ \l{QWidget::y()}{y()},
+ \l{QWidget::frameGeometry()}{frameGeometry()},
+ \l{QWidget::pos()}{pos()}, and
+ \l{QWidget::move()}{move()}.
+ \o \bold{Excluding the window frame:}
+ \l{QWidget::geometry()}{geometry()},
+ \l{QWidget::width()}{width()},
+ \l{QWidget::height()}{height()},
+ \l{QWidget::rect()}{rect()}, and
+ \l{QWidget::size()}{size()}.
+ \endlist
+
+ Note that the distinction only matters for decorated top-level
+ widgets. For all child widgets, the frame geometry is equal to the
+ widget's client geometry.
+
+ This diagram shows most of the functions in use:
+ \img geometry.png Geometry diagram
+
+ \section2 X11 Peculiarities
+
+ On X11, a window does not have a frame until the window manager
+ decorates it. This happens asynchronously at some point in time
+ after calling QWidget::show() and the first paint event the
+ window receives, or it does not happen at all. Bear in mind that
+ X11 is policy-free (others call it flexible). Thus you cannot
+ make any safe assumption about the decoration frame your window
+ will get. Basic rule: There's always one user who uses a window
+ manager that breaks your assumption, and who will complain to
+ you.
+
+ Furthermore, a toolkit cannot simply place windows on the screen. All
+ Qt can do is to send certain hints to the window manager. The window
+ manager, a separate process, may either obey, ignore or misunderstand
+ them. Due to the partially unclear Inter-Client Communication
+ Conventions Manual (ICCCM), window placement is handled quite
+ differently in existing window managers.
+
+ X11 provides no standard or easy way to get the frame geometry
+ once the window is decorated. Qt solves this problem with nifty
+ heuristics and clever code that works on a wide range of window
+ managers that exist today. Don't be surprised if you find one
+ where QWidget::frameGeometry() returns wrong results though.
+
+ Nor does X11 provide a way to maximize a window.
+ QWidget::showMaximized() has to emulate the feature. Its result
+ depends on the result of QWidget::frameGeometry() and the
+ capability of the window manager to do proper window placement,
+ neither of which can be guaranteed.
+*/
+
+/*!
+ \page mainwindow.html
+ \title The Application Main Window
+ \brief Everything you need for a typical modern main application window,
+ including menus, toolbars, workspace, etc.
+
+ \contentspage Application Windows and Dialogs
+ \nextpage Dialog Windows
+
+ \tableofcontents
+
+ \section1 Overview of the Main Window Classes
+
+ These classes provide everything you need for a typical modern main
+ application window, like the main window itself, menu and tool bars,
+ a status bar, etc.
+
+ \annotatedlist mainwindow-classes
+
+ \section1 The Main Window Classes
+
+ Qt 4 provides the following classes for managing main windows and
+ associated user interface components:
+
+ \list
+ \o QMainWindow remains the central class around which applications
+ can be built. The interface to this class has been simplified, and
+ much of the functionality previously included in this class is now
+ present in the companion QDockWidget and QToolBar classes.
+
+ \o QDockWidget provides a widget that can be used to create
+ detachable tool palettes or helper windows. Dock widgets keep track
+ of their own properties, and they can be moved, closed, and floated
+ as external windows.
+
+ \o QToolBar provides a generic toolbar widget that can hold a
+ number of different action-related widgets, such as buttons,
+ drop-down menus, comboboxes, and spin boxes. The emphasis on a
+ unified action model in Qt 4 means that toolbars cooperate well
+ with menus and keyboard shortcuts.
+ \endlist
+
+ \section1 Example Code
+
+ Using QMainWindow is straightforward. Generally, we subclass
+ QMainWindow and set up menus, toolbars, and dock widgets inside
+ the QMainWindow constructor.
+
+ To add a menu bar to the main window, we simply create the menus, and
+ add them to the main window's menu bar. Note that the
+ QMainWindow::menuBar() function will automatically create the menu bar
+ the first time it is called. You can also call
+ QMainWindow::setMenuBar() to use a custom menu bar in the main window.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 0
+ \dots
+ \snippet examples/mainwindows/menus/mainwindow.cpp 5
+ \dots
+
+ Once actions have been created, we can add them to the main window
+ components. To begin with, we add them to the pop-up menus:
+
+ \snippet examples/mainwindows/menus/mainwindow.cpp 10
+ \dots
+ \snippet examples/mainwindows/menus/mainwindow.cpp 11
+ \dots
+
+ The QToolBar and QMenu classes use Qt's action system to provide a
+ consistent API. In the above code, some existing actions were added to
+ the file menu with the QMenu::addAction() function. QToolBar also
+ provides this function, making it easy to reuse actions in different
+ parts of the main window. This avoids unnecessary duplication of work.
+
+ We create a toolbar as a child of the main window, and add the desired
+ actions to it:
+
+ \snippet examples/mainwindows/sdi/mainwindow.cpp 0
+ \dots
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 1
+
+ In this example, the toolbar is restricted to the top and bottom
+ toolbar areas of the main window, and is initially placed in the
+ top tool bar area. We can see that the actions specified by \c
+ newAct and \c openAct will be displayed both on the toolbar and in
+ the file menu.
+
+ QDockWidget is used in a similar way to QToolBar. We create a
+ dock widget as a child of the main window, and add widgets as children
+ of the dock widget:
+
+ \snippet doc/src/snippets/dockwidgets/mainwindow.cpp 0
+
+ In this example, the dock widget can only be placed in the left and
+ right dock areas, and it is initially placed in the left dock area.
+
+ The QMainWindow API allows the programmer to customize which dock
+ widget areas occupy the four corners of the dock widget area. If
+ required, the default can be changed with the
+ QMainWindow::setCorner() function:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 2
+
+ The following diagram shows the configuration produced by the above code.
+ Note that the left and right dock widgets will occupy the top and bottom
+ corners of the main window in this layout.
+
+ \image mainwindow-docks-example.png
+
+ Once all of the main window components have been set up, the central widget
+ is created and installed by using code similar to the following:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 3
+
+ The central widget can be any subclass of QWidget.
+*/
diff --git a/doc/src/qtxmlpatterns.qdoc b/doc/src/xml-processing/xml-patterns.qdoc
index 38a230e..f951712 100644
--- a/doc/src/qtxmlpatterns.qdoc
+++ b/doc/src/xml-processing/xml-patterns.qdoc
@@ -40,18 +40,15 @@
****************************************************************************/
/*!
- \module QtXmlPatterns
- \title QtXmlPatterns Module
- \since 4.4
- \contentspage Qt's Modules
- \previouspage QtXml
- \nextpage Phonon Module
- \ingroup modules
- \ingroup scripting
+ \page xmlprocessing.html
+ \title Using XML Technologies
+
+ \previouspage Working with the DOM Tree
+ \contentspage XML Processing
\keyword Patternist
- \brief An overview of Qt's support for using XQuery and XPath in
+ \brief An overview of Qt's support for using XML technologies in
Qt programs.
\tableofcontents
@@ -134,18 +131,6 @@
\section2 Running the query engine from your Qt application
- To access the QtXmlPatterns C++ API from your Qt application,
- include the QtXmlPatterns classes at compile time:
-
- \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 0
-
- Link the compiled application with the QtXmlPatterns module by
- adding the following line to the
- \l{qmake-project-files.html#declaring-qt-libraries} {QT line} in
- your qmake \c{.pro} file:
-
- \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 1
-
If we save the example XQuery shown above in a text file (e.g.
\c{myquery.xq}), we can run it from a Qt application using a
standard QtXmlPatterns code sequence:
@@ -910,55 +895,6 @@
URIs are first passed to QAbstractUriResolver. Check
QXmlQuery::setUriResolver() for possible rewrites.
-
- \section1 License Information
-
- The XML Schema implementation provided by this module contains the \c xml.xsd file
- (located in \c{src/xmlpatterns/schema/schemas}) which is licensed under the terms
- given below. This module is always built with XML Schema support enabled.
-
- \legalese
- W3C\copyright SOFTWARE NOTICE AND LICENSE
-
- This license came from: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
-
- This work (and included software, documentation such as READMEs, or other
- related items) is being provided by the copyright holders under the following
- license. By obtaining, using and/or copying this work, you (the licensee)
- agree that you have read, understood, and will comply with the following
- terms and conditions.
-
- Permission to copy, modify, and distribute this software and its
- documentation, with or without modification, for any purpose and without
- fee or royalty is hereby granted, provided that you include the following on
- ALL copies of the software and documentation or portions thereof, including
- modifications:
-
- 1. The full text of this NOTICE in a location viewable to users of the
- redistributed or derivative work.\br
- 2. Any pre-existing intellectual property disclaimers, notices, or terms
- and conditions. If none exist, the W3C Software Short Notice should be
- included (hypertext is preferred, text is permitted)
- within the body of any redistributed or derivative code.\br
- 3. Notice of any changes or modifications to the files, including the date
- changes were made. (We recommend you provide URIs to the location from
- which the code is derived.)
-
- THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
- MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
- LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
- PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
- ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
- COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
- CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
- DOCUMENTATION.
-
- The name and trademarks of copyright holders may NOT be used in
- advertising or publicity pertaining to the software without specific, written
- prior permission. Title to copyright in this software and any associated
- documentation will at all times remain with copyright holders.
- \endlegalese
*/
/*!
diff --git a/doc/src/qtxml.qdoc b/doc/src/xml-processing/xml-processing.qdoc
index 4df2589..6e48515 100644
--- a/doc/src/qtxml.qdoc
+++ b/doc/src/xml-processing/xml-processing.qdoc
@@ -40,75 +40,199 @@
****************************************************************************/
/*!
- \module QtXml
- \title QtXml Module
- \contentspage Qt's Modules
- \previouspage QtSvg
- \nextpage QtXmlPatterns
- \ingroup modules
+ \group xml-tools
+ \title XML Classes
- \brief The QtXml module provides a stream reader and writer for
- XML documents, and C++ implementations of SAX and DOM.
+ \brief Classes that support XML, via, for example DOM and SAX.
- SAX is an event-based standard interface for XML parsers.
- The Qt interface follows the design of the SAX2 Java implementation.
- Its naming scheme was adapted to fit the Qt naming conventions.
- Details on SAX2 can be found at \l{http://www.saxproject.org}.
-
- Support for SAX2 filters and the reader factory are under
- development. The Qt implementation does not include the SAX1
- compatibility classes present in the Java interface.
- For an introduction to Qt's SAX2 classes, see \l{The Qt SAX2 Classes}.
-
- DOM Level 2 is a W3C Recommendation for XML interfaces that maps the
- constituents of an XML document to a tree structure. The specification
- of DOM Level 2 can be found at \l{http://www.w3.org/DOM/}.
- For more information about the DOM classes in Qt is provided, see
- \l{The Qt DOM Classes}.
+ These classes are relevant to XML users.
+
+ \generatelist{related}
+*/
- Since version 4.3, Qt provides two new classes for reading and
- writing XML: QXmlStreamReader and QXmlStreamWriter.
+/*!
+ \page xml-processing.html
+ \title XML Processing
+ \brief An Overview of the XML processing facilities in Qt.
In addition to core XML support, classes for higher level querying
- and manipulation of XML data, are provided by the QtXmlPatterns
+ and manipulation of XML data are provided by the QtXmlPatterns
module. In the QtSvg module, the QSvgRenderer and QSvgGenerator
classes can read and write a subset of SVG, an XML-based file
format. Qt also provides helper functions that may be useful to
those working with XML and XHTML: see Qt::escape() and
Qt::convertFromPlainText().
- Further XML support is provided by the \l{Qt Solutions} group who
- provide, for example, classes that support SOAP and MML with the
- Qt XML classes.
+ \section1 Topics:
- This module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
+ \list
+ \o \l {Classes for XML Processing}
+ \o \l {An Introduction to Namespaces}
+ \o \l {XML Streaming}
+ \o \l {The SAX Interface}
+ \o \l {Working with the DOM Tree}
+ \o \l {Using XML Technologies}{XQuery/XPath and XML Schema}
+ \list
+ \o \l{A Short Path to XQuery}
+ \endlist
+ \endlist
+
+ \section1 Classes for XML Processing
- Topics:
+ These classes are relevant to XML users.
- \tableofcontents
+ \annotatedlist xml-tools
+*/
- \section1 Configuring the Build Process
+/*!
+ \page xml-namespaces.html
+ \title An Introduction to Namespaces
+ \target namespaces
- Applications that use Qt's XML classes need to be configured to
- be built against the QtXml module. The following declaration in a
- \c qmake project file ensures that an application is compiled and
- linked appropriately:
+ \contentspage XML Processing
+ \nextpage XML Streaming
- To include the definitions of the module's classes, use the
- following directive:
+ Parts of the Qt XML module documentation assume that you are familiar
+ with XML namespaces. Here we present a brief introduction; skip to
+ \link #namespacesConventions Qt XML documentation conventions \endlink
+ if you already know this material.
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 0
+ Namespaces are a concept introduced into XML to allow a more modular
+ design. With their help data processing software can easily resolve
+ naming conflicts in XML documents.
- To link against the module, add this line to your \l qmake \c
- .pro file:
+ Consider the following example:
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 1
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 6
- This line is necessary because only the QtCore and QtGui modules
- are used in the default build process.
+ Here we find three different uses of the name \e title. If you wish to
+ process this document you will encounter problems because each of the
+ \e titles should be displayed in a different manner -- even though
+ they have the same name.
- \section1 The QtXml Stream Classes
+ The solution would be to have some means of identifying the first
+ occurrence of \e title as the title of a book, i.e. to use the \e
+ title element of a book namespace to distinguish it from, for example,
+ the chapter title, e.g.:
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 7
+
+ \e book in this case is a \e prefix denoting the namespace.
+
+ Before we can apply a namespace to element or attribute names we must
+ declare it.
+
+ Namespaces are URIs like \e http://www.example.com/fnord/book/. This
+ does not mean that data must be available at this address; the URI is
+ simply used to provide a unique name.
+
+ We declare namespaces in the same way as attributes; strictly speaking
+ they \e are attributes. To make for example \e
+ http://www.example.com/fnord/ the document's default XML namespace \e
+ xmlns we write
+
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 8
+
+ To distinguish the \e http://www.example.com/fnord/book/ namespace from
+ the default, we must supply it with a prefix:
+
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 9
+
+ A namespace that is declared like this can be applied to element and
+ attribute names by prepending the appropriate prefix and a ":"
+ delimiter. We have already seen this with the \e book:title element.
+
+ Element names without a prefix belong to the default namespace. This
+ rule does not apply to attributes: an attribute without a prefix does
+ not belong to any of the declared XML namespaces at all. Attributes
+ always belong to the "traditional" namespace of the element in which
+ they appear. A "traditional" namespace is not an XML namespace, it
+ simply means that all attribute names belonging to one element must be
+ different. Later we will see how to assign an XML namespace to an
+ attribute.
+
+ Due to the fact that attributes without prefixes are not in any XML
+ namespace there is no collision between the attribute \e title (that
+ belongs to the \e author element) and for example the \e title element
+ within a \e chapter.
+
+ Let's clarify this with an example:
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 10
+
+ Within the \e document element we have two namespaces declared. The
+ default namespace \e http://www.example.com/fnord/ applies to the \e
+ book element, the \e chapter element, the appropriate \e title element
+ and of course to \e document itself.
+
+ The \e book:author and \e book:title elements belong to the namespace
+ with the URI \e http://www.example.com/fnord/book/.
+
+ The two \e book:author attributes \e title and \e name have no XML
+ namespace assigned. They are only members of the "traditional"
+ namespace of the element \e book:author, meaning that for example two
+ \e title attributes in \e book:author are forbidden.
+
+ In the above example we circumvent the last rule by adding a \e title
+ attribute from the \e http://www.example.com/fnord/ namespace to \e
+ book:author: the \e fnord:title comes from the namespace with the
+ prefix \e fnord that is declared in the \e book:author element.
+
+ Clearly the \e fnord namespace has the same namespace URI as the
+ default namespace. So why didn't we simply use the default namespace
+ we'd already declared? The answer is quite complex:
+ \list
+ \o attributes without a prefix don't belong to any XML namespace at
+ all, not even to the default namespace;
+ \o additionally omitting the prefix would lead to a \e title-title clash;
+ \o writing it as \e xmlns:title would declare a new namespace with the
+ prefix \e title instead of applying the default \e xmlns namespace.
+ \endlist
+
+ With the Qt XML classes elements and attributes can be accessed in two
+ ways: either by refering to their qualified names consisting of the
+ namespace prefix and the "real" name (or \e local name) or by the
+ combination of local name and namespace URI.
+
+ More information on XML namespaces can be found at
+ \l http://www.w3.org/TR/REC-xml-names/.
+
+ \target namespacesConventions
+ \section1 Conventions Used in the Qt XML Documentation
+
+ The following terms are used to distinguish the parts of names within
+ the context of namespaces:
+ \list
+ \o The \e {qualified name}
+ is the name as it appears in the document. (In the above example \e
+ book:title is a qualified name.)
+ \o A \e {namespace prefix} in a qualified name
+ is the part to the left of the ":". (\e book is the namespace prefix in
+ \e book:title.)
+ \o The \e {local part} of a name (also refered to as the \e {local
+ name}) appears to the right of the ":". (Thus \e title is the
+ local part of \e book:title.)
+ \o The \e {namespace URI} ("Uniform Resource Identifier") is a unique
+ identifier for a namespace. It looks like a URL
+ (e.g. \e http://www.example.com/fnord/ ) but does not require
+ data to be accessible by the given protocol at the named address.
+ \endlist
+
+ Elements without a ":" (like \e chapter in the example) do not have a
+ namespace prefix. In this case the local part and the qualified name
+ are identical (i.e. \e chapter).
+
+ \sa {DOM Bookmarks Example}, {SAX Bookmarks Example}
+*/
+
+/*!
+ \page xml-streaming.html
+ \title XML Streaming
+
+ \previouspage An Introduction to Namespaces
+ \contentspage XML Processing
+ \nextpage The SAX Interface
+
+ Since version 4.3, Qt provides two new classes for reading and
+ writing XML: QXmlStreamReader and QXmlStreamWriter.
The QXmlStreamReader and QXmlStreamWriter are two new classes provided
in Qt 4.3 and later. A stream reader reports an XML document as a stream
@@ -176,10 +300,26 @@
functions of QXmlStreamWriter mentioned above:
\snippet examples/xml/streambookmarks/xbelwriter.cpp 1
+*/
- \section1 The Qt SAX2 Classes
+/*!
+ \page xml-sax.html
+ \title The SAX interface
+
+ \previouspage XML Streaming
+ \contentspage XML Processing
+ \nextpage Working with the DOM Tree
+
+ SAX is an event-based standard interface for XML parsers.
+ The Qt interface follows the design of the SAX2 Java implementation.
+ Its naming scheme was adapted to fit the Qt naming conventions.
+ Details on SAX2 can be found at \l{http://www.saxproject.org}.
+
+ Support for SAX2 filters and the reader factory are under
+ development. The Qt implementation does not include the SAX1
+ compatibility classes present in the Java interface.
- \section2 Introduction to SAX2
+ \section1 Introduction to SAX2
The SAX2 interface is an event-driven mechanism to provide the user with
document information. An "event" in this context means something
@@ -202,10 +342,10 @@
Whilst this is a fast and simple approach to read XML documents,
manipulation is difficult because data is not stored, simply handled
- and discarded serially. The \link #dom DOM interface
- \endlink reads in and stores the whole document in a tree structure;
+ and discarded serially. The \l{Working with the DOM Tree}{DOM interface}
+ reads in and stores the whole document in a tree structure;
this takes more memory, but makes it easier to manipulate the
- document's structure..
+ document's structure.
The Qt XML module provides an abstract class, \l QXmlReader, that
defines the interface for potential SAX2 readers. Qt includes a reader
@@ -257,7 +397,7 @@
QXmlDefaultHandler to read an XML bookmark file (XBEL) and
how to generate XML by hand.
- \section2 SAX2 Features
+ \section1 SAX2 Features
The behavior of an XML reader depends on its support for certain
optional features. For example, a reader may have the feature "report
@@ -297,7 +437,7 @@
\l QXmlSimpleReader is not validating, so it
does not support \e http://xml.org/sax/features/validation.
- \section2 Namespace Support via Features
+ \section1 Namespace Support via Features
As we have seen in the previous section, we can configure the
behavior of the reader when it comes to namespace
@@ -352,7 +492,7 @@
note that the combination of both features set to
false is illegal.
- \section3 Summary
+ \section2 Summary
\l QXmlSimpleReader implements the following behavior:
@@ -370,7 +510,7 @@
The behavior of the entries marked with an asterisk (*) is not specified by SAX.
- \section2 Properties
+ \section1 Properties
Properties are a more general concept. They have a unique name,
represented as an URI, but their value is \c void*. Thus nearly
@@ -390,13 +530,23 @@
To set or query properties the following functions are provided: \l
QXmlReader::setProperty(), \l QXmlReader::property() and \l
QXmlReader::hasProperty().
+*/
-
+/*!
+ \page xml-dom.tml
+ \title Working with the DOM Tree
\target dom
- \section1 The Qt DOM Classes
+
+ \previouspage The SAX Interface
+ \contentspage XML Processing
+ \nextpage {Using XML Technologies}{XQuery/XPath and XML Schema}
+
+ DOM Level 2 is a W3C Recommendation for XML interfaces that maps the
+ constituents of an XML document to a tree structure. The specification
+ of DOM Level 2 can be found at \l{http://www.w3.org/DOM/}.
\target domIntro
- \section2 Introduction to DOM
+ \section1 Introduction to DOM
DOM provides an interface to access and change the content and
structure of an XML file. It makes a hierarchical view of the document
@@ -478,138 +628,4 @@
You might also want to take a look at the \l{DOM Bookmarks example},
which illustrates how to read and write an XML bookmark file (XBEL)
using DOM.
-
- \target namespaces
- \section1 An Introduction to Namespaces
-
- Parts of the Qt XML module documentation assume that you are familiar
- with XML namespaces. Here we present a brief introduction; skip to
- \link #namespacesConventions Qt XML documentation conventions \endlink
- if you already know this material.
-
- Namespaces are a concept introduced into XML to allow a more modular
- design. With their help data processing software can easily resolve
- naming conflicts in XML documents.
-
- Consider the following example:
-
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 6
-
- Here we find three different uses of the name \e title. If you wish to
- process this document you will encounter problems because each of the
- \e titles should be displayed in a different manner -- even though
- they have the same name.
-
- The solution would be to have some means of identifying the first
- occurrence of \e title as the title of a book, i.e. to use the \e
- title element of a book namespace to distinguish it from, for example,
- the chapter title, e.g.:
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 7
-
- \e book in this case is a \e prefix denoting the namespace.
-
- Before we can apply a namespace to element or attribute names we must
- declare it.
-
- Namespaces are URIs like \e http://example.com/fnord/book/. This
- does not mean that data must be available at this address; the URI is
- simply used to provide a unique name.
-
- We declare namespaces in the same way as attributes; strictly speaking
- they \e are attributes. To make for example \e
- http://example.com/fnord/ the document's default XML namespace \e
- xmlns we write
-
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 8
-
- To distinguish the \e http://example.com/fnord/book/ namespace from
- the default, we must supply it with a prefix:
-
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 9
-
- A namespace that is declared like this can be applied to element and
- attribute names by prepending the appropriate prefix and a ":"
- delimiter. We have already seen this with the \e book:title element.
-
- Element names without a prefix belong to the default namespace. This
- rule does not apply to attributes: an attribute without a prefix does
- not belong to any of the declared XML namespaces at all. Attributes
- always belong to the "traditional" namespace of the element in which
- they appear. A "traditional" namespace is not an XML namespace, it
- simply means that all attribute names belonging to one element must be
- different. Later we will see how to assign an XML namespace to an
- attribute.
-
- Due to the fact that attributes without prefixes are not in any XML
- namespace there is no collision between the attribute \e title (that
- belongs to the \e author element) and for example the \e title element
- within a \e chapter.
-
- Let's clarify this with an example:
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 10
-
- Within the \e document element we have two namespaces declared. The
- default namespace \e http://example.com/fnord/ applies to the \e
- book element, the \e chapter element, the appropriate \e title element
- and of course to \e document itself.
-
- The \e book:author and \e book:title elements belong to the namespace
- with the URI \e http://example.com/fnord/book/.
-
- The two \e book:author attributes \e title and \e name have no XML
- namespace assigned. They are only members of the "traditional"
- namespace of the element \e book:author, meaning that for example two
- \e title attributes in \e book:author are forbidden.
-
- In the above example we circumvent the last rule by adding a \e title
- attribute from the \e http://example.com/fnord/ namespace to \e
- book:author: the \e fnord:title comes from the namespace with the
- prefix \e fnord that is declared in the \e book:author element.
-
- Clearly the \e fnord namespace has the same namespace URI as the
- default namespace. So why didn't we simply use the default namespace
- we'd already declared? The answer is quite complex:
- \list
- \o attributes without a prefix don't belong to any XML namespace at
- all, not even to the default namespace;
- \o additionally omitting the prefix would lead to a \e title-title clash;
- \o writing it as \e xmlns:title would declare a new namespace with the
- prefix \e title instead of applying the default \e xmlns namespace.
- \endlist
-
- With the Qt XML classes elements and attributes can be accessed in two
- ways: either by refering to their qualified names consisting of the
- namespace prefix and the "real" name (or \e local name) or by the
- combination of local name and namespace URI.
-
- More information on XML namespaces can be found at
- \l http://www.w3.org/TR/REC-xml-names/.
-
-
- \target namespacesConventions
- \section2 Conventions Used in the Qt XML Documentation
-
- The following terms are used to distinguish the parts of names within
- the context of namespaces:
- \list
- \o The \e {qualified name}
- is the name as it appears in the document. (In the above example \e
- book:title is a qualified name.)
- \o A \e {namespace prefix} in a qualified name
- is the part to the left of the ":". (\e book is the namespace prefix in
- \e book:title.)
- \o The \e {local part} of a name (also refered to as the \e {local
- name}) appears to the right of the ":". (Thus \e title is the
- local part of \e book:title.)
- \o The \e {namespace URI} ("Uniform Resource Identifier") is a unique
- identifier for a namespace. It looks like a URL
- (e.g. \e http://example.com/fnord/ ) but does not require
- data to be accessible by the given protocol at the named address.
- \endlist
-
- Elements without a ":" (like \e chapter in the example) do not have a
- namespace prefix. In this case the local part and the qualified name
- are identical (i.e. \e chapter).
-
- \sa {DOM Bookmarks Example}, {SAX Bookmarks Example}
*/
diff --git a/doc/src/xquery-introduction.qdoc b/doc/src/xml-processing/xquery-introduction.qdoc
index 02e4f47..d944b09 100644
--- a/doc/src/xquery-introduction.qdoc
+++ b/doc/src/xml-processing/xquery-introduction.qdoc
@@ -42,9 +42,8 @@
/*!
\page xquery-introduction.html
\title A Short Path to XQuery
- \ingroup scripting
- \startpage index.html QtReference Documentation
+ \startpage Using XML Technologies
\target XQuery-introduction
XQuery is a language for querying XML data or non-XML data that can be
diff --git a/examples/network/googlesuggest/googlesuggest.cpp b/examples/network/googlesuggest/googlesuggest.cpp
index ada0edf..4142511 100644
--- a/examples/network/googlesuggest/googlesuggest.cpp
+++ b/examples/network/googlesuggest/googlesuggest.cpp
@@ -134,7 +134,6 @@ bool GSuggestCompletion::eventFilter(QObject *obj, QEvent *ev)
void GSuggestCompletion::showCompletion(const QStringList &choices, const QStringList &hits)
{
-
if (choices.isEmpty() || choices.count() != hits.count())
return;
@@ -204,16 +203,16 @@ void GSuggestCompletion::handleNetworkData(QNetworkReply *networkReply)
QXmlStreamReader xml(response);
while (!xml.atEnd()) {
xml.readNext();
- if (xml.tokenType() == QXmlStreamReader::StartElement)
+ if (xml.isStartElement()) {
if (xml.name() == "suggestion") {
QStringRef str = xml.attributes().value("data");
choices << str.toString();
}
- if (xml.tokenType() == QXmlStreamReader::StartElement)
- if (xml.name() == "num_queries") {
+ else if (xml.name() == "num_queries") {
QStringRef str = xml.attributes().value("int");
hits << str.toString();
}
+ }
}
showCompletion(choices, hits);
diff --git a/examples/xml/streambookmarks/xbelreader.cpp b/examples/xml/streambookmarks/xbelreader.cpp
index 47c8c3d..4472f8a 100644
--- a/examples/xml/streambookmarks/xbelreader.cpp
+++ b/examples/xml/streambookmarks/xbelreader.cpp
@@ -62,15 +62,11 @@ bool XbelReader::read(QIODevice *device)
{
setDevice(device);
- while (!atEnd()) {
- readNext();
-
- if (isStartElement()) {
- if (name() == "xbel" && attributes().value("version") == "1.0")
- readXBEL();
- else
- raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
- }
+ if (readNextStartElement()) {
+ if (name() == "xbel" && attributes().value("version") == "1.0")
+ readXBEL();
+ else
+ raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
}
return !error();
@@ -80,15 +76,7 @@ bool XbelReader::read(QIODevice *device)
//! [2]
void XbelReader::readUnknownElement()
{
- Q_ASSERT(isStartElement());
-
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement())
+ while (readNextStartElement()) {
readUnknownElement();
}
}
@@ -99,22 +87,15 @@ void XbelReader::readXBEL()
{
Q_ASSERT(isStartElement() && name() == "xbel");
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == "folder")
- readFolder(0);
- else if (name() == "bookmark")
- readBookmark(0);
- else if (name() == "separator")
- readSeparator(0);
- else
- readUnknownElement();
- }
+ while (readNextStartElement()) {
+ if (name() == "folder")
+ readFolder(0);
+ else if (name() == "bookmark")
+ readBookmark(0);
+ else if (name() == "separator")
+ readSeparator(0);
+ else
+ readUnknownElement();
}
}
//! [3]
@@ -132,10 +113,12 @@ void XbelReader::readTitle(QTreeWidgetItem *item)
//! [5]
void XbelReader::readSeparator(QTreeWidgetItem *item)
{
+ Q_ASSERT(isStartElement() && name() == "separator");
+
QTreeWidgetItem *separator = createChildItem(item);
separator->setFlags(item->flags() & ~Qt::ItemIsSelectable);
separator->setText(0, QString(30, 0xB7));
- readElementText();
+ skipCurrentElement();
}
//! [5]
@@ -147,24 +130,17 @@ void XbelReader::readFolder(QTreeWidgetItem *item)
bool folded = (attributes().value("folded") != "no");
treeWidget->setItemExpanded(folder, !folded);
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == "title")
- readTitle(folder);
- else if (name() == "folder")
- readFolder(folder);
- else if (name() == "bookmark")
- readBookmark(folder);
- else if (name() == "separator")
- readSeparator(folder);
- else
- readUnknownElement();
- }
+ while (readNextStartElement()) {
+ if (name() == "title")
+ readTitle(folder);
+ else if (name() == "folder")
+ readFolder(folder);
+ else if (name() == "bookmark")
+ readBookmark(folder);
+ else if (name() == "separator")
+ readSeparator(folder);
+ else
+ skipCurrentElement();
}
}
@@ -177,18 +153,12 @@ void XbelReader::readBookmark(QTreeWidgetItem *item)
bookmark->setIcon(0, bookmarkIcon);
bookmark->setText(0, QObject::tr("Unknown title"));
bookmark->setText(1, attributes().value("href").toString());
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == "title")
- readTitle(bookmark);
- else
- readUnknownElement();
- }
+
+ while (readNextStartElement()) {
+ if (name() == "title")
+ readTitle(bookmark);
+ else
+ skipCurrentElement();
}
}
diff --git a/mkspecs/features/win32/rtti_off.prf b/mkspecs/features/win32/rtti_off.prf
index 8f175de..b520bfa 100644
--- a/mkspecs/features/win32/rtti_off.prf
+++ b/mkspecs/features/win32/rtti_off.prf
@@ -1,3 +1,4 @@
CONFIG -= rtti
QMAKE_CFLAGS += $$QMAKE_CFLAGS_RTTI_OFF
QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RTTI_OFF
+DEFINES += QT_NO_DYNAMIC_CAST \ No newline at end of file
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
index dcdc805..57d9fb2 100644
--- a/qmake/Makefile.unix
+++ b/qmake/Makefile.unix
@@ -13,7 +13,7 @@ OBJS=project.o property.o main.o makefile.o unixmake2.o unixmake.o \
#qt code
QOBJS=qtextcodec.o qutfcodec.o qstring.o qtextstream.o qiodevice.o qmalloc.o qglobal.o \
- qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlistdata.o qfile.o \
+ qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfile.o \
qfsfileengine_unix.o qfsfileengine_iterator_unix.o qfsfileengine.o \
qfsfileengine_iterator.o qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o \
qfileinfo.o qdatetime.o qstringlist.o qabstractfileengine.o qtemporaryfile.o \
@@ -53,7 +53,7 @@ DEPEND_SRC=project.cpp property.cpp meta.cpp main.cpp generators/makefile.cpp ge
$(SOURCE_PATH)/src/corelib/io/qdatastream.cpp $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp \
$(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp \
$(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator_unix.cpp $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp \
- $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp $(SOURCE_PATH)/src/corelib/tools/qlistdata.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp $(SOURCE_PATH)/src/corelib/tools/qlist.cpp \
$(SOURCE_PATH)/src/corelib/tools/qvector.cpp $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp \
$(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp \
$(SOURCE_PATH)/src/corelib/io/qdir.cpp $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp \
@@ -179,8 +179,8 @@ qdatastream.o: $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp
qbuffer.o: $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
-qlistdata.o: $(SOURCE_PATH)/src/corelib/tools/qlistdata.cpp
- $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlistdata.cpp
+qlist.o: $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
qfile.o: $(SOURCE_PATH)/src/corelib/io/qfile.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfile.cpp
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index 6340814..5ade431 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -102,7 +102,7 @@ QTOBJS= \
qglobal.obj \
qhash.obj \
qiodevice.obj \
- qlistdata.obj \
+ qlist.obj \
qlinkedlist.obj \
qlocale.obj \
qmalloc.obj \
@@ -191,7 +191,7 @@ clean::
-del qglobal.obj
-del qhash.obj
-del qiodevice.obj
- -del qlistdata.obj
+ -del qlist.obj
-del qlocale.obj
-del qmalloc.obj
-del qmap.obj
@@ -359,8 +359,8 @@ quuid.obj: $(SOURCE_PATH)\src\corelib\plugin\quuid.cpp
qbuffer.obj: $(SOURCE_PATH)\src\corelib\io\qbuffer.cpp
$(CXX) $(CXXFLAGS) $(SOURCE_PATH)\src\corelib\io\qbuffer.cpp
-qlistdata.obj: $(SOURCE_PATH)\src\corelib\tools\qlistdata.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)\src\corelib\tools\qlistdata.cpp
+qlist.obj: $(SOURCE_PATH)\src\corelib\tools\qlist.cpp
+ $(CXX) $(CXXFLAGS) $(SOURCE_PATH)\src\corelib\tools\qlist.cpp
qlinkedlist.obj: $(SOURCE_PATH)\src\corelib\tools\qlinkedlist.cpp
$(CXX) $(CXXFLAGS) $(SOURCE_PATH)\src\corelib\tools\qlinkedlist.cpp
diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++
index 9439f40..d7ee81d 100644
--- a/qmake/Makefile.win32-g++
+++ b/qmake/Makefile.win32-g++
@@ -65,7 +65,7 @@ QTOBJS= \
qhash.o \
qiodevice.o \
qlibraryinfo.o \
- qlistdata.o \
+ qlist.o \
qlinkedlist.o \
qlocale.o \
qmalloc.o \
@@ -209,8 +209,8 @@ quuid.o: $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp
qbuffer.o: $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
$(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
-qlistdata.o: $(SOURCE_PATH)/src/corelib/tools/qlistdata.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlistdata.cpp
+qlist.o: $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
+ $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
qlinkedlist.o: $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp
$(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp
diff --git a/qmake/Makefile.win32-g++-sh b/qmake/Makefile.win32-g++-sh
index a0e981e..07302ea 100644
--- a/qmake/Makefile.win32-g++-sh
+++ b/qmake/Makefile.win32-g++-sh
@@ -65,7 +65,7 @@ QTOBJS= \
qhash.o \
qiodevice.o \
qlibraryinfo.o \
- qlistdata.o \
+ qlist.o \
qlinkedlist.o \
qlocale.o \
qmalloc.o \
@@ -208,8 +208,8 @@ quuid.o: $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp
qbuffer.o: $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
$(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp
-qlistdata.o: $(SOURCE_PATH)/src/corelib/tools/qlistdata.cpp
- $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlistdata.cpp
+qlist.o: $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
+ $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlist.cpp
qlinkedlist.o: $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp
$(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 2b0ce28..7c4c70f 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -623,7 +623,7 @@ void VcprojGenerator::writeSubDirs(QTextStream &t)
}
// Add all unknown libs to the deps
- QStringList where("QMAKE_LIBS");
+ QStringList where = QStringList() << "QMAKE_LIBS" << "QMAKE_LIBS_PRIVATE";
if(!tmp_proj.isEmpty("QMAKE_INTERNAL_PRL_LIBS"))
where = tmp_proj.variables()["QMAKE_INTERNAL_PRL_LIBS"];
for(QStringList::iterator wit = where.begin();
@@ -1556,6 +1556,7 @@ void VcprojGenerator::initOld()
}
project->values("QMAKE_LIBS") += escapeFilePaths(project->values("LIBS"));
+ project->values("QMAKE_LIBS_PRIVATE") += escapeFilePaths(project->values("LIBS_PRIVATE"));
// Get filename w/o extension -----------------------------------
QString msvcproj_project = "";
@@ -1599,6 +1600,7 @@ void VcprojGenerator::initOld()
// $$QMAKE.. -> $$MSVCPROJ.. -------------------------------------
project->values("MSVCPROJ_LIBS") += project->values("QMAKE_LIBS");
+ project->values("MSVCPROJ_LIBS") += project->values("QMAKE_LIBS_PRIVATE");
project->values("MSVCPROJ_LFLAGS") += project->values("QMAKE_LFLAGS");
if(!project->values("QMAKE_LIBDIR").isEmpty()) {
QStringList strl = project->values("QMAKE_LIBDIR");
diff --git a/qmake/qmake.pri b/qmake/qmake.pri
index 1f9243b..67fc8f2 100644
--- a/qmake/qmake.pri
+++ b/qmake/qmake.pri
@@ -46,7 +46,7 @@ bootstrap { #Qt code
qnumeric.cpp \
qhash.cpp \
qiodevice.cpp \
- qlistdata.cpp \
+ qlist.cpp \
qlinkedlist.cpp \
qlocale.cpp \
qmalloc.cpp \
diff --git a/src/3rdparty/easing/legal.qdoc b/src/3rdparty/easing/legal.qdoc
index 25f67e1..466ff15 100644
--- a/src/3rdparty/easing/legal.qdoc
+++ b/src/3rdparty/easing/legal.qdoc
@@ -1,7 +1,7 @@
/*!
\page legal-easing.html
\title Easing Equations by Robert Penner
-\ingroup animation
+\ingroup licensing
\legalese
\code
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp
index d51e4e6..4e8fd30 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp
@@ -33,6 +33,8 @@ using namespace WebCore;
\since 4.5
\brief The QWebDatabase class provides access to HTML 5 databases created with JavaScript.
+ \inmodule QtWebKit
+
The upcoming HTML 5 standard includes support for SQL databases that web sites can create and
access on a local computer through JavaScript. QWebDatabase is the C++ interface to these
databases.
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp
index 3ef969e..57c8b0d 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp
@@ -55,7 +55,7 @@ public:
\since 4.6
\brief The QWebElement class provides convenient access to DOM elements in
a QWebFrame.
-
+ \inmodule QtWebKit
A QWebElement object allows easy access to the document model, represented
by a tree-like structure of DOM elements. The root of the tree is called
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
index 23cb473..f2fe108 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
@@ -268,6 +268,8 @@ void QWebFramePrivate::renderPrivate(QPainter *painter, const QRegion &clip)
\since 4.4
\brief The QWebFrame class represents a frame in a web page.
+ \inmodule QtWebKit
+
QWebFrame represents a frame inside a web page. Each QWebPage
object contains at least one frame, the main frame, obtained using
QWebPage::mainFrame(). Additional frames will be created for HTML
@@ -1360,6 +1362,8 @@ QWebFrame* QWebFramePrivate::kit(WebCore::Frame* coreFrame)
\brief The QWebHitTestResult class provides information about the web
page content after a hit test.
+ \inmodule QtWebKit
+
QWebHitTestResult is returned by QWebFrame::hitTestContent() to provide
information about the content of the web page at the specified position.
*/
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp
index 1c1c72a..b11ae56 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp
@@ -35,6 +35,8 @@
\since 4.4
\brief The QWebHistoryItem class represents one item in the history of a QWebPage
+ \inmodule QtWebKit
+
Each QWebHistoryItem instance represents an entry in the history stack of a Web page,
containing information about the page, its location, and when it was last visited.
@@ -201,6 +203,8 @@ bool QWebHistoryItem::isValid() const
\since 4.4
\brief The QWebHistory class represents the history of a QWebPage
+ \inmodule QtWebKit
+
Each QWebPage instance contains a history of visited pages that can be accessed
by QWebPage::history(). QWebHistory represents this history and makes it possible
to navigate it.
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp
index 87d52ce..80567d1 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp
@@ -81,6 +81,8 @@ QWebHistoryInterface* QWebHistoryInterface::defaultInterface()
\since 4.4
\brief The QWebHistoryInterface class provides an interface to implement link history.
+ \inmodule QtWebKit
+
The QWebHistoryInterface is an interface that can be used to
implement link history. It contains two pure virtual methods that
are called by the WebKit engine. addHistoryEntry() is used to add
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
index 613a72f..7860cec 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
@@ -1224,6 +1224,8 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const
\since 4.4
\brief The QWebPage class provides an object to view and edit web documents.
+ \inmodule QtWebKit
+
QWebPage holds a main frame responsible for web content, settings, the history
of navigated links and actions. This class can be used, together with QWebFrame,
to provide functionality like QWebView in a widget-less environment.
@@ -2307,6 +2309,8 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos)
\since 4.4
\brief The ExtensionOption class provides an extended input argument to QWebPage's extension support.
+ \inmodule QtWebKit
+
\sa QWebPage::extension()
*/
@@ -2316,6 +2320,8 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos)
\brief The ChooseMultipleFilesExtensionOption class describes the option
for the multiple files selection extension.
+ \inmodule QtWebKit
+
The ChooseMultipleFilesExtensionOption class holds the frame originating the request
and the suggested filenames which might be provided.
@@ -2328,6 +2334,8 @@ void QWebPage::updatePositionDependentActions(const QPoint &pos)
\brief The ChooseMultipleFilesExtensionReturn describes the return value
for the multiple files selection extension.
+ \inmodule QtWebKit
+
The ChooseMultipleFilesExtensionReturn class holds the filenames selected by the user
when the extension is invoked.
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp
index d2bb124..e3b7efe 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp
@@ -26,6 +26,8 @@
\brief The QWebPluginFactory class creates plugins to be embedded into web
pages.
+ \inmodule QtWebKit
+
QWebPluginFactory is a factory for creating plugins for QWebPage. A plugin
factory can be installed on a QWebPage using QWebPage::setPluginFactory().
@@ -47,6 +49,8 @@
\class QWebPluginFactory::Plugin
\since 4.4
\brief the QWebPluginFactory::Plugin structure describes the properties of a plugin a QWebPluginFactory can create.
+
+ \inmodule QtWebKit
*/
/*!
@@ -68,6 +72,8 @@
\class QWebPluginFactory::MimeType
\since 4.4
\brief The QWebPluginFactory::MimeType structure describes a mime type supported by a plugin.
+
+ \inmodule QtWebKit
*/
/*!
@@ -173,6 +179,8 @@ void QWebPluginFactory::refreshPlugins()
\since 4.4
\brief The ExtensionOption class provides an extended input argument to QWebPluginFactory's extension support.
+ \inmodule QtWebKit
+
\sa QWebPluginFactory::extension()
*/
@@ -181,6 +189,8 @@ void QWebPluginFactory::refreshPlugins()
\since 4.4
\brief The ExtensionOption class provides an extended output argument to QWebPluginFactory's extension support.
+ \inmodule QtWebKit
+
\sa QWebPluginFactory::extension()
*/
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp
index d2eaf10..ed2e959 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp
@@ -35,6 +35,8 @@ using namespace WebCore;
\since 4.5
\brief The QWebSecurityOrigin class defines a security boundary for web sites.
+ \inmodule QtWebKit
+
QWebSecurityOrigin provides access to the security domains defined by web sites.
An origin consists of a host name, a scheme, and a port number. Web sites
with the same security origin can access each other's resources for client-side
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp
index fb94d55..89595c3 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp
@@ -219,6 +219,8 @@ QWebSettings* QWebSettings::globalSettings()
\brief The QWebSettings class provides an object to store the settings used
by QWebPage and QWebFrame.
+ \inmodule QtWebKit
+
Each QWebPage object has its own QWebSettings object, which configures the
settings for that page. If a setting is not configured, then it is looked
up in the global settings object, which can be accessed using
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp
index e1a0c98..422b5e6 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp
@@ -77,6 +77,8 @@ public:
web documents.
\ingroup advanced
+ \inmodule QtWebKit
+
QWebView is the main widget component of the QtWebKit web browsing module.
It can be used in various applications to display web content live from the
Internet.
diff --git a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc
index f3681ee..144feb5 100644
--- a/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc
+++ b/src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc
@@ -4,15 +4,67 @@
\contentspage Qt's Modules
\previouspage QtSvg
\nextpage QtXml
- \ingroup architecture
\ingroup modules
- \brief An introduction to the QtWebKit module.
+ \brief The QtWebKit module provides a web browser engine as well as
+ classes to render and interact with web content.
- \keyword Browser
- \keyword Web Browser
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 1
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 0
+
+ \section1 License Information
+
+ This is a snapshot of the Qt port of WebKit. The exact version information
+ can be found in the \c{src/3rdparty/webkit/VERSION} file supplied with Qt.
+
+ Qt Commercial Edition licensees that wish to distribute applications that
+ use the QtWebKit module need to be aware of their obligations under the
+ GNU Lesser General Public License (LGPL).
+
+ Developers using the Open Source Edition can choose to redistribute
+ the module under the appropriate version of the GNU LGPL; version 2.1
+ for applications and libraries licensed under the GNU GPL version 2,
+ or version 3 for applications and libraries licensed under the GNU
+ GPL version 2.
+
+ \legalese
+ WebKit is licensed under the GNU Library General Public License.
+ Individual contributor names and copyright dates can be found
+ inline in the code.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ \endlegalese
+*/
+
+/*!
+ \page webintegration.html
+ \title Integrating Web Content with QtWebKit
\since 4.4
+ \ingroup frameworks-technologies
+
+ \keyword Browser
+ \keyword Web Browser
+
QtWebKit provides a Web browser engine that makes it easy to embed content
from the World Wide Web into your Qt application. At the same time Web
content can be enhanced with native controls.
@@ -55,20 +107,6 @@
\tableofcontents
- \section1 Configuring the Build Process
-
- Applications using QtWebKit's classes need to be configured to be built
- against the QtWebKit module. The following declaration in a \c qmake
- project file ensures that an application is compiled and linked
- appropriately:
-
- \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 0
-
- To include the definitions of the module's classes, use the following
- directive:
-
- \snippet webkitsnippets/qtwebkit_build_snippet.qdoc 1
-
\section1 Architecture
The easiest way to render content is through the QWebView class. As a
@@ -158,40 +196,4 @@
\o The system \c{/Library/Internet Plug-Ins} directory
\endlist
\endtable
-
- \section1 License Information
-
- This is a snapshot of the Qt port of WebKit. The exact version information
- can be found in the \c{src/3rdparty/webkit/VERSION} file supplied with Qt.
-
- Qt Commercial Edition licensees that wish to distribute applications that
- use the QtWebKit module need to be aware of their obligations under the
- GNU Lesser General Public License (LGPL).
-
- Developers using the Open Source Edition can choose to redistribute
- the module under the appropriate version of the GNU LGPL; version 2.1
- for applications and libraries licensed under the GNU GPL version 2,
- or version 3 for applications and libraries licensed under the GNU
- GPL version 2.
-
- \legalese
- WebKit is licensed under the GNU Library General Public License.
- Individual contributor names and copyright dates can be found
- inline in the code.
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
- \endlegalese
*/
diff --git a/src/corelib/animation/qanimationgroup.cpp b/src/corelib/animation/qanimationgroup.cpp
index ab47b5a..78777f1 100644
--- a/src/corelib/animation/qanimationgroup.cpp
+++ b/src/corelib/animation/qanimationgroup.cpp
@@ -79,13 +79,6 @@
QAnimationGroup takes ownership of the animations it manages, and
ensures that they are deleted when the animation group is deleted.
- You can also use a \l{The State Machine Framework}{state machine}
- to create complex animations. The framework provides a special
- state, QAnimationState, that plays an animation upon entry and
- transitions to a new state when the animation has finished
- playing. This technique can also be combined with using animation
- groups.
-
\sa QAbstractAnimation, QVariantAnimation, {The Animation Framework}
*/
diff --git a/src/corelib/animation/qparallelanimationgroup_p.h b/src/corelib/animation/qparallelanimationgroup_p.h
index 65bf693..db804d5 100644
--- a/src/corelib/animation/qparallelanimationgroup_p.h
+++ b/src/corelib/animation/qparallelanimationgroup_p.h
@@ -55,7 +55,7 @@
#include "qparallelanimationgroup.h"
#include "private/qanimationgroup_p.h"
-#include <QtCore/QHash>
+#include <QtCore/qhash.h>
#ifndef QT_NO_ANIMATION
diff --git a/src/corelib/animation/qpropertyanimation.cpp b/src/corelib/animation/qpropertyanimation.cpp
index 0c1feee..35d65d0 100644
--- a/src/corelib/animation/qpropertyanimation.cpp
+++ b/src/corelib/animation/qpropertyanimation.cpp
@@ -43,7 +43,7 @@
\class QPropertyAnimation
\brief The QPropertyAnimation class animates Qt properties
\since 4.6
- \mainclass
+
\ingroup animation
QPropertyAnimation interpolates over \l{Qt's Property System}{Qt
diff --git a/doc/src/codecs.qdoc b/src/corelib/codecs/codecs.qdoc
index 7359b79..9cffa85 100644
--- a/doc/src/codecs.qdoc
+++ b/src/corelib/codecs/codecs.qdoc
@@ -40,6 +40,18 @@
****************************************************************************/
/*!
+ \group codecs
+ \title Codecs
+ \ingroup groups
+ \brief Codec support in Qt.
+
+ These codecs provide facilities for conversion between Unicode and
+ specific text encodings.
+
+ \generatelist{related}
+*/
+
+/*!
\page codec-big5.html
\title Big5 Text Codec
\ingroup codecs
diff --git a/src/corelib/concurrent/qfuture.cpp b/src/corelib/concurrent/qfuture.cpp
index a366a4b..f0c1e34 100644
--- a/src/corelib/concurrent/qfuture.cpp
+++ b/src/corelib/concurrent/qfuture.cpp
@@ -44,8 +44,10 @@
\brief The QFuture class represents the result of an asynchronous computation.
\since 4.4
+ \ingroup thread
+
To start a computation, use one of the APIs in the
- \l {threads.html#qtconcurrent-intro}{Qt Concurrent} framework.
+ \l {Concurrent Programming}{Qt Concurrent} framework.
QFuture allows threads to be synchronized against one or more results
which will be ready at a later point in time. The result can be of any type
@@ -90,7 +92,7 @@
To interact with running tasks using signals and slots, use QFutureWatcher.
- \sa QFutureWatcher, {threads.html#qtconcurrent-intro}{Qt Concurrent}
+ \sa QFutureWatcher, {Concurrent Programming}{Qt Concurrent}
*/
/*! \fn QFuture::QFuture()
diff --git a/src/corelib/concurrent/qfuturesynchronizer.cpp b/src/corelib/concurrent/qfuturesynchronizer.cpp
index 1fd7198..dfb693e 100644
--- a/src/corelib/concurrent/qfuturesynchronizer.cpp
+++ b/src/corelib/concurrent/qfuturesynchronizer.cpp
@@ -44,7 +44,9 @@
\brief The QFutureSynchronizer class is a convenience class that simplifies
QFuture synchronization.
-
+
+ \ingroup thread
+
QFutureSynchronizer is a template class that simplifies synchronization of
one or more QFuture objects. Futures are added using the addFuture() or
setFuture() functions. The futures() function returns a list of futures.
@@ -63,7 +65,7 @@
You can query the status of the cancel-on-wait feature using the
cancelOnWait() function.
- \sa QFuture, QFutureWatcher, {threads.html#qtconcurrent-intro}{Qt Concurrent}
+ \sa QFuture, QFutureWatcher, {Concurrent Programming}{Qt Concurrent}
*/
/*!
diff --git a/src/corelib/concurrent/qfuturewatcher.cpp b/src/corelib/concurrent/qfuturewatcher.cpp
index f0f06f9..84715b4 100644
--- a/src/corelib/concurrent/qfuturewatcher.cpp
+++ b/src/corelib/concurrent/qfuturewatcher.cpp
@@ -43,9 +43,9 @@
#ifndef QT_NO_QFUTURE
-#include <QEvent>
-#include <QCoreApplication>
-#include <QThread>
+#include <QtCore/qcoreevent.h>
+#include <QtCore/qcoreapplication.h>
+#include <QtCore/qthread.h>
#include "qfuturewatcher_p.h"
@@ -55,6 +55,8 @@ QT_BEGIN_NAMESPACE
\reentrant
\since 4.4
+ \ingroup thread
+
\brief The QFutureWatcher class allows monitoring a QFuture using signals
and slots.
@@ -94,7 +96,7 @@ QT_BEGIN_NAMESPACE
QFutureWatcher<void> as well. This is useful if only status or progress
information is needed; not the actual result data.
- \sa QFuture, {threads.html#qtconcurrent-intro}{Qt Concurrent}
+ \sa QFuture, {Concurrent Programming}{Qt Concurrent}
*/
/*! \fn QFutureWatcher::QFutureWatcher(QObject *parent)
diff --git a/src/corelib/concurrent/qfuturewatcher_p.h b/src/corelib/concurrent/qfuturewatcher_p.h
index 69a28eb..8fb0e4f 100644
--- a/src/corelib/concurrent/qfuturewatcher_p.h
+++ b/src/corelib/concurrent/qfuturewatcher_p.h
@@ -54,7 +54,7 @@
//
#include "qfutureinterface_p.h"
-#include <QList>
+#include <qlist.h>
#ifndef QT_NO_QFUTURE
diff --git a/src/corelib/concurrent/qrunnable.cpp b/src/corelib/concurrent/qrunnable.cpp
index 86a099b..db33803 100644
--- a/src/corelib/concurrent/qrunnable.cpp
+++ b/src/corelib/concurrent/qrunnable.cpp
@@ -44,6 +44,8 @@
\since 4.4
\brief The QRunnable class is the base class for all runnable objects.
+ \ingroup thread
+
The QRunnable class is an interface for representing a task or
piece of code that needs to be executed, represented by your
reimplementation of the run() function.
diff --git a/src/corelib/concurrent/qtconcurrentfilter.cpp b/src/corelib/concurrent/qtconcurrentfilter.cpp
index f4572b8..4ab0723 100644
--- a/src/corelib/concurrent/qtconcurrentfilter.cpp
+++ b/src/corelib/concurrent/qtconcurrentfilter.cpp
@@ -42,12 +42,12 @@
/*!
\headerfile <QtConcurrentFilter>
\title Concurrent Filter and Filter-Reduce
- \ingroup threading
+ \ingroup thread
\brief The <QtConcurrentFilter> header provides concurrent Filter and
Filter-Reduce.
- These functions are a part of the \l {threads.html#qtconcurrent-intro}{Qt Concurrent} framework.
+ These functions are a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
The QtConcurrent::filter(), QtConcurrent::filtered() and
QtConcurrent::filteredReduced() functions filter items in a sequence such
diff --git a/src/corelib/concurrent/qtconcurrentmap.cpp b/src/corelib/concurrent/qtconcurrentmap.cpp
index 80baa8f..3fd044d 100644
--- a/src/corelib/concurrent/qtconcurrentmap.cpp
+++ b/src/corelib/concurrent/qtconcurrentmap.cpp
@@ -47,7 +47,9 @@
possible to write multi-threaded programs without using low-level
threading primitives.
- See the \l {threads.html#qtconcurrent-intro}{Qt Concurrent} section in the \l{threads.html}{threading} documentation.
+ See the \l {Concurrent Programming}{Qt Concurrent} chapter in
+ the \l{threads.html}{threading} documentation.
+
\inheaderfile QtCore
\ingroup thread
*/
@@ -58,8 +60,6 @@
\brief The QtConcurrent::internal namespace contains QtConcurrent
implementation details.
-
- \ingroup thread
*/
/*!
@@ -78,11 +78,11 @@
/*!
\headerfile <QtConcurrentMap>
\title Concurrent Map and Map-Reduce
- \ingroup threading
+ \ingroup thread
\brief The <QtConcurrentMap> header provides concurrent Map and MapReduce.
- These functions are a part of the \l {threads.html#qtconcurrent-intro}{Qt Concurrent} framework.
+ These functions are a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
The QtConcurrent::map(), QtConcurrent::mapped() and
QtConcurrent::mappedReduced() functions run computations in parallel on
diff --git a/src/corelib/concurrent/qtconcurrentrun.cpp b/src/corelib/concurrent/qtconcurrentrun.cpp
index 5803abb..989f54d 100644
--- a/src/corelib/concurrent/qtconcurrentrun.cpp
+++ b/src/corelib/concurrent/qtconcurrentrun.cpp
@@ -42,11 +42,13 @@
/*!
\headerfile <QtConcurrentRun>
\title Asynchronous Run
-
+
\brief The <QtConcurrentRun> header provides a way to run a function in a
separate thread.
+
+ \ingroup thread
- This function is a part of the \l {threads.html#qtconcurrent-intro}{Qt Concurrent} framework.
+ This function is a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
The QtConcurrent::run() function runs a function in a separate thread.
The return value of the function is made available through the QFuture API.
diff --git a/src/corelib/concurrent/qthreadpool.cpp b/src/corelib/concurrent/qthreadpool.cpp
index 2dfac31..9b2ac46 100644
--- a/src/corelib/concurrent/qthreadpool.cpp
+++ b/src/corelib/concurrent/qthreadpool.cpp
@@ -364,6 +364,8 @@ void QThreadPoolPrivate::stealRunnable(QRunnable *runnable)
\since 4.4
\threadsafe
+ \ingroup thread
+
QThreadPool manages and recyles individual QThread objects to help reduce
thread creation costs in programs that use threads. Each Qt application
has one global QThreadPool object, which can be accessed by calling
@@ -404,7 +406,7 @@ void QThreadPoolPrivate::stealRunnable(QRunnable *runnable)
Note that QThreadPool is a low-level class for managing threads, see
QtConcurrent::run() or the other
- \l {threads.html#qtconcurrent-intro}{Qt Concurrent} APIs for higher
+ \l {Concurrent Programming}{Qt Concurrent} APIs for higher
level alternatives.
\sa QRunnable
diff --git a/doc/src/classes/qtendian.qdoc b/src/corelib/global/qendian.qdoc
index e96ba0f..e0ef662 100644
--- a/doc/src/classes/qtendian.qdoc
+++ b/src/corelib/global/qendian.qdoc
@@ -42,7 +42,7 @@
/*!
\headerfile <QtEndian>
\title Endian Conversion Functions
- \ingroup architecture
+ \ingroup classlists
\brief The <QtEndian> header provides functions to convert between
little and big endian representations of numbers.
*/
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index b2046c9..81a5ae5 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -101,7 +101,7 @@ QT_BEGIN_NAMESPACE
\brief The QFlags class provides a type-safe way of storing
OR-combinations of enum values.
- \mainclass
+
\ingroup tools
The QFlags<Enum> class is a template class, where Enum is an enum
@@ -401,7 +401,7 @@ QT_BEGIN_NAMESPACE
/*!
\headerfile <QtGlobal>
\title Global Qt Declarations
- \ingroup architecture
+ \ingroup classlists
\brief The <QtGlobal> header provides basic declarations and
is included by all other Qt headers.
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 92fe649..40b65fd 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -297,7 +297,7 @@ namespace QT_NAMESPACE {}
# ifdef MAC_OS_X_VERSION_MIN_REQUIRED
# undef MAC_OS_X_VERSION_MIN_REQUIRED
# endif
-# define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_3
+# define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_4
# include <AvailabilityMacros.h>
# if !defined(MAC_OS_X_VERSION_10_3)
# define MAC_OS_X_VERSION_10_3 MAC_OS_X_VERSION_10_2 + 1
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index 51c7988..f42a2ff 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -147,9 +147,6 @@ QSettings *QLibraryInfoPrivate::findConfiguration()
\class QLibraryInfo
\brief The QLibraryInfo class provides information about the Qt library.
- \ingroup misc
- \mainclass
-
Many pieces of information are established when Qt is configured.
Installation paths, license information, and even a unique build
key. This class provides an abstraction for accessing this
diff --git a/doc/src/classes/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index 79a4560..d1c16e5 100644
--- a/doc/src/classes/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -45,8 +45,6 @@
\brief The Qt namespace contains miscellaneous identifiers
used throughout the Qt library.
-
- \ingroup misc
*/
/*!
diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp
index 572b8a1..52902d0 100644
--- a/src/corelib/io/qdatastream.cpp
+++ b/src/corelib/io/qdatastream.cpp
@@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE
to a QIODevice.
\ingroup io
- \mainclass
+
A data stream is a binary stream of encoded information which is
100% independent of the host computer's operating system, CPU or
diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp
index 6dd2640..1545082 100644
--- a/src/corelib/io/qdebug.cpp
+++ b/src/corelib/io/qdebug.cpp
@@ -52,8 +52,7 @@
/*!
\class QDebug
- \ingroup io
- \mainclass
+
\brief The QDebug class provides an output stream for debugging information.
QDebug is used whenever the developer needs to write out debugging or tracing
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index 92aef3c..ca178ce 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -58,7 +58,7 @@
#include "qvarlengtharray.h"
-#include "../kernel/qcoreglobaldata_p.h"
+#include "private/qcoreglobaldata_p.h"
#include <stdlib.h>
QT_BEGIN_NAMESPACE
@@ -345,7 +345,7 @@ void QDirPrivate::detach(bool createFileEngine)
\ingroup io
\ingroup shared
\reentrant
- \mainclass
+
A QDir is used to manipulate path names, access information
regarding paths and files, and manipulate the underlying file
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index 1718f3b..aa704d3 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -172,7 +172,7 @@ QFilePrivate::setError(QFile::FileError err, int errNum)
\brief The QFile class provides an interface for reading from and writing to files.
\ingroup io
- \mainclass
+
\reentrant
QFile is an I/O device for reading and writing text and binary
diff --git a/src/corelib/io/qfileinfo_p.h b/src/corelib/io/qfileinfo_p.h
index d64a5c4..d92090c 100644
--- a/src/corelib/io/qfileinfo_p.h
+++ b/src/corelib/io/qfileinfo_p.h
@@ -81,11 +81,11 @@ public:
CachedSize =0x08 };
struct Data {
inline Data()
- : ref(1), fileEngine(0), cache_enabled(1)
+ : ref(1), fileEngine(0), cache_enabled(1), fileSize(0)
{ clear(); }
inline Data(const Data &copy)
: ref(1), fileEngine(QAbstractFileEngine::create(copy.fileName)),
- fileName(copy.fileName), cache_enabled(copy.cache_enabled)
+ fileName(copy.fileName), cache_enabled(copy.cache_enabled), fileSize(copy.fileSize)
{ clear(); }
inline ~Data() { delete fileEngine; }
inline void clearFlags() {
diff --git a/src/corelib/io/qfilesystemwatcher_fsevents_p.h b/src/corelib/io/qfilesystemwatcher_fsevents_p.h
index b93d711..317c149 100644
--- a/src/corelib/io/qfilesystemwatcher_fsevents_p.h
+++ b/src/corelib/io/qfilesystemwatcher_fsevents_p.h
@@ -59,8 +59,8 @@
#include <QtCore/qmutex.h>
#include <QtCore/qwaitcondition.h>
#include <QtCore/qthread.h>
-#include <QtCore/QHash>
-#include <QtCore/QLinkedList>
+#include <QtCore/qhash.h>
+#include <QtCore/qlinkedlist.h>
#include <private/qcore_mac_p.h>
#include <sys/stat.h>
diff --git a/src/corelib/io/qnoncontiguousbytedevice.cpp b/src/corelib/io/qnoncontiguousbytedevice.cpp
index 89ed041..185d961 100644
--- a/src/corelib/io/qnoncontiguousbytedevice.cpp
+++ b/src/corelib/io/qnoncontiguousbytedevice.cpp
@@ -40,10 +40,9 @@
****************************************************************************/
#include "qnoncontiguousbytedevice_p.h"
-#include <QObject>
-#include <QBuffer>
-#include <QDebug>
-#include <QFile>
+#include <qbuffer.h>
+#include <qdebug.h>
+#include <qfile.h>
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/io/qnoncontiguousbytedevice_p.h b/src/corelib/io/qnoncontiguousbytedevice_p.h
index dd34c67..ecf9b9c 100644
--- a/src/corelib/io/qnoncontiguousbytedevice_p.h
+++ b/src/corelib/io/qnoncontiguousbytedevice_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include <QObject>
+#include <QtCore/qobject.h>
#include <QtCore/qbytearray.h>
#include <QtCore/qbuffer.h>
#include <QtCore/qiodevice.h>
diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp
index 133d51e..ccc16b2 100644
--- a/src/corelib/io/qprocess.cpp
+++ b/src/corelib/io/qprocess.cpp
@@ -151,12 +151,19 @@ void QProcessPrivate::Channel::clear()
to communicate with them.
\ingroup io
- \ingroup misc
- \mainclass
+
\reentrant
+ \section1 Running a Process
+
To start a process, pass the name and command line arguments of
- the program you want to run as arguments to start(). For example:
+ the program you want to run as arguments to start(). Arguments
+ are supplied as individual strings in a QStringList.
+
+ For example, the following code snippet runs the analog clock
+ example in the Motif style on X11 platforms by passing strings
+ containing "-style" and "motif" as two items in the list of
+ arguments:
\snippet doc/src/snippets/qprocess/qprocess-simpleexecution.cpp 0
\dots
@@ -1565,16 +1572,16 @@ QByteArray QProcess::readAllStandardError()
process, a warning may be printed at the console, and the existing
process will continue running.
- Note that arguments that contain spaces are not passed to the
+ \note Arguments that contain spaces are not passed to the
process as separate arguments.
- \bold{Windows:} Arguments that contain spaces are wrapped in quotes.
-
\note Processes are started asynchronously, which means the started()
and error() signals may be delayed. Call waitForStarted() to make
sure the process has started (or has failed to start) and those signals
have been emitted.
+ \bold{Windows:} Arguments that contain spaces are wrapped in quotes.
+
\sa pid(), started(), waitForStarted()
*/
void QProcess::start(const QString &program, const QStringList &arguments, OpenMode mode)
@@ -1834,7 +1841,7 @@ bool QProcess::startDetached(const QString &program,
otherwise returns false. If the calling process exits, the
detached process will continue to live.
- Note that arguments that contain spaces are not passed to the
+ \note Arguments that contain spaces are not passed to the
process as separate arguments.
\bold{Unix:} The started process will run in its own session and act
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index 958c7fc..212f153 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -169,7 +169,7 @@ Q_GLOBAL_STATIC(QStringList, resourceSearchPaths)
\brief The QResource class provides an interface for reading directly from resources.
\ingroup io
- \mainclass
+
\reentrant
\since 4.2
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 81bd25a..af38b5a 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -2004,8 +2004,7 @@ void QConfFileSettingsPrivate::ensureSectionParsed(QConfFile *confFile,
\brief The QSettings class provides persistent platform-independent application settings.
\ingroup io
- \ingroup misc
- \mainclass
+
\reentrant
Users normally expect an application to remember its settings
diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp
index 2fbf93f..adfcf5e 100644
--- a/src/corelib/io/qtemporaryfile.cpp
+++ b/src/corelib/io/qtemporaryfile.cpp
@@ -447,7 +447,7 @@ QTemporaryFilePrivate::~QTemporaryFilePrivate()
\brief The QTemporaryFile class is an I/O device that operates on temporary files.
\ingroup io
- \mainclass
+
QTemporaryFile is used to create unique temporary files safely.
The file itself is created by calling open(). The name of the
diff --git a/src/corelib/io/qtextstream.cpp b/src/corelib/io/qtextstream.cpp
index 151a4a2..9c82976 100644
--- a/src/corelib/io/qtextstream.cpp
+++ b/src/corelib/io/qtextstream.cpp
@@ -49,7 +49,7 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384;
reading and writing text.
\ingroup io
- \ingroup text
+ \ingroup string-processing
\reentrant
QTextStream can operate on a QIODevice, a QByteArray or a
@@ -3088,8 +3088,6 @@ QLocale QTextStream::locale() const
\compat
\reentrant
- \ingroup io
- \ingroup text
Use QTextStream instead.
*/
@@ -3116,8 +3114,6 @@ QLocale QTextStream::locale() const
\compat
\reentrant
- \ingroup io
- \ingroup text
Use QTextStream instead.
*/
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 423f5e2..4aae53d 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -47,9 +47,9 @@
\reentrant
\ingroup io
- \ingroup misc
+ \ingroup network
\ingroup shared
- \mainclass
+
It can parse and construct URLs in both encoded and unencoded
form. QUrl also has support for internationalized domain names
@@ -5699,6 +5699,10 @@ QString QUrl::fromAce(const QByteArray &domain)
Applications (IDNA) specification, which allows for domain names
(like \c "example.com") to be written using international
characters.
+
+ This function return an empty QByteArra if \a domain is not a valid
+ hostname. Note, in particular, that IPv6 literals are not valid domain
+ names.
*/
QByteArray QUrl::toAce(const QString &domain)
{
diff --git a/src/corelib/kernel/qabstracteventdispatcher.cpp b/src/corelib/kernel/qabstracteventdispatcher.cpp
index a414862..4fa0cd2 100644
--- a/src/corelib/kernel/qabstracteventdispatcher.cpp
+++ b/src/corelib/kernel/qabstracteventdispatcher.cpp
@@ -168,7 +168,6 @@ void QAbstractEventDispatcherPrivate::releaseTimerId(int timerId)
\class QAbstractEventDispatcher
\brief The QAbstractEventDispatcher class provides an interface to manage Qt's event queue.
- \ingroup application
\ingroup events
An event dispatcher receives events from the window system and other
diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp
index 61b19a2..d6d1bcf 100644
--- a/src/corelib/kernel/qabstractitemmodel.cpp
+++ b/src/corelib/kernel/qabstractitemmodel.cpp
@@ -753,7 +753,7 @@ void QAbstractItemModelPrivate::columnsRemoved(const QModelIndex &parent,
\brief The QModelIndex class is used to locate data in a data model.
\ingroup model-view
- \mainclass
+
This class is used as an index into item models derived from
QAbstractItemModel. The index is used by item views, delegates, and
@@ -941,7 +941,7 @@ void QAbstractItemModelPrivate::columnsRemoved(const QModelIndex &parent,
item model classes.
\ingroup model-view
- \mainclass
+
The QAbstractItemModel class defines the standard interface that item
models must use to be able to interoperate with other components in the
diff --git a/src/corelib/kernel/qbasictimer.cpp b/src/corelib/kernel/qbasictimer.cpp
index df5941f..7fd975d 100644
--- a/src/corelib/kernel/qbasictimer.cpp
+++ b/src/corelib/kernel/qbasictimer.cpp
@@ -49,7 +49,6 @@ QT_BEGIN_NAMESPACE
\class QBasicTimer
\brief The QBasicTimer class provides timer events for objects.
- \ingroup time
\ingroup events
This is a fast, lightweight, and low-level class used by Qt
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 86221a1..a2c9de9 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -339,9 +339,6 @@ QString qAppName()
\brief The QCoreApplication class provides an event loop for console Qt
applications.
- \ingroup application
- \mainclass
-
This class is used by non-GUI applications to provide their event
loop. For non-GUI application that uses Qt, there should be exactly
one QCoreApplication object. For GUI applications, see
diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp
index f661d47..9771284 100644
--- a/src/corelib/kernel/qcoreevent.cpp
+++ b/src/corelib/kernel/qcoreevent.cpp
@@ -54,7 +54,6 @@ QT_BEGIN_NAMESPACE
event classes. Event objects contain event parameters.
\ingroup events
- \ingroup environment
Qt's main event loop (QCoreApplication::exec()) fetches native
window system events from the event queue, translates them into
diff --git a/src/corelib/kernel/qcoreglobaldata.cpp b/src/corelib/kernel/qcoreglobaldata.cpp
index c2a226d..6b90ed7 100644
--- a/src/corelib/kernel/qcoreglobaldata.cpp
+++ b/src/corelib/kernel/qcoreglobaldata.cpp
@@ -41,8 +41,6 @@
#include "qcoreglobaldata_p.h"
-#include <QtDebug>
-
QT_BEGIN_NAMESPACE
Q_GLOBAL_STATIC(QCoreGlobalData, globalInstance)
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 2afab1a..0e75867 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -524,7 +524,7 @@ int QMetaCallEvent::placeMetaCall(QObject *object)
\brief The QObject class is the base class of all Qt objects.
\ingroup objectmodel
- \mainclass
+
\reentrant
QObject is the heart of the \l{Qt object model}. The central
diff --git a/src/corelib/kernel/qpointer.cpp b/src/corelib/kernel/qpointer.cpp
index fb7a81e..624336f 100644
--- a/src/corelib/kernel/qpointer.cpp
+++ b/src/corelib/kernel/qpointer.cpp
@@ -44,7 +44,7 @@
\brief The QPointer class is a template class that provides guarded pointers to QObjects.
\ingroup objectmodel
- \mainclass
+
A guarded pointer, QPointer<T>, behaves like a normal C++
pointer \c{T *}, except that it is automatically set to 0 when the
diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp
index 168bf29..5dbd7c8 100644
--- a/src/corelib/kernel/qsharedmemory.cpp
+++ b/src/corelib/kernel/qsharedmemory.cpp
@@ -86,7 +86,6 @@ QSharedMemoryPrivate::makePlatformSafeKey(const QString &key,
/*!
\class QSharedMemory
- \ingroup ipc
\since 4.4
\brief The QSharedMemory class provides access to a shared memory segment.
diff --git a/src/corelib/kernel/qsignalmapper.cpp b/src/corelib/kernel/qsignalmapper.cpp
index 5e89da2..7b2097d 100644
--- a/src/corelib/kernel/qsignalmapper.cpp
+++ b/src/corelib/kernel/qsignalmapper.cpp
@@ -66,8 +66,8 @@ public:
\class QSignalMapper
\brief The QSignalMapper class bundles signals from identifiable senders.
- \ingroup io
- \mainclass
+ \ingroup objectmodel
+
This class collects a set of parameterless signals, and re-emits
them with integer, string or widget parameters corresponding to
diff --git a/src/corelib/kernel/qsocketnotifier.cpp b/src/corelib/kernel/qsocketnotifier.cpp
index 4ac1cbb..85a3ea3 100644
--- a/src/corelib/kernel/qsocketnotifier.cpp
+++ b/src/corelib/kernel/qsocketnotifier.cpp
@@ -56,6 +56,7 @@ QT_BEGIN_NAMESPACE
\brief The QSocketNotifier class provides support for monitoring
activity on a file descriptor.
+ \ingroup network
\ingroup io
The QSocketNotifier makes it possible to integrate Qt's event
diff --git a/src/corelib/kernel/qsystemsemaphore.cpp b/src/corelib/kernel/qsystemsemaphore.cpp
index 95dc8a0..94548f7 100644
--- a/src/corelib/kernel/qsystemsemaphore.cpp
+++ b/src/corelib/kernel/qsystemsemaphore.cpp
@@ -49,7 +49,6 @@ QT_BEGIN_NAMESPACE
/*!
\class QSystemSemaphore
- \ingroup ipc
\since 4.4
\brief The QSystemSemaphore class provides a general counting system semaphore.
diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp
index f40f491..6c4eb1b 100644
--- a/src/corelib/kernel/qtimer.cpp
+++ b/src/corelib/kernel/qtimer.cpp
@@ -50,9 +50,8 @@ QT_BEGIN_NAMESPACE
\class QTimer
\brief The QTimer class provides repetitive and single-shot timers.
- \ingroup time
\ingroup events
- \mainclass
+
The QTimer class provides a high-level programming interface for
timers. To use it, create a QTimer, connect its timeout() signal
@@ -101,10 +100,22 @@ QT_BEGIN_NAMESPACE
more and more platforms, and we expect that zero-millisecond
QTimers will gradually be replaced by \l{QThread}s.
- Note that QTimer's accuracy depends on the underlying operating
- system and hardware. Most platforms support an accuracy of
- 1 millisecond. If Qt is unable to deliver the requested number of
- timer clicks, it will silently discard some.
+ \section1 Accuracy and Timer Resolution
+
+ Timers will never time out earlier than the specified timeout value
+ and they are not guaranteed to time out at the exact value specified.
+ In many situations, they may time out late by a period of time that
+ depends on the accuracy of the system timers.
+
+ The accuracy of timers depends on the underlying operating system
+ and hardware. Most platforms support a resolution of 1 millisecond,
+ though the accuracy of the timer will not equal this resolution
+ in many real-world situations.
+
+ If Qt is unable to deliver the requested number of timer clicks,
+ it will silently discard some.
+
+ \section1 Alternatives to QTimer
An alternative to using QTimer is to call QObject::startTimer()
for your object and reimplement the QObject::timerEvent() event
diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
index de1157c..b9e6e14 100644
--- a/src/corelib/kernel/qtranslator.cpp
+++ b/src/corelib/kernel/qtranslator.cpp
@@ -249,8 +249,6 @@ public:
output.
\ingroup i18n
- \ingroup environment
- \mainclass
An object of this class contains a set of translations from a
source language to a target language. QTranslator provides
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 66c4176..54d6073 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1164,9 +1164,8 @@ const QVariant::Handler *QVariant::handler = &qt_kernel_variant_handler;
\brief The QVariant class acts like a union for the most common Qt data types.
\ingroup objectmodel
- \ingroup misc
\ingroup shared
- \mainclass
+
Because C++ forbids unions from including types that have
non-default constructors or destructors, most interesting Qt
diff --git a/src/corelib/kernel/qwineventnotifier_p.cpp b/src/corelib/kernel/qwineventnotifier_p.cpp
index f54d564..e5ce02c 100644
--- a/src/corelib/kernel/qwineventnotifier_p.cpp
+++ b/src/corelib/kernel/qwineventnotifier_p.cpp
@@ -52,8 +52,6 @@ QT_BEGIN_NAMESPACE
\class QWinEventNotifier
\brief The QWinEventNotifier class provides support for the Windows Wait functions.
- \ingroup io
-
The QWinEventNotifier class makes it possible to use the wait
functions on windows in a asynchronous manner. With this class
you can register a HANDLE to an event and get notification when
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index 116d617..ea8882f 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -85,7 +85,7 @@ Q_GLOBAL_STATIC(QMutex, qt_library_mutex)
\reentrant
\brief The QLibrary class loads shared libraries at runtime.
- \mainclass
+
\ingroup plugins
An instance of a QLibrary object operates on a single shared
diff --git a/doc/src/classes/qplugin.qdoc b/src/corelib/plugin/qplugin.qdoc
index 3b8f1b0..3b8f1b0 100644
--- a/doc/src/classes/qplugin.qdoc
+++ b/src/corelib/plugin/qplugin.qdoc
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
index 2d9e20e..521063c 100644
--- a/src/corelib/plugin/qpluginloader.cpp
+++ b/src/corelib/plugin/qpluginloader.cpp
@@ -56,7 +56,7 @@ QT_BEGIN_NAMESPACE
\reentrant
\brief The QPluginLoader class loads a plugin at run-time.
- \mainclass
+
\ingroup plugins
QPluginLoader provides access to a \l{How to Create Qt
diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp
index fd5bc63..400f42d 100644
--- a/src/corelib/plugin/quuid.cpp
+++ b/src/corelib/plugin/quuid.cpp
@@ -50,7 +50,6 @@ QT_BEGIN_NAMESPACE
\brief The QUuid class stores a Universally Unique Identifier (UUID).
\reentrant
- \ingroup misc
Using \e{U}niversally \e{U}nique \e{ID}entifiers (UUID) is a
standard way to uniquely identify entities in a distributed
diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp
index eaa7308..db9a415 100644
--- a/src/corelib/thread/qmutex.cpp
+++ b/src/corelib/thread/qmutex.cpp
@@ -56,8 +56,6 @@ QT_BEGIN_NAMESPACE
\threadsafe
\ingroup thread
- \ingroup environment
- \mainclass
The purpose of a QMutex is to protect an object, data structure or
section of code so that only one thread can access it at a time
@@ -416,7 +414,6 @@ void QMutex::unlock()
\threadsafe
\ingroup thread
- \ingroup environment
Locking and unlocking a QMutex in complex functions and
statements or in exception handling code is error-prone and
diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp
index 6db10a0..8ce58e9 100644
--- a/src/corelib/thread/qreadwritelock.cpp
+++ b/src/corelib/thread/qreadwritelock.cpp
@@ -57,7 +57,6 @@ QT_BEGIN_NAMESPACE
\threadsafe
\ingroup thread
- \ingroup environment
A read-write lock is a synchronization tool for protecting
resources that can be accessed for reading and writing. This type
@@ -441,7 +440,6 @@ void QReadWriteLock::unlock()
\threadsafe
\ingroup thread
- \ingroup environment
The purpose of QReadLocker (and QWriteLocker) is to simplify
QReadWriteLock locking and unlocking. Locking and unlocking
@@ -514,7 +512,6 @@ void QReadWriteLock::unlock()
\threadsafe
\ingroup thread
- \ingroup environment
The purpose of QWriteLocker (and QReadLocker is to simplify
QReadWriteLock locking and unlocking. Locking and unlocking
diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp
index 38e800d..df8036f 100644
--- a/src/corelib/thread/qsemaphore.cpp
+++ b/src/corelib/thread/qsemaphore.cpp
@@ -54,7 +54,6 @@ QT_BEGIN_NAMESPACE
\threadsafe
\ingroup thread
- \ingroup environment
A semaphore is a generalization of a mutex. While a mutex can
only be locked once, it's possible to acquire a semaphore
diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp
index 53ac3c7..b3575d4 100644
--- a/src/corelib/thread/qthread.cpp
+++ b/src/corelib/thread/qthread.cpp
@@ -199,8 +199,6 @@ void QAdoptedThread::run()
\brief The QThread class provides platform-independent threads.
\ingroup thread
- \ingroup environment
- \mainclass
A QThread represents a separate thread of control within the
program; it shares data with all the other threads within the
diff --git a/src/corelib/thread/qthreadstorage.cpp b/src/corelib/thread/qthreadstorage.cpp
index 25194f4..ebdcab7 100644
--- a/src/corelib/thread/qthreadstorage.cpp
+++ b/src/corelib/thread/qthreadstorage.cpp
@@ -189,8 +189,6 @@ void QThreadStorageData::finish(void **p)
\threadsafe
\ingroup thread
- \ingroup environment
- \mainclass
QThreadStorage is a template class that provides per-thread data
storage.
diff --git a/doc/src/classes/qwaitcondition.qdoc b/src/corelib/thread/qwaitcondition.qdoc
index f19f51e..ae2de6c 100644
--- a/doc/src/classes/qwaitcondition.qdoc
+++ b/src/corelib/thread/qwaitcondition.qdoc
@@ -47,7 +47,6 @@
\threadsafe
\ingroup thread
- \ingroup environment
QWaitCondition allows a thread to tell other threads that some
sort of condition has been met. One or many threads can block
diff --git a/doc/src/classes/qalgorithms.qdoc b/src/corelib/tools/qalgorithms.qdoc
index 0b30879..f7b7798 100644
--- a/doc/src/classes/qalgorithms.qdoc
+++ b/src/corelib/tools/qalgorithms.qdoc
@@ -42,7 +42,7 @@
/*!
\headerfile <QtAlgorithms>
\title Generic Algorithms
- \ingroup architecture
+ \ingroup classlists
\brief The <QtAlgorithms> header provides generic template-based algorithms.
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index 5197d9a..3cfc88e 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -590,8 +590,8 @@ QByteArray::Data QByteArray::shared_empty = { Q_BASIC_ATOMIC_INITIALIZER(1),
\ingroup tools
\ingroup shared
- \ingroup text
- \mainclass
+ \ingroup string-processing
+
\reentrant
QByteArray can be used to store both raw bytes (including '\\0's)
diff --git a/src/corelib/tools/qbytearraymatcher.cpp b/src/corelib/tools/qbytearraymatcher.cpp
index 1c10a4f..37cb9bb 100644
--- a/src/corelib/tools/qbytearraymatcher.cpp
+++ b/src/corelib/tools/qbytearraymatcher.cpp
@@ -94,7 +94,7 @@ static inline int bm_find(const uchar *cc, int l, int index, const uchar *puc, u
can be quickly matched in a byte array.
\ingroup tools
- \ingroup text
+ \ingroup string-processing
This class is useful when you have a sequence of bytes that you
want to repeatedly match against some byte arrays (perhaps in a
diff --git a/doc/src/classes/qcache.qdoc b/src/corelib/tools/qcache.qdoc
index b79eba8..4c008fa 100644
--- a/doc/src/classes/qcache.qdoc
+++ b/src/corelib/tools/qcache.qdoc
@@ -45,7 +45,7 @@
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QCache\<Key, T\> defines a cache that stores objects of type T
diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp
index ab84603..e9f9552 100644
--- a/src/corelib/tools/qchar.cpp
+++ b/src/corelib/tools/qchar.cpp
@@ -70,7 +70,7 @@ QT_BEGIN_NAMESPACE
/*! \class QLatin1Char
\brief The QLatin1Char class provides an 8-bit ASCII/Latin-1 character.
- \ingroup text
+ \ingroup string-processing
This class is only useful to avoid the codec for C strings business
in the QChar(ch) constructor. You can avoid it by writing
@@ -104,7 +104,7 @@ QT_BEGIN_NAMESPACE
\class QChar
\brief The QChar class provides a 16-bit Unicode character.
- \ingroup text
+ \ingroup string-processing
\reentrant
In Qt, Unicode characters are 16-bit entities without any markup
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index 08a8385..54384e4 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -193,8 +193,6 @@ static QString fmtDateTime(const QString& f, const QTime* dt = 0, const QDate* d
\reentrant
\brief The QDate class provides date functions.
- \ingroup time
- \mainclass
A QDate object contains a calendar date, i.e. year, month, and day
numbers, in the Gregorian calendar. (see \l{QDate G and J} {Use of
@@ -1411,8 +1409,6 @@ void QDate::julianToGregorian(uint jd, int &y, int &m, int &d)
\brief The QTime class provides clock time functions.
- \ingroup time
- \mainclass
A QTime object contains a clock time, i.e. the number of hours,
minutes, seconds, and milliseconds since midnight. It can read the
@@ -2074,8 +2070,6 @@ int QTime::elapsed() const
\reentrant
\brief The QDateTime class provides date and time functions.
- \ingroup time
- \mainclass
A QDateTime object contains a calendar date and a clock time (a
"datetime"). It is a combination of the QDate and QTime classes.
diff --git a/src/corelib/tools/qeasingcurve.cpp b/src/corelib/tools/qeasingcurve.cpp
index 5cc8080..e84e3f0 100644
--- a/src/corelib/tools/qeasingcurve.cpp
+++ b/src/corelib/tools/qeasingcurve.cpp
@@ -301,7 +301,7 @@
#ifndef QT_NO_DEBUG_STREAM
#include <QtCore/qdebug.h>
-#include <QtCore/QString>
+#include <QtCore/qstring.h>
#endif
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp
index 5e13794..21b73e4 100644
--- a/src/corelib/tools/qhash.cpp
+++ b/src/corelib/tools/qhash.cpp
@@ -485,7 +485,7 @@ void QHashData::checkSanity()
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QHash\<Key, T\> is one of Qt's generic \l{container classes}. It
@@ -1618,7 +1618,7 @@ void QHashData::checkSanity()
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QMultiHash\<Key, T\> is one of Qt's generic \l{container classes}.
diff --git a/doc/src/classes/qiterator.qdoc b/src/corelib/tools/qiterator.qdoc
index c767be3..c767be3 100644
--- a/doc/src/classes/qiterator.qdoc
+++ b/src/corelib/tools/qiterator.qdoc
diff --git a/src/corelib/tools/qline.cpp b/src/corelib/tools/qline.cpp
index e6ad9d1..02c1128 100644
--- a/src/corelib/tools/qline.cpp
+++ b/src/corelib/tools/qline.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QLine
- \ingroup multimedia
+ \ingroup painting
\brief The QLine class provides a two-dimensional vector using
integer precision.
@@ -309,7 +309,7 @@ QDataStream &operator>>(QDataStream &stream, QLine &line)
/*!
\class QLineF
- \ingroup multimedia
+ \ingroup painting
\brief The QLineF class provides a two-dimensional vector using
floating point precision.
diff --git a/src/corelib/tools/qlinkedlist.cpp b/src/corelib/tools/qlinkedlist.cpp
index e5c0145..39758ed 100644
--- a/src/corelib/tools/qlinkedlist.cpp
+++ b/src/corelib/tools/qlinkedlist.cpp
@@ -53,7 +53,7 @@ QLinkedListData QLinkedListData::shared_null = {
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QLinkedList\<T\> is one of Qt's generic \l{container classes}. It
diff --git a/src/corelib/tools/qlistdata.cpp b/src/corelib/tools/qlist.cpp
index 4885b43..0993681 100644
--- a/src/corelib/tools/qlistdata.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -289,7 +289,7 @@ void **QListData::erase(void **xi)
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QList\<T\> is one of Qt's generic \l{container classes}. It
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 6913141..c767c7e 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -1472,9 +1472,9 @@ QDataStream &operator>>(QDataStream &ds, QLocale &l)
\reentrant
\ingroup i18n
- \ingroup text
+ \ingroup string-processing
\ingroup shared
- \mainclass
+
QLocale is initialized with a language/country pair in its
constructor and offers number-to-string and string-to-number
diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp
index f212f62..6b27e97 100644
--- a/src/corelib/tools/qmap.cpp
+++ b/src/corelib/tools/qmap.cpp
@@ -194,7 +194,7 @@ void QMapData::dump()
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QMap\<Key, T\> is one of Qt's generic \l{container classes}. It
@@ -1317,7 +1317,7 @@ void QMapData::dump()
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QMultiMap\<Key, T\> is one of Qt's generic \l{container classes}.
diff --git a/doc/src/classes/qpair.qdoc b/src/corelib/tools/qpair.qdoc
index 9c8ac89..9c8ac89 100644
--- a/doc/src/classes/qpair.qdoc
+++ b/src/corelib/tools/qpair.qdoc
diff --git a/src/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp
index cba7fef..7c05eaa 100644
--- a/src/corelib/tools/qpoint.cpp
+++ b/src/corelib/tools/qpoint.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QPoint
- \ingroup multimedia
+ \ingroup painting
\brief The QPoint class defines a point in the plane using integer
precision.
@@ -380,7 +380,7 @@ QDebug operator<<(QDebug d, const QPointF &p)
/*!
\class QPointF
- \ingroup multimedia
+ \ingroup painting
\brief The QPointF class defines a point in the plane using
floating point precision.
diff --git a/src/corelib/tools/qqueue.cpp b/src/corelib/tools/qqueue.cpp
index 108f103..1c1e6d2 100644
--- a/src/corelib/tools/qqueue.cpp
+++ b/src/corelib/tools/qqueue.cpp
@@ -45,7 +45,7 @@
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QQueue\<T\> is one of Qt's generic \l{container classes}. It
diff --git a/src/corelib/tools/qrect.cpp b/src/corelib/tools/qrect.cpp
index eb493f0..bdd09a2 100644
--- a/src/corelib/tools/qrect.cpp
+++ b/src/corelib/tools/qrect.cpp
@@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QRect
- \ingroup multimedia
+ \ingroup painting
\brief The QRect class defines a rectangle in the plane using
integer precision.
@@ -1324,7 +1324,7 @@ QDebug operator<<(QDebug dbg, const QRect &r) {
/*!
\class QRectF
- \ingroup multimedia
+ \ingroup painting
\brief The QRectF class defines a rectangle in the plane using floating
point precision.
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index 8c3662a..bebf141 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -83,9 +83,8 @@ int qFindString(const QChar *haystack, int haystackLen, int from,
\brief The QRegExp class provides pattern matching using regular expressions.
\ingroup tools
- \ingroup misc
\ingroup shared
- \mainclass
+
\keyword regular expression
A regular expression, or "regexp", is a pattern for matching
diff --git a/doc/src/classes/qset.qdoc b/src/corelib/tools/qset.qdoc
index 8409e13..55baa18 100644
--- a/doc/src/classes/qset.qdoc
+++ b/src/corelib/tools/qset.qdoc
@@ -46,7 +46,7 @@
\ingroup tools
\ingroup shared
\reentrant
- \mainclass
+
QSet<T> is one of Qt's generic \l{container classes}. It stores
values in an unspecified order and provides very fast lookup of
diff --git a/src/corelib/tools/qshareddata.cpp b/src/corelib/tools/qshareddata.cpp
index 9f49898..70290d8 100644
--- a/src/corelib/tools/qshareddata.cpp
+++ b/src/corelib/tools/qshareddata.cpp
@@ -44,245 +44,242 @@
QT_BEGIN_NAMESPACE
/*!
- \class QSharedData
- \brief The QSharedData class is a base class for shared data objects.
- \reentrant
- \ingroup misc
+ \class QSharedData
+ \brief The QSharedData class is a base class for shared data objects.
+ \reentrant
- QSharedData is designed to be used with QSharedDataPointer or
- QExplicitlySharedDataPointer to implement custom \l{implicitly
- shared} or explicitly shared classes. QSharedData provides
- \l{thread-safe} reference counting.
+ QSharedData is designed to be used with QSharedDataPointer or
+ QExplicitlySharedDataPointer to implement custom \l{implicitly
+ shared} or explicitly shared classes. QSharedData provides
+ \l{thread-safe} reference counting.
- See QSharedDataPointer and QExplicitlySharedDataPointer for details.
+ See QSharedDataPointer and QExplicitlySharedDataPointer for details.
*/
/*! \fn QSharedData::QSharedData()
- Constructs a QSharedData object with a reference count of 0.
+ Constructs a QSharedData object with a reference count of 0.
*/
/*! \fn QSharedData::QSharedData(const QSharedData& other)
- Constructs a QSharedData object with reference count 0.
- \a other is ignored.
+ Constructs a QSharedData object with reference count 0.
+ \a other is ignored.
*/
/*!
- \class QSharedDataPointer
- \brief The QSharedDataPointer class represents a pointer to an implicitly shared object.
- \since 4.0
- \reentrant
- \ingroup misc
- \mainclass
+ \class QSharedDataPointer
+ \brief The QSharedDataPointer class represents a pointer to an implicitly shared object.
+ \since 4.0
+ \reentrant
- QSharedDataPointer\<T\> makes writing your own \l {implicitly
- shared} classes easy. QSharedDataPointer implements \l {thread-safe}
- reference counting, ensuring that adding QSharedDataPointers to your
- \l {reentrant} classes won't make them non-reentrant.
+ QSharedDataPointer\<T\> makes writing your own \l {implicitly
+ shared} classes easy. QSharedDataPointer implements \l {thread-safe}
+ reference counting, ensuring that adding QSharedDataPointers to your
+ \l {reentrant} classes won't make them non-reentrant.
- \l {Implicit sharing} is used by many Qt classes to combine the
- speed and memory efficiency of pointers with the ease of use of
- classes. See the \l{Shared Classes} page for more information.
+ \l {Implicit sharing} is used by many Qt classes to combine the
+ speed and memory efficiency of pointers with the ease of use of
+ classes. See the \l{Shared Classes} page for more information.
- \target Employee example
- Suppose you want to make an \c Employee class implicitly shared. The
- procedure is:
+ \target Employee example
+ Suppose you want to make an \c Employee class implicitly shared. The
+ procedure is:
- \list
+ \list
- \o Define the class \c Employee to have a single data member of
+ \o Define the class \c Employee to have a single data member of
type \c {QSharedDataPointer<EmployeeData>}.
- \o Define the \c EmployeeData class derived from \l QSharedData to
+ \o Define the \c EmployeeData class derived from \l QSharedData to
contain all the data members you would normally have put in the
\c Employee class.
- \endlist
-
- To show this in practice, we review the source code for the
- implicitly shared \c Employee class. In the header file we define the
- two classes \c Employee and \c EmployeeData.
-
- \snippet doc/src/snippets/sharedemployee/employee.h 0
-
- In class \c Employee, note the single data member, a \e {d pointer}
- of type \c {QSharedDataPointer<EmployeeData>}. All accesses of
- employee data must go through the \e {d pointer's} \c
- {operator->()}. For write accesses, \c {operator->()} will
- automatically call detach(), which creates a copy of the shared data
- object if the shared data object's reference count is greater than
- 1. This ensures that writes to one \c Employee object don't affect
- any other \c Employee objects that share the same \c EmployeeData
- object.
-
- Class \c EmployeeData inherits QSharedData, which provides the
- \e{behind the scenes} reference counter. \c EmployeeData has a default
- constructor, a copy constructor, and a destructor. Normally, trivial
- implementations of these are all that is needed in the \e {data}
- class for an implicitly shared class.
-
- Implementing the two constructors for class \c Employee is also
- straightforward. Both create a new instance of \c EmployeeData
- and assign it to the \e{d pointer} .
-
- \snippet doc/src/snippets/sharedemployee/employee.h 1
- \codeline
- \snippet doc/src/snippets/sharedemployee/employee.h 2
-
- Note that class \c Employee also has a trivial copy constructor
- defined, which is not strictly required in this case.
-
- \snippet doc/src/snippets/sharedemployee/employee.h 7
-
- The copy constructor is not strictly required here, because class \c
- EmployeeData is included in the same file as class \c Employee
- (\c{employee.h}). However, including the private subclass of
- QSharedData in the same file as the public class containing the
- QSharedDataPointer is not typical. Normally, the idea is to hide the
- private subclass of QSharedData from the user by putting it in a
- separate file which would not be included in the public file. In
- this case, we would normally put class \c EmployeeData in a separate
- file, which would \e{not} be included in \c{employee.h}. Instead, we
- would just predeclare the private subclass \c EmployeeData in \c
- {employee.h} this way:
-
- \code
- class EmployeeData;
- \endcode
-
- If we had done it that way here, the copy constructor shown would be
- required. Since the copy constructor is trivial, you might as well
- just always include it.
-
- Behind the scenes, QSharedDataPointer automatically increments the
- reference count whenever an \c Employee object is copied, assigned,
- or passed as a parameter. It decrements the reference count whenever
- an \c Employee object is deleted or goes out of scope. The shared
- \c EmployeeData object is deleted automatically if and when the
- reference count reaches 0.
-
- In a non-const member function of \c Employee, whenever the \e {d
- pointer} is dereferenced, QSharedDataPointer automatically calls
- detach() to ensure that the function operates on its own copy of the
- data.
-
- \snippet doc/src/snippets/sharedemployee/employee.h 3
- \codeline
- \snippet doc/src/snippets/sharedemployee/employee.h 4
-
- Note that if detach() is called more than once in a member function
- due to multiple dereferences of the \e {d pointer}, detach() will
- only create a copy of the shared data the first time it is called,
- if at all, because on the second and subsequent calls of detach(),
- the reference count will be 1 again.
-
- But note that in the second \c Employee constructor, which takes an
- employee ID and a name, both setId() and setName() are called, but
- they don't cause \e{copy on write}, because the reference count for
- the newly constructed \c EmployeeData object has just been set to 1.
-
- In \c Employee's \e const member functions, dereferencing the \e {d
- pointer} does \e not cause detach() to be called.
-
- \snippet doc/src/snippets/sharedemployee/employee.h 5
- \codeline
- \snippet doc/src/snippets/sharedemployee/employee.h 6
-
- Notice that there is no need to implement a copy constructor or an
- assignment operator for the \c Employee class, because the copy
- constructor and assignment operator provided by the C++ compiler
- will do the \e{member by member} shallow copy required. The only
- member to copy is the \e {d pointer}, which is a QSharedDataPointer,
- whose \c {operator=()} just increments the reference count of the
- shared \c EmployeeData object.
-
- \target Implicit vs Explicit Sharing
- \section1 Implicit vs Explicit Sharing
-
- Implicit sharing might not be right for the \c Employee class.
- Consider a simple example that creates two instances of the
- implicitly shared \c Employee class.
-
- \snippet doc/src/snippets/sharedemployee/main.cpp 0
-
- After the second employee e2 is created and e1 is assigned to it,
- both \c e1 and \c e2 refer to Albrecht Durer, employee 1001. Both \c
- Employee objects point to the same instance of \c EmployeeData,
- which has reference count 2. Then \c {e1.setName("Hans Holbein")} is
- called to change the employee name, but because the reference count
- is greater than 1, a \e{copy on write} is performed before the name
- is changed. Now \c e1 and \c e2 point to different \c EmployeeData
- objects. They have different names, but both have ID 1001, which is
- probably not what you want. You can, of course, just continue with
- \c {e1.setId(1002)}, if you really mean to create a second, unique
- employee, but if you only want to change the employee's name
- everywhere, consider using \l {QExplicitlySharedDataPointer}
- {explicit sharing} in the \c Employee class instead of implicit
- sharing.
-
- If you declare the \e {d pointer} in the \c Employee class to be
- \c {QExplicitlySharedDataPointer<EmployeeData>}, then explicit
- sharing is used and \e{copy on write} operations are not performed
- automatically (i.e. detach() is not called in non-const
- functions). In that case, after \c {e1.setName("Hans Holbein")}, the
- employee's name has been changed, but both e1 and e2 still refer to
- the same instance of \c EmployeeData, so there is only one employee
- with ID 1001.
-
- In the member function documentation, \e{d pointer} always refers
- to the internal pointer to the shared data object.
-
- \sa QSharedData, QExplicitlySharedDataPointer
+ \endlist
+
+ To show this in practice, we review the source code for the
+ implicitly shared \c Employee class. In the header file we define the
+ two classes \c Employee and \c EmployeeData.
+
+ \snippet doc/src/snippets/sharedemployee/employee.h 0
+
+ In class \c Employee, note the single data member, a \e {d pointer}
+ of type \c {QSharedDataPointer<EmployeeData>}. All accesses of
+ employee data must go through the \e {d pointer's} \c
+ {operator->()}. For write accesses, \c {operator->()} will
+ automatically call detach(), which creates a copy of the shared data
+ object if the shared data object's reference count is greater than
+ 1. This ensures that writes to one \c Employee object don't affect
+ any other \c Employee objects that share the same \c EmployeeData
+ object.
+
+ Class \c EmployeeData inherits QSharedData, which provides the
+ \e{behind the scenes} reference counter. \c EmployeeData has a default
+ constructor, a copy constructor, and a destructor. Normally, trivial
+ implementations of these are all that is needed in the \e {data}
+ class for an implicitly shared class.
+
+ Implementing the two constructors for class \c Employee is also
+ straightforward. Both create a new instance of \c EmployeeData
+ and assign it to the \e{d pointer} .
+
+ \snippet doc/src/snippets/sharedemployee/employee.h 1
+ \codeline
+ \snippet doc/src/snippets/sharedemployee/employee.h 2
+
+ Note that class \c Employee also has a trivial copy constructor
+ defined, which is not strictly required in this case.
+
+ \snippet doc/src/snippets/sharedemployee/employee.h 7
+
+ The copy constructor is not strictly required here, because class \c
+ EmployeeData is included in the same file as class \c Employee
+ (\c{employee.h}). However, including the private subclass of
+ QSharedData in the same file as the public class containing the
+ QSharedDataPointer is not typical. Normally, the idea is to hide the
+ private subclass of QSharedData from the user by putting it in a
+ separate file which would not be included in the public file. In
+ this case, we would normally put class \c EmployeeData in a separate
+ file, which would \e{not} be included in \c{employee.h}. Instead, we
+ would just predeclare the private subclass \c EmployeeData in \c
+ {employee.h} this way:
+
+ \code
+ class EmployeeData;
+ \endcode
+
+ If we had done it that way here, the copy constructor shown would be
+ required. Since the copy constructor is trivial, you might as well
+ just always include it.
+
+ Behind the scenes, QSharedDataPointer automatically increments the
+ reference count whenever an \c Employee object is copied, assigned,
+ or passed as a parameter. It decrements the reference count whenever
+ an \c Employee object is deleted or goes out of scope. The shared
+ \c EmployeeData object is deleted automatically if and when the
+ reference count reaches 0.
+
+ In a non-const member function of \c Employee, whenever the \e {d
+ pointer} is dereferenced, QSharedDataPointer automatically calls
+ detach() to ensure that the function operates on its own copy of the
+ data.
+
+ \snippet doc/src/snippets/sharedemployee/employee.h 3
+ \codeline
+ \snippet doc/src/snippets/sharedemployee/employee.h 4
+
+ Note that if detach() is called more than once in a member function
+ due to multiple dereferences of the \e {d pointer}, detach() will
+ only create a copy of the shared data the first time it is called,
+ if at all, because on the second and subsequent calls of detach(),
+ the reference count will be 1 again.
+
+ But note that in the second \c Employee constructor, which takes an
+ employee ID and a name, both setId() and setName() are called, but
+ they don't cause \e{copy on write}, because the reference count for
+ the newly constructed \c EmployeeData object has just been set to 1.
+
+ In \c Employee's \e const member functions, dereferencing the \e {d
+ pointer} does \e not cause detach() to be called.
+
+ \snippet doc/src/snippets/sharedemployee/employee.h 5
+ \codeline
+ \snippet doc/src/snippets/sharedemployee/employee.h 6
+
+ Notice that there is no need to implement a copy constructor or an
+ assignment operator for the \c Employee class, because the copy
+ constructor and assignment operator provided by the C++ compiler
+ will do the \e{member by member} shallow copy required. The only
+ member to copy is the \e {d pointer}, which is a QSharedDataPointer,
+ whose \c {operator=()} just increments the reference count of the
+ shared \c EmployeeData object.
+
+ \target Implicit vs Explicit Sharing
+ \section1 Implicit vs Explicit Sharing
+
+ Implicit sharing might not be right for the \c Employee class.
+ Consider a simple example that creates two instances of the
+ implicitly shared \c Employee class.
+
+ \snippet doc/src/snippets/sharedemployee/main.cpp 0
+
+ After the second employee e2 is created and e1 is assigned to it,
+ both \c e1 and \c e2 refer to Albrecht Durer, employee 1001. Both \c
+ Employee objects point to the same instance of \c EmployeeData,
+ which has reference count 2. Then \c {e1.setName("Hans Holbein")} is
+ called to change the employee name, but because the reference count
+ is greater than 1, a \e{copy on write} is performed before the name
+ is changed. Now \c e1 and \c e2 point to different \c EmployeeData
+ objects. They have different names, but both have ID 1001, which is
+ probably not what you want. You can, of course, just continue with
+ \c {e1.setId(1002)}, if you really mean to create a second, unique
+ employee, but if you only want to change the employee's name
+ everywhere, consider using \l {QExplicitlySharedDataPointer}
+ {explicit sharing} in the \c Employee class instead of implicit
+ sharing.
+
+ If you declare the \e {d pointer} in the \c Employee class to be
+ \c {QExplicitlySharedDataPointer<EmployeeData>}, then explicit
+ sharing is used and \e{copy on write} operations are not performed
+ automatically (i.e. detach() is not called in non-const
+ functions). In that case, after \c {e1.setName("Hans Holbein")}, the
+ employee's name has been changed, but both e1 and e2 still refer to
+ the same instance of \c EmployeeData, so there is only one employee
+ with ID 1001.
+
+ In the member function documentation, \e{d pointer} always refers
+ to the internal pointer to the shared data object.
+
+ \sa QSharedData, QExplicitlySharedDataPointer
*/
/*! \fn T& QSharedDataPointer::operator*()
- Provides access to the shared data object's members.
- This function calls detach().
+ Provides access to the shared data object's members.
+ This function calls detach().
*/
/*! \fn const T& QSharedDataPointer::operator*() const
- Provides const access to the shared data object's members.
- This function does \e not call detach().
+ Provides const access to the shared data object's members.
+ This function does \e not call detach().
*/
/*! \fn T* QSharedDataPointer::operator->()
- Provides access to the shared data object's members.
- This function calls detach().
+ Provides access to the shared data object's members.
+ This function calls detach().
*/
/*! \fn const T* QSharedDataPointer::operator->() const
- Provides const access to the shared data object's members.
- This function does \e not call detach().
+ Provides const access to the shared data object's members.
+ This function does \e not call detach().
*/
/*! \fn QSharedDataPointer::operator T*()
- Returns a pointer to the shared data object.
- This function calls detach().
+ Returns a pointer to the shared data object.
+ This function calls detach().
- \sa data(), constData()
+ \sa data(), constData()
*/
/*! \fn QSharedDataPointer::operator const T*() const
- Returns a pointer to the shared data object.
- This function does \e not call detach().
+ Returns a pointer to the shared data object.
+ This function does \e not call detach().
*/
/*! \fn T* QSharedDataPointer::data()
- Returns a pointer to the shared data object.
- This function calls detach().
+ Returns a pointer to the shared data object.
+ This function calls detach().
- \sa constData()
+ \sa constData()
*/
/*! \fn const T* QSharedDataPointer::data() const
- Returns a pointer to the shared data object.
- This function does \e not call detach().
+ Returns a pointer to the shared data object.
+ This function does \e not call detach().
*/
/*! \fn const T* QSharedDataPointer::constData() const
- Returns a const pointer to the shared data object.
- This function does \e not call detach().
+ Returns a const pointer to the shared data object.
+ This function does \e not call detach().
- \sa data()
+ \sa data()
*/
/*! \fn void QSharedDataPointer::swap(QSharedDataPointer &other)
@@ -291,154 +288,152 @@ QT_BEGIN_NAMESPACE
*/
/*! \fn bool QSharedDataPointer::operator==(const QSharedDataPointer<T>& other) const
- Returns true if \a other and \e this have the same \e{d pointer}.
- This function does \e not call detach().
+ Returns true if \a other and \e this have the same \e{d pointer}.
+ This function does \e not call detach().
*/
/*! \fn bool QSharedDataPointer::operator!=(const QSharedDataPointer<T>& other) const
- Returns true if \a other and \e this do \e not have the same
- \e{d pointer}. This function does \e not call detach().
+ Returns true if \a other and \e this do \e not have the same
+ \e{d pointer}. This function does \e not call detach().
*/
/*! \fn QSharedDataPointer::QSharedDataPointer()
- Constructs a QSharedDataPointer initialized with a null \e{d pointer}.
+ Constructs a QSharedDataPointer initialized with a null \e{d pointer}.
*/
/*! \fn QSharedDataPointer::~QSharedDataPointer()
- Decrements the reference count of the shared data object.
- If the reference count becomes 0, the shared data object
- is deleted. \e This is then destroyed.
+ Decrements the reference count of the shared data object.
+ If the reference count becomes 0, the shared data object
+ is deleted. \e This is then destroyed.
*/
/*! \fn QSharedDataPointer::QSharedDataPointer(T* sharedData)
- Constructs a QSharedDataPointer with \e{d pointer} set to
- \a sharedData and increments \a{sharedData}'s reference count.
+ Constructs a QSharedDataPointer with \e{d pointer} set to
+ \a sharedData and increments \a{sharedData}'s reference count.
*/
/*! \fn QSharedDataPointer::QSharedDataPointer(const QSharedDataPointer<T>& other)
- Sets the \e{d pointer} of \e this to the \e{d pointer} in
- \a other and increments the reference count of the shared
- data object.
+ Sets the \e{d pointer} of \e this to the \e{d pointer} in
+ \a other and increments the reference count of the shared
+ data object.
*/
/*! \fn QSharedDataPointer<T>& QSharedDataPointer::operator=(const QSharedDataPointer<T>& other)
- Sets the \e{d pointer} of \e this to the \e{d pointer} of
- \a other and increments the reference count of the shared
- data object. The reference count of the old shared data
- object of \e this is decremented. If the reference count
- of the old shared data object becomes 0, the old shared
- data object is deleted.
+ Sets the \e{d pointer} of \e this to the \e{d pointer} of
+ \a other and increments the reference count of the shared
+ data object. The reference count of the old shared data
+ object of \e this is decremented. If the reference count
+ of the old shared data object becomes 0, the old shared
+ data object is deleted.
*/
/*! \fn QSharedDataPointer& QSharedDataPointer::operator=(T* sharedData)
- Sets the \e{d pointer} og \e this to \a sharedData and increments
- \a{sharedData}'s reference count. The reference count of the old
- shared data object of \e this is decremented. If the reference
- count of the old shared data object becomes 0, the old shared data
- object is deleted.
+ Sets the \e{d pointer} og \e this to \a sharedData and increments
+ \a{sharedData}'s reference count. The reference count of the old
+ shared data object of \e this is decremented. If the reference
+ count of the old shared data object becomes 0, the old shared data
+ object is deleted.
*/
/*! \fn bool QSharedDataPointer::operator!() const
- Returns true if the \e{d pointer} of \e this is null.
+ Returns true if the \e{d pointer} of \e this is null.
*/
/*! \fn void QSharedDataPointer::detach()
- If the shared data object's reference count is greater than 1, this
- function creates a deep copy of the shared data object and sets the
- \e{d pointer} of \e this to the copy.
-
- This function is called automatically by non-const member
- functions of QSharedDataPointer if \e{copy on write} is
- required. You don't need to call it yourself.
+ If the shared data object's reference count is greater than 1, this
+ function creates a deep copy of the shared data object and sets the
+ \e{d pointer} of \e this to the copy.
+
+ This function is called automatically by non-const member
+ functions of QSharedDataPointer if \e{copy on write} is
+ required. You don't need to call it yourself.
*/
/*! \fn T *QSharedDataPointer::clone()
\since 4.5
- Creates and returns a deep copy of the current data. This function
- is called by detach() when the reference count is greater than 1 in
- order to create the new copy. This function uses the \e {operator
- new} and calls the copy constructor of the type T.
+ Creates and returns a deep copy of the current data. This function
+ is called by detach() when the reference count is greater than 1 in
+ order to create the new copy. This function uses the \e {operator
+ new} and calls the copy constructor of the type T.
- This function is provided so that you may support "virtual copy
- constructors" for your own types. In order to so, you should declare
- a template-specialization of this function for your own type, like
- the example below:
+ This function is provided so that you may support "virtual copy
+ constructors" for your own types. In order to so, you should declare
+ a template-specialization of this function for your own type, like
+ the example below:
- \code
+ \code
template<>
EmployeeData *QSharedDataPointer<EmployeeData>::clone()
{
return d->clone();
}
- \endcode
+ \endcode
- In the example above, the template specialization for the clone()
- function calls the \e {EmployeeData::clone()} virtual function. A
- class derived from EmployeeData could override that function and
- return the proper polymorphic type.
+ In the example above, the template specialization for the clone()
+ function calls the \e {EmployeeData::clone()} virtual function. A
+ class derived from EmployeeData could override that function and
+ return the proper polymorphic type.
*/
/*!
- \class QExplicitlySharedDataPointer
- \brief The QExplicitlySharedDataPointer class represents a pointer to an explicitly shared object.
- \since 4.4
- \reentrant
- \ingroup misc
- \mainclass
-
- QExplicitlySharedDataPointer\<T\> makes writing your own explicitly
- shared classes easy. QExplicitlySharedDataPointer implements
- \l {thread-safe} reference counting, ensuring that adding
- QExplicitlySharedDataPointers to your \l {reentrant} classes won't
- make them non-reentrant.
-
- Except for one big difference, QExplicitlySharedDataPointer is just
- like QSharedDataPointer. The big difference is that member functions
- of QExplicitlySharedDataPointer \e{do not} do the automatic
- \e{copy on write} operation (detach()) that non-const members of
- QSharedDataPointer do before allowing the shared data object to be
- modified. There is a detach() function available, but if you really
- want to detach(), you have to call it yourself. This means that
- QExplicitlySharedDataPointers behave like regular C++ pointers,
- except that by doing reference counting and not deleting the shared
- data object until the reference count is 0, they avoid the dangling
- pointer problem.
-
- It is instructive to compare QExplicitlySharedDataPointer with
- QSharedDataPointer by way of an example. Consider the \l {Employee
- example} in QSharedDataPointer, modified to use explicit sharing as
- explained in the discussion \l {Implicit vs Explicit Sharing}.
-
- Note that if you use this class but find you are calling detach() a
- lot, you probably should be using QSharedDataPointer instead.
-
- In the member function documentation, \e{d pointer} always refers
- to the internal pointer to the shared data object.
-
- \sa QSharedData, QSharedDataPointer
+ \class QExplicitlySharedDataPointer
+ \brief The QExplicitlySharedDataPointer class represents a pointer to an explicitly shared object.
+ \since 4.4
+ \reentrant
+
+ QExplicitlySharedDataPointer\<T\> makes writing your own explicitly
+ shared classes easy. QExplicitlySharedDataPointer implements
+ \l {thread-safe} reference counting, ensuring that adding
+ QExplicitlySharedDataPointers to your \l {reentrant} classes won't
+ make them non-reentrant.
+
+ Except for one big difference, QExplicitlySharedDataPointer is just
+ like QSharedDataPointer. The big difference is that member functions
+ of QExplicitlySharedDataPointer \e{do not} do the automatic
+ \e{copy on write} operation (detach()) that non-const members of
+ QSharedDataPointer do before allowing the shared data object to be
+ modified. There is a detach() function available, but if you really
+ want to detach(), you have to call it yourself. This means that
+ QExplicitlySharedDataPointers behave like regular C++ pointers,
+ except that by doing reference counting and not deleting the shared
+ data object until the reference count is 0, they avoid the dangling
+ pointer problem.
+
+ It is instructive to compare QExplicitlySharedDataPointer with
+ QSharedDataPointer by way of an example. Consider the \l {Employee
+ example} in QSharedDataPointer, modified to use explicit sharing as
+ explained in the discussion \l {Implicit vs Explicit Sharing}.
+
+ Note that if you use this class but find you are calling detach() a
+ lot, you probably should be using QSharedDataPointer instead.
+
+ In the member function documentation, \e{d pointer} always refers
+ to the internal pointer to the shared data object.
+
+ \sa QSharedData, QSharedDataPointer
*/
/*! \fn T& QExplicitlySharedDataPointer::operator*() const
- Provides access to the shared data object's members.
+ Provides access to the shared data object's members.
*/
/*! \fn T* QExplicitlySharedDataPointer::operator->()
- Provides access to the shared data object's members.
+ Provides access to the shared data object's members.
*/
/*! \fn const T* QExplicitlySharedDataPointer::operator->() const
- Provides const access to the shared data object's members.
+ Provides const access to the shared data object's members.
*/
/*! \fn T* QExplicitlySharedDataPointer::data() const
- Returns a pointer to the shared data object.
+ Returns a pointer to the shared data object.
*/
/*! \fn const T* QExplicitlySharedDataPointer::constData() const
- Returns a const pointer to the shared data object.
+ Returns a const pointer to the shared data object.
- \sa data()
+ \sa data()
*/
/*! \fn void QExplicitlySharedDataPointer::swap(QExplicitlySharedDataPointer &other)
@@ -447,114 +442,114 @@ QT_BEGIN_NAMESPACE
*/
/*! \fn bool QExplicitlySharedDataPointer::operator==(const QExplicitlySharedDataPointer<T>& other) const
- Returns true if \a other and \e this have the same \e{d pointer}.
+ Returns true if \a other and \e this have the same \e{d pointer}.
*/
/*! \fn bool QExplicitlySharedDataPointer::operator==(const T* ptr) const
- Returns true if the \e{d pointer} of \e this is \a ptr.
+ Returns true if the \e{d pointer} of \e this is \a ptr.
*/
/*! \fn bool QExplicitlySharedDataPointer::operator!=(const QExplicitlySharedDataPointer<T>& other) const
- Returns true if \a other and \e this do \e not have the same
- \e{d pointer}.
+ Returns true if \a other and \e this do \e not have the same
+ \e{d pointer}.
*/
/*! \fn bool QExplicitlySharedDataPointer::operator!=(const T* ptr) const
- Returns true if the \e{d pointer} of \e this is \e not \a ptr.
+ Returns true if the \e{d pointer} of \e this is \e not \a ptr.
*/
/*! \fn QExplicitlySharedDataPointer::QExplicitlySharedDataPointer()
- Constructs a QExplicitlySharedDataPointer initialized with a null
- \e{d pointer}.
+ Constructs a QExplicitlySharedDataPointer initialized with a null
+ \e{d pointer}.
*/
/*! \fn QExplicitlySharedDataPointer::~QExplicitlySharedDataPointer()
- Decrements the reference count of the shared data object.
- If the reference count becomes 0, the shared data object
- is deleted. \e This is then destroyed.
+ Decrements the reference count of the shared data object.
+ If the reference count becomes 0, the shared data object
+ is deleted. \e This is then destroyed.
*/
/*! \fn QExplicitlySharedDataPointer::QExplicitlySharedDataPointer(T* sharedData)
- Constructs a QExplicitlySharedDataPointer with \e{d pointer}
- set to \a sharedData and increments \a{sharedData}'s reference
- count.
+ Constructs a QExplicitlySharedDataPointer with \e{d pointer}
+ set to \a sharedData and increments \a{sharedData}'s reference
+ count.
*/
/*! \fn QExplicitlySharedDataPointer::QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<T>& other)
- This standard copy constructor sets the \e {d pointer} of \e this to
- the \e {d pointer} in \a other and increments the reference count of
- the shared data object.
+ This standard copy constructor sets the \e {d pointer} of \e this to
+ the \e {d pointer} in \a other and increments the reference count of
+ the shared data object.
*/
/*! \fn QExplicitlySharedDataPointer::QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<X>& other)
- This copy constructor is different in that it allows \a other to be
- a different type of explicitly shared data pointer but one that has
- a compatible shared data object. It performs a static cast of the
- \e{d pointer} in \a other and sets the \e {d pointer} of \e this to
- the converted \e{d pointer}. It increments the reference count of
- the shared data object.
- */
+ This copy constructor is different in that it allows \a other to be
+ a different type of explicitly shared data pointer but one that has
+ a compatible shared data object. It performs a static cast of the
+ \e{d pointer} in \a other and sets the \e {d pointer} of \e this to
+ the converted \e{d pointer}. It increments the reference count of
+ the shared data object.
+*/
/*! \fn QExplicitlySharedDataPointer<T>& QExplicitlySharedDataPointer::operator=(const QExplicitlySharedDataPointer<T>& other)
- Sets the \e{d pointer} of \e this to the \e{d pointer} of
- \a other and increments the reference count of the shared
- data object. The reference count of the old shared data
- object of \e this is decremented. If the reference count
- of the old shared data object becomes 0, the old shared
- data object is deleted.
+ Sets the \e{d pointer} of \e this to the \e{d pointer} of
+ \a other and increments the reference count of the shared
+ data object. The reference count of the old shared data
+ object of \e this is decremented. If the reference count
+ of the old shared data object becomes 0, the old shared
+ data object is deleted.
*/
/*! \fn QExplicitlySharedDataPointer& QExplicitlySharedDataPointer::operator=(T* sharedData)
- Sets the \e{d pointer} of \e this to \a sharedData and
- increments \a{sharedData}'s reference count. The reference
- count of the old shared data object of \e this is decremented.
- If the reference count of the old shared data object becomes
- 0, the old shared data object is deleted.
+ Sets the \e{d pointer} of \e this to \a sharedData and
+ increments \a{sharedData}'s reference count. The reference
+ count of the old shared data object of \e this is decremented.
+ If the reference count of the old shared data object becomes
+ 0, the old shared data object is deleted.
*/
/*! \fn void QExplicitlySharedDataPointer::reset()
- Resets \e this to be null. i.e., this function sets the
- \e{d pointer} of \e this to 0, but first it decrements
- the reference count of the shared data object and deletes
- the shared data object if the reference count became 0.
+ Resets \e this to be null. i.e., this function sets the
+ \e{d pointer} of \e this to 0, but first it decrements
+ the reference count of the shared data object and deletes
+ the shared data object if the reference count became 0.
*/
/*! \fn QExplicitlySharedDataPointer::operator bool () const
- Returns true if the \e{d pointer} of \e this is \e not null.
+ Returns true if the \e{d pointer} of \e this is \e not null.
*/
/*! \fn bool QExplicitlySharedDataPointer::operator!() const
- Returns true if the \e{d pointer} of \e this is null.
+ Returns true if the \e{d pointer} of \e this is null.
*/
/*! \fn void QExplicitlySharedDataPointer::detach()
- If the shared data object's reference count is greater than 1, this
- function creates a deep copy of the shared data object and sets the
- \e{d pointer} of \e this to the copy.
+ If the shared data object's reference count is greater than 1, this
+ function creates a deep copy of the shared data object and sets the
+ \e{d pointer} of \e this to the copy.
- Because QExplicitlySharedDataPointer does not do the automatic
- \e{copy on write} operations that members of QSharedDataPointer do,
- detach() is \e not called automatically anywhere in the member
- functions of this class. If you find that you are calling detach()
- everywhere in your code, consider using QSharedDataPointer instead.
+ Because QExplicitlySharedDataPointer does not do the automatic
+ \e{copy on write} operations that members of QSharedDataPointer do,
+ detach() is \e not called automatically anywhere in the member
+ functions of this class. If you find that you are calling detach()
+ everywhere in your code, consider using QSharedDataPointer instead.
*/
/*! \fn T *QExplicitlySharedDataPointer::clone()
\since 4.5
- Creates and returns a deep copy of the current data. This function
- is called by detach() when the reference count is greater than 1 in
- order to create the new copy. This function uses the \e {operator
- new} and calls the copy constructor of the type T.
+ Creates and returns a deep copy of the current data. This function
+ is called by detach() when the reference count is greater than 1 in
+ order to create the new copy. This function uses the \e {operator
+ new} and calls the copy constructor of the type T.
- See QSharedDataPointer::clone() for an explanation of how to use it.
+ See QSharedDataPointer::clone() for an explanation of how to use it.
*/
/*!
- \typedef QExplicitlySharedDataPointer::Type
+ \typedef QExplicitlySharedDataPointer::Type
- This is the type of the shared data object. The \e{d pointer}
- points to an object of this type.
- */
+ This is the type of the shared data object. The \e{d pointer}
+ points to an object of this type.
+*/
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp
index 60c7db4..4e2c206 100644
--- a/src/corelib/tools/qsharedpointer.cpp
+++ b/src/corelib/tools/qsharedpointer.cpp
@@ -50,7 +50,6 @@
\since 4.5
\reentrant
- \ingroup misc
The QSharedPointer is an automatic, shared pointer in C++. It
behaves exactly like a normal pointer for normal purposes,
@@ -358,7 +357,6 @@
\brief The QWeakPointer class holds a weak reference to a shared pointer
\since 4.5
\reentrant
- \ingroup misc
The QWeakPointer is an automatic weak reference to a
pointer in C++. It cannot be used to dereference the pointer
@@ -1212,7 +1210,7 @@
#include <qmutex.h>
#if !defined(QT_NO_QOBJECT)
-#include "../kernel/qobject_p.h"
+#include "private/qobject_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/tools/qsize.cpp b/src/corelib/tools/qsize.cpp
index 6168fe9..a165917 100644
--- a/src/corelib/tools/qsize.cpp
+++ b/src/corelib/tools/qsize.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QSize
- \ingroup multimedia
+ \ingroup painting
\brief The QSize class defines the size of a two-dimensional
object using integer point precision.
@@ -432,7 +432,7 @@ QDebug operator<<(QDebug dbg, const QSize &s) {
\brief The QSizeF class defines the size of a two-dimensional object
using floating point precision.
- \ingroup multimedia
+ \ingroup painting
A size is specified by a width() and a height(). It can be set in
the constructor and changed using the setWidth(), setHeight(), or
diff --git a/src/corelib/tools/qstack.cpp b/src/corelib/tools/qstack.cpp
index f89149a..f97e546 100644
--- a/src/corelib/tools/qstack.cpp
+++ b/src/corelib/tools/qstack.cpp
@@ -45,7 +45,7 @@
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QStack\<T\> is one of Qt's generic \l{container classes}. It implements
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index dc23142..1c513c3 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -359,7 +359,7 @@ const QString::Null QString::null = { };
\internal
- \ingroup text
+ \ingroup string-processing
When you get an object of type QCharRef, if you can assign to it,
the assignment will apply to the character in the string from
@@ -381,8 +381,8 @@ const QString::Null QString::null = { };
\ingroup tools
\ingroup shared
- \ingroup text
- \mainclass
+ \ingroup string-processing
+
QString stores a string of 16-bit \l{QChar}s, where each QChar
corresponds one Unicode 4.0 character. (Unicode characters
@@ -6939,7 +6939,7 @@ QString QString::fromRawData(const QChar *unicode, int size)
/*! \class QLatin1String
\brief The QLatin1String class provides a thin wrapper around an ASCII/Latin-1 encoded string literal.
- \ingroup text
+ \ingroup string-processing
\reentrant
Many of QString's member functions are overloaded to accept
@@ -7561,7 +7561,7 @@ QDataStream &operator>>(QDataStream &in, QString &str)
\brief The QStringRef class provides a thin wrapper around QString substrings.
\reentrant
\ingroup tools
- \ingroup text
+ \ingroup string-processing
QStringRef provides a read-only subset of the QString API.
diff --git a/src/corelib/tools/qstringbuilder.cpp b/src/corelib/tools/qstringbuilder.cpp
index 344e95b..04fbb93 100644
--- a/src/corelib/tools/qstringbuilder.cpp
+++ b/src/corelib/tools/qstringbuilder.cpp
@@ -52,8 +52,8 @@
\ingroup tools
\ingroup shared
- \ingroup text
- \mainclass
+ \ingroup string-processing
+
Unlike \c QLatin1String, a \c QLatin1Literal can retrieve its size
without iterating over the literal.
@@ -92,8 +92,8 @@
\ingroup tools
\ingroup shared
- \ingroup text
- \mainclass
+ \ingroup string-processing
+
To build a QString by multiple concatenations, QString::operator+()
is typically used. This causes \e{n - 1} reallocations when building
diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp
index 952609e..231f74e 100644
--- a/src/corelib/tools/qstringlist.cpp
+++ b/src/corelib/tools/qstringlist.cpp
@@ -77,8 +77,8 @@ QT_BEGIN_NAMESPACE
\ingroup tools
\ingroup shared
- \ingroup text
- \mainclass
+ \ingroup string-processing
+
\reentrant
QStringList inherits from QList<QString>. Like QList, QStringList is
diff --git a/src/corelib/tools/qstringmatcher.cpp b/src/corelib/tools/qstringmatcher.cpp
index 75e1d45..8eb8238 100644
--- a/src/corelib/tools/qstringmatcher.cpp
+++ b/src/corelib/tools/qstringmatcher.cpp
@@ -129,7 +129,7 @@ static inline int bm_find(const ushort *uc, uint l, int index, const ushort *puc
can be quickly matched in a Unicode string.
\ingroup tools
- \ingroup text
+ \ingroup string-processing
This class is useful when you have a sequence of \l{QChar}s that
you want to repeatedly match against some strings (perhaps in a
diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp
index 956a963..0cc3218 100644
--- a/src/corelib/tools/qtextboundaryfinder.cpp
+++ b/src/corelib/tools/qtextboundaryfinder.cpp
@@ -107,7 +107,7 @@ static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int
\since 4.4
\ingroup tools
\ingroup shared
- \ingroup text
+ \ingroup string-processing
\reentrant
QTextBoundaryFinder allows to find Unicode text boundaries in a
diff --git a/src/corelib/tools/qtimeline.cpp b/src/corelib/tools/qtimeline.cpp
index 11d4c43..c0ca931 100644
--- a/src/corelib/tools/qtimeline.cpp
+++ b/src/corelib/tools/qtimeline.cpp
@@ -165,7 +165,7 @@ void QTimeLinePrivate::setCurrentTime(int msecs)
\class QTimeLine
\brief The QTimeLine class provides a timeline for controlling animations.
\since 4.2
- \ingroup multimedia
+ \ingroup animation
It's most commonly used to animate a GUI control by calling a slot
periodically. You can construct a timeline by passing its duration in
diff --git a/doc/src/classes/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc
index 9cc7bef..9cc7bef 100644
--- a/doc/src/classes/qvarlengtharray.qdoc
+++ b/src/corelib/tools/qvarlengtharray.qdoc
diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp
index 8e454ed..64ef368 100644
--- a/src/corelib/tools/qvector.cpp
+++ b/src/corelib/tools/qvector.cpp
@@ -67,7 +67,7 @@ int QVectorData::grow(int sizeofTypedData, int size, int sizeofT, bool excessive
\ingroup tools
\ingroup shared
- \mainclass
+
\reentrant
QVector\<T\> is one of Qt's generic \l{container classes}. It
diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index 1a6c1c0..05d866c 100644
--- a/src/corelib/tools/tools.pri
+++ b/src/corelib/tools/tools.pri
@@ -55,7 +55,7 @@ SOURCES += \
tools/qhash.cpp \
tools/qline.cpp \
tools/qlinkedlist.cpp \
- tools/qlistdata.cpp \
+ tools/qlist.cpp \
tools/qlocale.cpp \
tools/qpoint.cpp \
tools/qmap.cpp \
diff --git a/src/corelib/xml/qxmlstream.cpp b/src/corelib/xml/qxmlstream.cpp
index fa396f1..a311b99 100644
--- a/src/corelib/xml/qxmlstream.cpp
+++ b/src/corelib/xml/qxmlstream.cpp
@@ -52,13 +52,13 @@
#include "qxmlutils_p.h"
#include <qdebug.h>
-#include <QFile>
+#include <qfile.h>
#include <stdio.h>
#include <qtextcodec.h>
#include <qstack.h>
#include <qbuffer.h>
#ifndef QT_BOOTSTRAPPED
-#include <QCoreApplication>
+#include <qcoreapplication.h>
#else
// This specialization of Q_DECLARE_TR_FUNCTIONS is not in qcoreapplication.h,
// because that header depends on QObject being available, which is not the
@@ -129,6 +129,21 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \enum QXmlStreamReader::ReadElementTextBehaviour
+
+ This enum specifies the different behaviours of readElementText().
+
+ \value ErrorOnUnexpectedElement Raise an UnexpectedElementError and return
+ what was read so far when a child element is encountered.
+
+ \value IncludeChildElements Recursively include the text from child elements.
+
+ \value SkipChildElements Skip child elements.
+
+ \since 4.6
+*/
+
+/*!
\enum QXmlStreamReader::Error
This enum specifies different error cases
@@ -244,7 +259,7 @@ QXmlStreamEntityResolver *QXmlStreamReader::entityResolver() const
\brief The QXmlStreamReader class provides a fast parser for reading
well-formed XML via a simple streaming API.
- \mainclass
+
\ingroup xml-tools
QXmlStreamReader is a faster and more convenient replacement for
@@ -622,6 +637,56 @@ QXmlStreamReader::TokenType QXmlStreamReader::tokenType() const
return d->type;
}
+/*!
+ Reads until the next start element within the current element. Returns true
+ when a start element was reached. When the end element was reached, or when
+ an error occurred, false is returned.
+
+ The current element is the element matching the most recently parsed start
+ element of which a matching end element has not yet been reached. When the
+ parser has reached the end element, the current element becomes the parent
+ element.
+
+ This is a convenience function for when you're only concerned with parsing
+ XML elements. The \l{QXmlStream Bookmarks Example} makes extensive use of
+ this function.
+
+ \since 4.6
+ \sa readNext()
+ */
+bool QXmlStreamReader::readNextStartElement()
+{
+ while (readNext() != Invalid) {
+ if (isEndElement())
+ return false;
+ else if (isStartElement())
+ return true;
+ }
+ return false;
+}
+
+/*!
+ Reads until the end of the current element, skipping any child nodes.
+ This function is useful for skipping unknown elements.
+
+ The current element is the element matching the most recently parsed start
+ element of which a matching end element has not yet been reached. When the
+ parser has reached the end element, the current element becomes the parent
+ element.
+
+ \since 4.6
+ */
+void QXmlStreamReader::skipCurrentElement()
+{
+ int depth = 1;
+ while (depth && readNext() != Invalid) {
+ if (isEndElement())
+ --depth;
+ else if (isStartElement())
+ ++depth;
+ }
+}
+
/*
* Use the following Perl script to generate the error string index list:
===== PERL SCRIPT ====
@@ -2021,12 +2086,17 @@ void QXmlStreamReader::addExtraNamespaceDeclarations(const QXmlStreamNamespaceDe
The function concatenates text() when it reads either \l Characters
or EntityReference tokens, but skips ProcessingInstruction and \l
- Comment. In case anything else is read before reaching EndElement,
- the function returns what it read so far and raises an
- UnexpectedElementError. If the current token is not StartElement, an
- empty string is returned.
+ Comment. If the current token is not StartElement, an empty string is
+ returned.
+
+ The \a behaviour defines what happens in case anything else is
+ read before reaching EndElement. The function can include the text from
+ child elements (useful for example for HTML), ignore child elements, or
+ raise an UnexpectedElementError and return what was read so far.
+
+ \since 4.6
*/
-QString QXmlStreamReader::readElementText()
+QString QXmlStreamReader::readElementText(ReadElementTextBehaviour behaviour)
{
Q_D(QXmlStreamReader);
if (isStartElement()) {
@@ -2042,16 +2112,37 @@ QString QXmlStreamReader::readElementText()
case ProcessingInstruction:
case Comment:
break;
+ case StartElement:
+ if (behaviour == SkipChildElements) {
+ skipCurrentElement();
+ break;
+ } else if (behaviour == IncludeChildElements) {
+ result += readElementText(behaviour);
+ break;
+ }
+ // Fall through (for ErrorOnUnexpectedElement)
default:
- if (!d->error)
- d->raiseError(UnexpectedElementError, QXmlStream::tr("Expected character data."));
- return result;
+ if (d->error || behaviour == ErrorOnUnexpectedElement) {
+ if (!d->error)
+ d->raiseError(UnexpectedElementError, QXmlStream::tr("Expected character data."));
+ return result;
+ }
}
}
}
return QString();
}
+/*!
+ \overload readElementText()
+
+ Calling this function is equivalent to calling readElementText(ErrorOnUnexpectedElement).
+ */
+QString QXmlStreamReader::readElementText()
+{
+ return readElementText(ErrorOnUnexpectedElement);
+}
+
/*! Raises a custom error with an optional error \a message.
\sa error(), errorString()
@@ -2792,7 +2883,7 @@ QStringRef QXmlStreamReader::documentEncoding() const
\brief The QXmlStreamWriter class provides an XML writer with a
simple streaming API.
- \mainclass
+
\inmodule QtXml
\ingroup xml-tools
diff --git a/src/corelib/xml/qxmlstream.h b/src/corelib/xml/qxmlstream.h
index 3353cd4..71deb66 100644
--- a/src/corelib/xml/qxmlstream.h
+++ b/src/corelib/xml/qxmlstream.h
@@ -42,12 +42,12 @@
#ifndef QXMLSTREAM_H
#define QXMLSTREAM_H
-#include <QtCore/QIODevice>
+#include <QtCore/qiodevice.h>
#ifndef QT_NO_XMLSTREAM
-#include <QtCore/QString>
-#include <QtCore/QVector>
+#include <QtCore/qstring.h>
+#include <QtCore/qvector.h>
QT_BEGIN_HEADER
@@ -321,6 +321,9 @@ public:
bool atEnd() const;
TokenType readNext();
+ bool readNextStartElement();
+ void skipCurrentElement();
+
TokenType tokenType() const;
QString tokenString() const;
@@ -348,6 +351,13 @@ public:
qint64 characterOffset() const;
QXmlStreamAttributes attributes() const;
+
+ enum ReadElementTextBehaviour {
+ ErrorOnUnexpectedElement,
+ IncludeChildElements,
+ SkipChildElements
+ };
+ QString readElementText(ReadElementTextBehaviour behaviour);
QString readElementText();
QStringRef name() const;
diff --git a/src/corelib/xml/qxmlutils.cpp b/src/corelib/xml/qxmlutils.cpp
index 036869b..d9219be 100644
--- a/src/corelib/xml/qxmlutils.cpp
+++ b/src/corelib/xml/qxmlutils.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include <QRegExp>
-#include <QString>
+#include <qregexp.h>
+#include <qstring.h>
#include "qxmlutils_p.h"
diff --git a/src/corelib/xml/qxmlutils_p.h b/src/corelib/xml/qxmlutils_p.h
index 431c0ad..6e7ba7b 100644
--- a/src/corelib/xml/qxmlutils_p.h
+++ b/src/corelib/xml/qxmlutils_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include <QtCore/QString>
+#include <QtCore/qstring.h>
QT_BEGIN_NAMESPACE
diff --git a/src/dbus/qdbus_symbols.cpp b/src/dbus/qdbus_symbols.cpp
index ca0147a..356b14c 100644
--- a/src/dbus/qdbus_symbols.cpp
+++ b/src/dbus/qdbus_symbols.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
+#include "qdbus_symbols_p.h"
#include <QtCore/qglobal.h>
#include <QtCore/qlibrary.h>
#include <QtCore/qmutex.h>
@@ -52,7 +53,7 @@ void *qdbus_resolve_me(const char *name);
static QLibrary *qdbus_libdbus = 0;
-void qdbus_unloadLibDBus()
+static void qdbus_unloadLibDBus()
{
delete qdbus_libdbus;
qdbus_libdbus = 0;
@@ -76,8 +77,11 @@ bool qdbus_loadLibDBus()
lib->setFileName(QLatin1String("dbus-1"));
for (uint i = 0; i < sizeof(majorversions) / sizeof(majorversions[0]); ++i) {
lib->setFileNameAndVersion(lib->fileName(), majorversions[i]);
- if (lib->load() && lib->resolve("dbus_connection_open_private"))
+ if (lib->load() && lib->resolve("dbus_connection_open_private")) {
+ struct Unloader { ~Unloader() { qdbus_unloadLibDBus(); } };
+ static Unloader unloader;
return true;
+ }
lib->unload();
}
@@ -107,8 +111,6 @@ void *qdbus_resolve_me(const char *name)
return ptr;
}
-Q_DESTRUCTOR_FUNCTION(qdbus_unloadLibDBus)
-
QT_END_NAMESPACE
#endif
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index abeca0d..9084817 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
relating to accessibility.
\ingroup accessibility
- \mainclass
+
Accessible applications can be used by people who are not able to
use applications by conventional means.
diff --git a/src/gui/dialogs/qabstractprintdialog.cpp b/src/gui/dialogs/qabstractprintdialog.cpp
index ac4c9e8..9e91382 100644
--- a/src/gui/dialogs/qabstractprintdialog.cpp
+++ b/src/gui/dialogs/qabstractprintdialog.cpp
@@ -59,6 +59,8 @@ class QPrintDialogPrivate : public QAbstractPrintDialogPrivate
\brief The QAbstractPrintDialog class provides a base implementation for
print dialogs used to configure printers.
+ \ingroup printing
+
This class implements getter and setter functions that are used to
customize settings shown in print dialogs, but it is not used directly.
Use QPrintDialog to display a print dialog in your application.
@@ -357,7 +359,8 @@ void QAbstractPrintDialogPrivate::setPrinter(QPrinter *newPrinter)
\brief The QPrintDialog class provides a dialog for specifying
the printer's configuration.
- \ingroup dialogs
+ \ingroup standard-dialogs
+ \ingroup printing
The dialog allows users to change document-related settings, such
as the paper size and orientation, type of print (color or
diff --git a/src/gui/dialogs/qcolordialog.cpp b/src/gui/dialogs/qcolordialog.cpp
index 4a40b48..766dcb4 100644
--- a/src/gui/dialogs/qcolordialog.cpp
+++ b/src/gui/dialogs/qcolordialog.cpp
@@ -1510,9 +1510,7 @@ static const Qt::WindowFlags DefaultWindowFlags =
\class QColorDialog
\brief The QColorDialog class provides a dialog widget for specifying colors.
- \mainclass
- \ingroup dialogs
- \ingroup multimedia
+ \ingroup standard-dialogs
The color dialog's function is to allow users to choose colors.
For example, you might use this in a drawing program to allow the
diff --git a/src/gui/dialogs/qdialog.cpp b/src/gui/dialogs/qdialog.cpp
index cd808b3..5b53637 100644
--- a/src/gui/dialogs/qdialog.cpp
+++ b/src/gui/dialogs/qdialog.cpp
@@ -76,9 +76,9 @@ QT_BEGIN_NAMESPACE
\class QDialog
\brief The QDialog class is the base class of dialog windows.
- \ingroup dialogs
+ \ingroup dialog-classes
\ingroup abstractwidgets
- \mainclass
+
A dialog window is a top-level window mostly used for short-term
tasks and brief communications with the user. QDialogs may be
diff --git a/src/gui/dialogs/qerrormessage.cpp b/src/gui/dialogs/qerrormessage.cpp
index bc9972c..c83f33c 100644
--- a/src/gui/dialogs/qerrormessage.cpp
+++ b/src/gui/dialogs/qerrormessage.cpp
@@ -133,8 +133,7 @@ QSize QErrorMessageTextView::sizeHint() const
\brief The QErrorMessage class provides an error message display dialog.
- \ingroup dialogs
- \ingroup misc
+ \ingroup standard-dialog
An error message widget consists of a text label and a checkbox. The
checkbox lets the user control whether the same error message will be
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index f548912..015ee59 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -89,8 +89,8 @@ Q_GUI_EXPORT _qt_filedialog_save_filename_hook qt_filedialog_save_filename_hook
/*!
\class QFileDialog
\brief The QFileDialog class provides a dialog that allow users to select files or directories.
- \ingroup dialogs
- \mainclass
+ \ingroup standard-dialogs
+
The QFileDialog class enables a user to traverse the file system in
order to select one or many files or a directory.
diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp
index 3e57585..512dc65 100644
--- a/src/gui/dialogs/qfontdialog.cpp
+++ b/src/gui/dialogs/qfontdialog.cpp
@@ -112,9 +112,8 @@ static const Qt::WindowFlags DefaultWindowFlags =
/*!
\class QFontDialog
- \ingroup dialogs
- \ingroup text
- \mainclass
+ \ingroup standard-dialogs
+
\brief The QFontDialog class provides a dialog widget for selecting a font.
A font dialog is created through one of the static getFont()
diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp
index a2b8304..39a6b07 100644
--- a/src/gui/dialogs/qinputdialog.cpp
+++ b/src/gui/dialogs/qinputdialog.cpp
@@ -425,8 +425,8 @@ void QInputDialogPrivate::_q_currentRowChanged(const QModelIndex &newIndex,
\class QInputDialog
\brief The QInputDialog class provides a simple convenience dialog to get a
single value from the user.
- \ingroup dialogs
- \mainclass
+ \ingroup standard-dialogs
+
The input value can be a string, a number or an item from a list. A label
must be set to tell the user what they should enter.
diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp
index 7a81ea5..e8a4f0d 100644
--- a/src/gui/dialogs/qmessagebox.cpp
+++ b/src/gui/dialogs/qmessagebox.cpp
@@ -434,8 +434,8 @@ void QMessageBoxPrivate::_q_buttonClicked(QAbstractButton *button)
\brief The QMessageBox class provides a modal dialog for informing
the user or for asking the user a question and receiving an answer.
- \ingroup dialogs
- \mainclass
+ \ingroup standard-dialogs
+
A message box displays a primary \l{QMessageBox::text}{text} to
alert the user to a situation, an \l{QMessageBox::informativeText}
diff --git a/src/gui/dialogs/qpagesetupdialog.cpp b/src/gui/dialogs/qpagesetupdialog.cpp
index 5ca4935..a91eaea 100644
--- a/src/gui/dialogs/qpagesetupdialog.cpp
+++ b/src/gui/dialogs/qpagesetupdialog.cpp
@@ -45,6 +45,52 @@
QT_BEGIN_NAMESPACE
+/*!
+ \class QPageSetupDialog
+
+ \brief The QPageSetupDialog class provides a configuration dialog
+ for the page-related options on a printer.
+
+ \ingroup standard-dialogs
+ \ingroup printing
+
+ On Windows and Mac OS X the page setup dialog is implemented using
+ the native page setup dialogs.
+
+ Note that on Windows and Mac OS X custom paper sizes won't be
+ reflected in the native page setup dialogs. Additionally, custom
+ page margins set on a QPrinter won't show in the native Mac OS X
+ page setup dialog.
+
+ \sa QPrinter, QPrintDialog
+*/
+
+
+/*!
+ \fn QPageSetupDialog::QPageSetupDialog(QPrinter *printer, QWidget *parent)
+
+ Constructs a page setup dialog that configures \a printer with \a
+ parent as the parent widget.
+*/
+
+/*!
+ \since 4.5
+
+ \fn QPageSetupDialog::QPageSetupDialog(QWidget *parent)
+
+ Constructs a page setup dialog that configures a default-constructed
+ QPrinter with \a parent as the parent widget.
+
+ \sa printer()
+*/
+
+/*!
+ \fn QPrinter *QPageSetupDialog::printer()
+
+ Returns the printer that was passed to the QPageSetupDialog
+ constructor.
+*/
+
// hack
class QPageSetupDialogPrivate : public QAbstractPageSetupDialogPrivate
{
diff --git a/doc/src/classes/qprintdialog.qdoc b/src/gui/dialogs/qprintdialog.qdoc
index b52edff..b52edff 100644
--- a/doc/src/classes/qprintdialog.qdoc
+++ b/src/gui/dialogs/qprintdialog.qdoc
diff --git a/src/gui/dialogs/qprintpreviewdialog.cpp b/src/gui/dialogs/qprintpreviewdialog.cpp
index ee16fe5..c053b81 100644
--- a/src/gui/dialogs/qprintpreviewdialog.cpp
+++ b/src/gui/dialogs/qprintpreviewdialog.cpp
@@ -625,6 +625,9 @@ void QPrintPreviewDialogPrivate::_q_zoomFactorChanged()
\brief The QPrintPreviewDialog class provides a dialog for
previewing and configuring page layouts for printer output.
+ \ingroup standard-dialogs
+ \ingroup printing
+
Using QPrintPreviewDialog in your existing application is
straightforward:
diff --git a/src/gui/dialogs/qprogressdialog.cpp b/src/gui/dialogs/qprogressdialog.cpp
index 1ca1515..d55eadb 100644
--- a/src/gui/dialogs/qprogressdialog.cpp
+++ b/src/gui/dialogs/qprogressdialog.cpp
@@ -196,8 +196,8 @@ void QProgressDialogPrivate::_q_disconnectOnClose()
/*!
\class QProgressDialog
\brief The QProgressDialog class provides feedback on the progress of a slow operation.
- \ingroup dialogs
- \mainclass
+ \ingroup standard-dialogs
+
A progress dialog is used to give the user an indication of how long
an operation is going to take, and to demonstrate that the
diff --git a/src/gui/embedded/qdirectpainter_qws.cpp b/src/gui/embedded/qdirectpainter_qws.cpp
index bae6ed9..bba862b 100644
--- a/src/gui/embedded/qdirectpainter_qws.cpp
+++ b/src/gui/embedded/qdirectpainter_qws.cpp
@@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QDirectPainter
- \ingroup multimedia
+ \ingroup painting
\ingroup qws
\brief The QDirectPainter class provides direct access to the
diff --git a/src/gui/embedded/qlock.cpp b/src/gui/embedded/qlock.cpp
index 0f88832..c32e9b5 100644
--- a/src/gui/embedded/qlock.cpp
+++ b/src/gui/embedded/qlock.cpp
@@ -128,7 +128,6 @@ public:
\brief The QLock class is a wrapper for a System V shared semaphore.
\ingroup qws
- \ingroup io
\internal
diff --git a/src/gui/graphicsview/qgraphicsgridlayout.cpp b/src/gui/graphicsview/qgraphicsgridlayout.cpp
index ee7048f..0fb284f 100644
--- a/src/gui/graphicsview/qgraphicsgridlayout.cpp
+++ b/src/gui/graphicsview/qgraphicsgridlayout.cpp
@@ -44,7 +44,7 @@
\brief The QGraphicsGridLayout class provides a grid layout for managing
widgets in Graphics View.
\since 4.4
- \ingroup multimedia
+
\ingroup graphicsview-api
The most common way to use QGraphicsGridLayout is to construct an object
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 66f5f22..50b5b9e 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -44,7 +44,7 @@
\brief The QGraphicsItem class is the base class for all graphical
items in a QGraphicsScene.
\since 4.2
- \ingroup multimedia
+
\ingroup graphicsview-api
It provides a light-weight foundation for writing your own custom items.
@@ -328,6 +328,10 @@
used for Asian languages.
This flag was introduced in Qt 4.6.
+ \value ItemNegativeZStacksBehindParent The item automatically stacks behind
+ it's parent if it's z-value is negative. This flag enables setZValue() to
+ toggle ItemStacksBehindParent.
+
\value ItemAutoDetectsFocusProxy The item will assign any child that
gains input focus as its focus proxy. See also focusProxy().
This flag was introduced in Qt 4.6.
@@ -1563,6 +1567,11 @@ void QGraphicsItem::setFlags(GraphicsItemFlags flags)
d_ptr->scene->d_func()->updateInputMethodSensitivityInViews();
}
+ if ((flags & ItemNegativeZStacksBehindParent) != (oldFlags & ItemNegativeZStacksBehindParent)) {
+ // Update stack-behind.
+ setFlag(ItemStacksBehindParent, d_ptr->z < qreal(0.0));
+ }
+
if (d_ptr->scene) {
d_ptr->scene->d_func()->markDirty(this, QRectF(),
/*invalidateChildren=*/true,
@@ -3829,6 +3838,9 @@ void QGraphicsItem::setZValue(qreal z)
itemChange(ItemZValueHasChanged, newZVariant);
+ if (d_ptr->flags & ItemNegativeZStacksBehindParent)
+ setFlag(QGraphicsItem::ItemStacksBehindParent, z < qreal(0.0));
+
if (d_ptr->isObject)
emit static_cast<QGraphicsObject *>(this)->zChanged();
}
@@ -6952,11 +6964,12 @@ QGraphicsObject::QGraphicsObject(QGraphicsItemPrivate &dd, QGraphicsItem *parent
By default, this property is true.
- \sa QGraphicsItem::isEnabled(), QGraphicsItem::setEnabled(), enabledChanged()
+ \sa QGraphicsItem::isEnabled(), QGraphicsItem::setEnabled()
+ \sa QGraphicsObject::enabledChanged()
*/
/*!
- \fn QGraphicsObject::enabledChanged()
+ \fn void QGraphicsObject::enabledChanged()
This signal gets emitted whenever the item get's enabled or disabled.
@@ -7008,7 +7021,7 @@ QGraphicsObject::QGraphicsObject(QGraphicsItemPrivate &dd, QGraphicsItem *parent
\brief The QAbstractGraphicsShapeItem class provides a common base for
all path items.
\since 4.2
- \ingroup multimedia
+ \ingroup graphicsview-api
This class does not fully implement an item by itself; in particular, it
does not implement boundingRect() and paint(), which are inherited by
@@ -7143,7 +7156,6 @@ QPainterPath QAbstractGraphicsShapeItem::opaqueArea() const
\brief The QGraphicsPathItem class provides a path item that you
can add to a QGraphicsScene.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
To set the item's path, pass a QPainterPath to QGraphicsPathItem's
@@ -7346,7 +7358,6 @@ QVariant QGraphicsPathItem::extension(const QVariant &variant) const
\brief The QGraphicsRectItem class provides a rectangle item that you
can add to a QGraphicsScene.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
To set the item's rectangle, pass a QRectF to QGraphicsRectItem's
@@ -7591,7 +7602,6 @@ QVariant QGraphicsRectItem::extension(const QVariant &variant) const
\brief The QGraphicsEllipseItem class provides an ellipse item that you
can add to a QGraphicsScene.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
QGraphicsEllipseItem respresents an ellipse with a fill and an outline,
@@ -7908,7 +7918,6 @@ QVariant QGraphicsEllipseItem::extension(const QVariant &variant) const
\brief The QGraphicsPolygonItem class provides a polygon item that you
can add to a QGraphicsScene.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
To set the item's polygon, pass a QPolygonF to
@@ -8142,7 +8151,6 @@ QVariant QGraphicsPolygonItem::extension(const QVariant &variant) const
\brief The QGraphicsLineItem class provides a line item that you can add to a
QGraphicsScene.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
To set the item's line, pass a QLineF to QGraphicsLineItem's
@@ -8404,7 +8412,6 @@ QVariant QGraphicsLineItem::extension(const QVariant &variant) const
\brief The QGraphicsPixmapItem class provides a pixmap item that you can add to
a QGraphicsScene.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
To set the item's pixmap, pass a QPixmap to QGraphicsPixmapItem's
@@ -8768,7 +8775,6 @@ QVariant QGraphicsPixmapItem::extension(const QVariant &variant) const
\brief The QGraphicsTextItem class provides a text item that you can add to
a QGraphicsScene to display formatted text.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
If you only need to show plain text in an item, consider using QGraphicsSimpleTextItem
@@ -9633,7 +9639,6 @@ void QGraphicsSimpleTextItemPrivate::updateBoundingRect()
\brief The QGraphicsSimpleTextItem class provides a simple text path item
that you can add to a QGraphicsScene.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
To set the item's text, you can either pass a QString to
@@ -9869,7 +9874,6 @@ QVariant QGraphicsSimpleTextItem::extension(const QVariant &variant) const
\brief The QGraphicsItemGroup class provides treating a group of items as
one.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
A QGraphicsItemGroup is a special type of compound item that
@@ -10342,6 +10346,9 @@ QDebug operator<<(QDebug debug, QGraphicsItem::GraphicsItemFlag flag)
case QGraphicsItem::ItemAcceptsInputMethod:
str = "ItemAcceptsInputMethod";
break;
+ case QGraphicsItem::ItemNegativeZStacksBehindParent:
+ str = "ItemNegativeZStacksBehindParent";
+ break;
case QGraphicsItem::ItemAutoDetectsFocusProxy:
str = "ItemAutoDetectsFocusProxy";
break;
diff --git a/src/gui/graphicsview/qgraphicsitem.h b/src/gui/graphicsview/qgraphicsitem.h
index fdf9463..b4c7ed8 100644
--- a/src/gui/graphicsview/qgraphicsitem.h
+++ b/src/gui/graphicsview/qgraphicsitem.h
@@ -102,7 +102,8 @@ public:
ItemHasNoContents = 0x400,
ItemSendsGeometryChanges = 0x800,
ItemAcceptsInputMethod = 0x1000,
- ItemAutoDetectsFocusProxy = 0x2000
+ ItemAutoDetectsFocusProxy = 0x2000,
+ ItemNegativeZStacksBehindParent = 0x4000
// NB! Don't forget to increase the d_ptr->flags bit field by 1 when adding a new flag.
};
Q_DECLARE_FLAGS(GraphicsItemFlags, GraphicsItemFlag)
@@ -460,6 +461,7 @@ private:
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsItem::GraphicsItemFlags)
+Q_DECLARE_INTERFACE(QGraphicsItem, "com.trolltech.Qt.QGraphicsItem")
inline void QGraphicsItem::setPos(qreal ax, qreal ay)
{ setPos(QPointF(ax, ay)); }
@@ -512,9 +514,9 @@ class Q_GUI_EXPORT QGraphicsObject : public QObject, public QGraphicsItem
Q_OBJECT
Q_PROPERTY(QGraphicsObject * parent READ parentObject WRITE setParentItem NOTIFY parentChanged DESIGNABLE false)
Q_PROPERTY(QString id READ objectName WRITE setObjectName)
- Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged)
+ Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged FINAL)
Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged)
- Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged)
+ Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL)
Q_PROPERTY(QPointF pos READ pos WRITE setPos)
Q_PROPERTY(qreal x READ x WRITE setX NOTIFY xChanged)
Q_PROPERTY(qreal y READ y WRITE setY NOTIFY yChanged)
@@ -522,6 +524,7 @@ class Q_GUI_EXPORT QGraphicsObject : public QObject, public QGraphicsItem
Q_PROPERTY(qreal rotation READ rotation WRITE setRotation NOTIFY rotationChanged)
Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged)
Q_PROPERTY(QPointF transformOriginPoint READ transformOriginPoint WRITE setTransformOriginPoint)
+ Q_INTERFACES(QGraphicsItem)
public:
QGraphicsObject(QGraphicsItem *parent = 0);
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index a6f833c..a5854b1 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -96,7 +96,7 @@ public:
void purge();
};
-class Q_AUTOTEST_EXPORT QGraphicsItemPrivate
+class Q_GUI_EXPORT QGraphicsItemPrivate
{
Q_DECLARE_PUBLIC(QGraphicsItem)
public:
@@ -170,6 +170,7 @@ public:
sceneTransformTranslateOnly(0),
notifyBoundingRectChanged(0),
notifyInvalidated(0),
+ mouseSetsFocus(1),
globalStackingOrder(-1),
q_ptr(0)
{
@@ -206,7 +207,7 @@ public:
virtual QVariant inputMethodQueryHelper(Qt::InputMethodQuery query) const;
static bool movableAncestorIsSelected(const QGraphicsItem *item);
- void setPosHelper(const QPointF &pos);
+ virtual void setPosHelper(const QPointF &pos);
void setTransformHelper(const QTransform &transform);
void appendGraphicsTransform(QGraphicsTransform *t);
void setVisibleHelper(bool newVisible, bool explicitly, bool update = true);
@@ -458,7 +459,7 @@ public:
// New 32 bits
quint32 fullUpdatePending : 1;
- quint32 flags : 14;
+ quint32 flags : 15;
quint32 dirtyChildrenBoundingRect : 1;
quint32 paintedViewBoundingRectsNeedRepaint : 1;
quint32 dirtySceneTransform : 1;
@@ -473,7 +474,8 @@ public:
quint32 sceneTransformTranslateOnly : 1;
quint32 notifyBoundingRectChanged : 1;
quint32 notifyInvalidated : 1;
- quint32 unused : 3; // feel free to use
+ quint32 mouseSetsFocus : 1;
+ quint32 unused : 1; // feel free to use
// Optional stacking order
int globalStackingOrder;
diff --git a/src/gui/graphicsview/qgraphicsitemanimation.cpp b/src/gui/graphicsview/qgraphicsitemanimation.cpp
index 0d7a3c6..c9b95ad 100644
--- a/src/gui/graphicsview/qgraphicsitemanimation.cpp
+++ b/src/gui/graphicsview/qgraphicsitemanimation.cpp
@@ -44,7 +44,6 @@
\brief The QGraphicsItemAnimation class provides simple animation
support for QGraphicsItem.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
The QGraphicsItemAnimation class animates a QGraphicsItem. You can
diff --git a/src/gui/graphicsview/qgraphicslayout.cpp b/src/gui/graphicsview/qgraphicslayout.cpp
index 3f039c6..58c174c 100644
--- a/src/gui/graphicsview/qgraphicslayout.cpp
+++ b/src/gui/graphicsview/qgraphicslayout.cpp
@@ -57,7 +57,6 @@ QT_BEGIN_NAMESPACE
\brief The QGraphicsLayout class provides the base class for all layouts
in Graphics View.
\since 4.4
- \ingroup multimedia
\ingroup graphicsview-api
QGraphicsLayout is an abstract class that defines a virtual API for
diff --git a/src/gui/graphicsview/qgraphicslayout.h b/src/gui/graphicsview/qgraphicslayout.h
index d7e087b..1a21e53 100644
--- a/src/gui/graphicsview/qgraphicslayout.h
+++ b/src/gui/graphicsview/qgraphicslayout.h
@@ -85,6 +85,8 @@ private:
friend class QGraphicsWidget;
};
+Q_DECLARE_INTERFACE(QGraphicsLayout, "com.trolltech.Qt.QGraphicsLayout")
+
#endif
QT_END_NAMESPACE
diff --git a/src/gui/graphicsview/qgraphicslayoutitem.cpp b/src/gui/graphicsview/qgraphicslayoutitem.cpp
index 83e4888..6a25ade 100644
--- a/src/gui/graphicsview/qgraphicslayoutitem.cpp
+++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp
@@ -264,7 +264,6 @@ void QGraphicsLayoutItemPrivate::setSizeComponent(
\brief The QGraphicsLayoutItem class can be inherited to allow your custom
items to be managed by layouts.
\since 4.4
- \ingroup multimedia
\ingroup graphicsview-api
QGraphicsLayoutItem is an abstract class that defines a set of virtual
diff --git a/src/gui/graphicsview/qgraphicslayoutitem.h b/src/gui/graphicsview/qgraphicslayoutitem.h
index 44c1c0f..f315404 100644
--- a/src/gui/graphicsview/qgraphicslayoutitem.h
+++ b/src/gui/graphicsview/qgraphicslayoutitem.h
@@ -121,6 +121,8 @@ private:
friend class QGraphicsLayout;
};
+Q_DECLARE_INTERFACE(QGraphicsLayoutItem, "com.trolltech.Qt.QGraphicsLayoutItem")
+
inline void QGraphicsLayoutItem::setMinimumSize(qreal aw, qreal ah)
{ setMinimumSize(QSizeF(aw, ah)); }
inline void QGraphicsLayoutItem::setPreferredSize(qreal aw, qreal ah)
diff --git a/src/gui/graphicsview/qgraphicslinearlayout.cpp b/src/gui/graphicsview/qgraphicslinearlayout.cpp
index c0ff00e..185780a 100644
--- a/src/gui/graphicsview/qgraphicslinearlayout.cpp
+++ b/src/gui/graphicsview/qgraphicslinearlayout.cpp
@@ -44,7 +44,6 @@
\brief The QGraphicsLinearLayout class provides a horizontal or vertical
layout for managing widgets in Graphics View.
\since 4.4
- \ingroup multimedia
\ingroup graphicsview-api
The default orientation for a linear layout is Qt::Horizontal. You can
diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp
index 784ee0e..4f626a2 100644
--- a/src/gui/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/gui/graphicsview/qgraphicsproxywidget.cpp
@@ -67,7 +67,6 @@ QT_BEGIN_NAMESPACE
\brief The QGraphicsProxyWidget class provides a proxy layer for embedding
a QWidget in a QGraphicsScene.
\since 4.4
- \ingroup multimedia
\ingroup graphicsview-api
QGraphicsProxyWidget embeds QWidget-based widgets, for example, a
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index e4a02e2..db783ad 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -44,9 +44,8 @@
\brief The QGraphicsScene class provides a surface for managing a large
number of 2D graphical items.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
- \mainclass
+
The class serves as a container for QGraphicsItems. It is used together
with QGraphicsView for visualizing graphical items, such as lines,
@@ -1080,7 +1079,7 @@ void QGraphicsScenePrivate::mousePressEventHandler(QGraphicsSceneMouseEvent *mou
// Set focus on the topmost enabled item that can take focus.
bool setFocus = false;
foreach (QGraphicsItem *item, cachedItemsUnderMouse) {
- if (item->isEnabled() && (item->flags() & QGraphicsItem::ItemIsFocusable)) {
+ if (item->isEnabled() && ((item->flags() & QGraphicsItem::ItemIsFocusable) && item->d_ptr->mouseSetsFocus)) {
if (!item->isWidget() || ((QGraphicsWidget *)item)->focusPolicy() & Qt::ClickFocus) {
setFocus = true;
if (item != q->focusItem())
@@ -3803,7 +3802,8 @@ void QGraphicsScene::wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)
bool hasSetFocus = false;
foreach (QGraphicsItem *item, wheelCandidates) {
- if (!hasSetFocus && item->isEnabled() && (item->flags() & QGraphicsItem::ItemIsFocusable)) {
+ if (!hasSetFocus && item->isEnabled()
+ && ((item->flags() & QGraphicsItem::ItemIsFocusable) && item->d_ptr->mouseSetsFocus)) {
if (item->isWidget() && static_cast<QGraphicsWidget *>(item)->focusPolicy() == Qt::WheelFocus) {
hasSetFocus = true;
if (item != focusItem())
@@ -5345,7 +5345,7 @@ bool QGraphicsScenePrivate::sendTouchBeginEvent(QGraphicsItem *origin, QTouchEve
// Set focus on the topmost enabled item that can take focus.
bool setFocus = false;
foreach (QGraphicsItem *item, cachedItemsUnderMouse) {
- if (item->isEnabled() && (item->flags() & QGraphicsItem::ItemIsFocusable)) {
+ if (item->isEnabled() && ((item->flags() & QGraphicsItem::ItemIsFocusable) && item->d_ptr->mouseSetsFocus)) {
if (!item->isWidget() || ((QGraphicsWidget *)item)->focusPolicy() & Qt::ClickFocus) {
setFocus = true;
if (item != q->focusItem())
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
index 7beae20..a405f31 100644
--- a/src/gui/graphicsview/qgraphicsscene_p.h
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
@@ -59,6 +59,7 @@
#include "qgraphicssceneevent.h"
#include "qgraphicsview.h"
+#include "qgraphicsview_p.h"
#include "qgraphicsitem_p.h"
#include <private/qobject_p.h>
diff --git a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
index 4dccde9..2d2ce02 100644
--- a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
+++ b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
@@ -44,9 +44,8 @@
\brief The QGraphicsSceneBspTreeIndex class provides an implementation of
a BSP indexing algorithm for discovering items in QGraphicsScene.
\since 4.6
- \ingroup multimedia
\ingroup graphicsview-api
- \mainclass
+
\internal
QGraphicsSceneBspTreeIndex index use a BSP(Binary Space Partitioning)
diff --git a/src/gui/graphicsview/qgraphicssceneevent.cpp b/src/gui/graphicsview/qgraphicssceneevent.cpp
index b89d6ba..90f1531 100644
--- a/src/gui/graphicsview/qgraphicssceneevent.cpp
+++ b/src/gui/graphicsview/qgraphicssceneevent.cpp
@@ -44,7 +44,6 @@
\brief The QGraphicsSceneEvent class provides a base class for all
graphics view related events.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
When a QGraphicsView receives Qt mouse, keyboard, and drag and
@@ -86,7 +85,6 @@
\brief The QGraphicsSceneMouseEvent class provides mouse events
in the graphics view framework.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
When a QGraphicsView receives a QMouseEvent, it translates it to
@@ -111,7 +109,6 @@
\brief The QGraphicsSceneWheelEvent class provides wheel events in the
graphics view framework.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
\l{QWheelEvent}{QWheelEvent}s received by a QGraphicsView are translated
@@ -128,7 +125,6 @@
\brief The QGraphicsSceneContextMenuEvent class provides context
menu events in the graphics view framework.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
A QContextMenuEvent received by a QGraphicsView is translated
@@ -160,7 +156,6 @@
\brief The QGraphicsSceneHoverEvent class provides hover events
in the graphics view framework.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
When a QGraphicsView receives a QHoverEvent event, it translates
@@ -176,7 +171,6 @@
\brief The QGraphicsSceneHelpEvent class provides events when a
tooltip is requested.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
When a QGraphicsView receives a QEvent of type
@@ -201,7 +195,6 @@
\brief The QGraphicsSceneDragDropEvent class provides events for
drag and drop in the graphics view framework.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
QGraphicsView inherits the drag and drop functionality provided
@@ -226,7 +219,6 @@
\brief The QGraphicsSceneResizeEvent class provides events for widget
resizing in the graphics view framework.
\since 4.4
- \ingroup multimedia
\ingroup graphicsview-api
A QGraphicsWidget sends itself a QGraphicsSceneResizeEvent immediately
@@ -243,7 +235,6 @@
\brief The QGraphicsSceneMoveEvent class provides events for widget
moving in the graphics view framework.
\since 4.4
- \ingroup multimedia
\ingroup graphicsview-api
A QGraphicsWidget sends itself a QGraphicsSceneMoveEvent immediately when
diff --git a/src/gui/graphicsview/qgraphicssceneindex.cpp b/src/gui/graphicsview/qgraphicssceneindex.cpp
index 37a2fc3..feb44bb 100644
--- a/src/gui/graphicsview/qgraphicssceneindex.cpp
+++ b/src/gui/graphicsview/qgraphicssceneindex.cpp
@@ -43,9 +43,8 @@
\brief The QGraphicsSceneIndex class provides a base class to implement
a custom indexing algorithm for discovering items in QGraphicsScene.
\since 4.6
- \ingroup multimedia
\ingroup graphicsview-api
- \mainclass
+
\internal
The QGraphicsSceneIndex class provides a base class to implement
diff --git a/src/gui/graphicsview/qgraphicstransform.cpp b/src/gui/graphicsview/qgraphicstransform.cpp
index 95f137d..86f5b08 100644
--- a/src/gui/graphicsview/qgraphicstransform.cpp
+++ b/src/gui/graphicsview/qgraphicstransform.cpp
@@ -44,6 +44,7 @@
\brief The QGraphicsTransform class is an abstract base class for building
advanced transformations on QGraphicsItems.
\since 4.6
+ \ingroup graphicsview-api
As an alternative to QGraphicsItem::transform, QGraphicsTransform lets you
create and control advanced transformations that can be configured
diff --git a/src/gui/graphicsview/qgraphicsview.cpp b/src/gui/graphicsview/qgraphicsview.cpp
index 91e654c..e9029c3 100644
--- a/src/gui/graphicsview/qgraphicsview.cpp
+++ b/src/gui/graphicsview/qgraphicsview.cpp
@@ -48,9 +48,8 @@ static const int QGRAPHICSVIEW_PREALLOC_STYLE_OPTIONS = 503; // largest prime <
\brief The QGraphicsView class provides a widget for displaying the
contents of a QGraphicsScene.
\since 4.2
- \ingroup multimedia
\ingroup graphicsview-api
- \mainclass
+
QGraphicsView visualizes the contents of a QGraphicsScene in a scrollable
viewport. To create a scene with geometrical items, see QGraphicsScene's
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index 64881b5..a833d4b 100644
--- a/src/gui/graphicsview/qgraphicswidget.cpp
+++ b/src/gui/graphicsview/qgraphicswidget.cpp
@@ -74,7 +74,6 @@ QT_BEGIN_NAMESPACE
\brief The QGraphicsWidget class is the base class for all widget
items in a QGraphicsScene.
\since 4.4
- \ingroup multimedia
\ingroup graphicsview-api
QGraphicsWidget is an extended base item that provides extra functionality
@@ -258,7 +257,7 @@ QGraphicsWidget::~QGraphicsWidget()
//we check if we have a layout previously
if (d->layout) {
- delete d->layout;
+ QGraphicsLayout *temp = d->layout;
foreach (QGraphicsItem * item, childItems()) {
// In case of a custom layout which doesn't remove and delete items, we ensure that
// the parent layout item does not point to the deleted layout. This code is here to
@@ -269,6 +268,8 @@ QGraphicsWidget::~QGraphicsWidget()
widget->setParentLayoutItem(0);
}
}
+ d->layout = 0;
+ delete temp;
}
// Remove this graphics widget from widgetStyles
diff --git a/src/gui/graphicsview/qgraphicswidget.h b/src/gui/graphicsview/qgraphicswidget.h
index 62b353a..57015f9 100644
--- a/src/gui/graphicsview/qgraphicswidget.h
+++ b/src/gui/graphicsview/qgraphicswidget.h
@@ -69,6 +69,7 @@ class QGraphicsWidgetPrivate;
class Q_GUI_EXPORT QGraphicsWidget : public QGraphicsObject, public QGraphicsLayoutItem
{
Q_OBJECT
+ Q_INTERFACES(QGraphicsItem QGraphicsLayoutItem)
Q_PROPERTY(QPalette palette READ palette WRITE setPalette)
Q_PROPERTY(QFont font READ font WRITE setFont)
Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection RESET unsetLayoutDirection)
diff --git a/src/gui/image/qbitmap.cpp b/src/gui/image/qbitmap.cpp
index a1497bc..bef1738 100644
--- a/src/gui/image/qbitmap.cpp
+++ b/src/gui/image/qbitmap.cpp
@@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
\class QBitmap
\brief The QBitmap class provides monochrome (1-bit depth) pixmaps.
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
The QBitmap class is a monochrome off-screen paint device used
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index 677cc44..5a88e29 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -445,9 +445,9 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loaderV2,
\brief The QIcon class provides scalable icons in different modes
and states.
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
- \mainclass
+
A QIcon can generate smaller, larger, active, and disabled pixmaps
from the set of pixmaps it is given. Such pixmaps are used by Qt
diff --git a/src/gui/image/qiconengine.cpp b/src/gui/image/qiconengine.cpp
index 8e39607..930834d 100644
--- a/src/gui/image/qiconengine.cpp
+++ b/src/gui/image/qiconengine.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
\brief The QIconEngine class provides an abstract base class for QIcon renderers.
- \ingroup multimedia
+ \ingroup painting
\bold {Use QIconEngineV2 instead.}
@@ -144,7 +144,7 @@ void QIconEngine::addFile(const QString &/*fileName*/, const QSize &/*size*/, QI
\brief The QIconEngineV2 class provides an abstract base class for QIcon renderers.
- \ingroup multimedia
+ \ingroup painting
\since 4.3
An icon engine renders \l{QIcon}s. With icon engines, you can
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 0001e2b..3faca46 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -61,11 +61,7 @@
#include <qhash.h>
-#ifdef QT_RASTER_IMAGEENGINE
#include <private/qpaintengine_raster_p.h>
-#else
-#include <qpaintengine.h>
-#endif
#include <private/qimage_p.h>
@@ -337,9 +333,9 @@ bool QImageData::checkForAlphaPixels() const
/*!
\class QImage
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
- \mainclass
+
\reentrant
\brief The QImage class provides a hardware-independent image
@@ -5255,11 +5251,10 @@ QPaintEngine *QImage::paintEngine() const
if (!d)
return 0;
-#ifdef QT_RASTER_IMAGEENGINE
if (!d->paintEngine) {
d->paintEngine = new QRasterPaintEngine(const_cast<QImage *>(this));
}
-#endif
+
return d->paintEngine;
}
diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp
index 06c8f21..b127de7 100644
--- a/src/gui/image/qimagereader.cpp
+++ b/src/gui/image/qimagereader.cpp
@@ -47,7 +47,7 @@
for reading images from files or other devices.
\reentrant
- \ingroup multimedia
+ \ingroup painting
\ingroup io
The most common way to read images is through QImage and QPixmap's
diff --git a/src/gui/image/qimagewriter.cpp b/src/gui/image/qimagewriter.cpp
index c734169..1f06493 100644
--- a/src/gui/image/qimagewriter.cpp
+++ b/src/gui/image/qimagewriter.cpp
@@ -45,7 +45,7 @@
for writing images to files or other devices.
\reentrant
- \ingroup multimedia
+ \ingroup painting
\ingroup io
QImageWriter supports setting format specific options, such as the
diff --git a/src/gui/image/qmovie.cpp b/src/gui/image/qmovie.cpp
index c341e5e..179e6bb 100644
--- a/src/gui/image/qmovie.cpp
+++ b/src/gui/image/qmovie.cpp
@@ -45,7 +45,7 @@
\brief The QMovie class is a convenience class for playing movies
with QImageReader.
- \ingroup multimedia
+ \ingroup painting
First, create a QMovie object by passing either the name of a file or a
pointer to a QIODevice containing an animated image format to QMovie's
diff --git a/src/gui/image/qpicture.cpp b/src/gui/image/qpicture.cpp
index fbc2a5d..7b02dca 100644
--- a/src/gui/image/qpicture.cpp
+++ b/src/gui/image/qpicture.cpp
@@ -69,9 +69,9 @@ void qt_format_text(const QFont &fnt, const QRectF &_r,
\brief The QPicture class is a paint device that records and
replays QPainter commands.
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
- \mainclass
+
A picture serializes painter commands to an IO device in a
platform-independent format. They are sometimes referred to as meta-files.
@@ -1298,7 +1298,7 @@ QList<QByteArray> QPicture::outputFormats()
\brief The QPictureIO class contains parameters for loading and
saving pictures.
- \ingroup multimedia
+ \ingroup painting
\ingroup io
QPictureIO contains a QIODevice object that is used for picture data
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 81440b3..0fad1c7 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -1550,9 +1550,9 @@ QPixmap QPixmap::transformed(const QMatrix &matrix, Qt::TransformationMode mode)
\brief The QPixmap class is an off-screen image representation
that can be used as a paint device.
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
- \mainclass
+
Qt provides four classes for handling image data: QImage, QPixmap,
QBitmap and QPicture. QImage is designed and optimized for I/O,
diff --git a/src/gui/image/qpixmap_mac.cpp b/src/gui/image/qpixmap_mac.cpp
index 8c911bb..5959da1 100644
--- a/src/gui/image/qpixmap_mac.cpp
+++ b/src/gui/image/qpixmap_mac.cpp
@@ -38,7 +38,6 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-//#define QT_RASTER_PAINTENGINE
#include "qpixmap.h"
#include "qimage.h"
@@ -52,9 +51,6 @@
#include <private/qdrawhelper_p.h>
#include <private/qpixmap_mac_p.h>
#include <private/qpixmap_raster_p.h>
-#ifdef QT_RASTER_PAINTENGINE
-# include <private/qpaintengine_raster_p.h>
-#endif
#include <private/qpaintengine_mac_p.h>
#include <private/qt_mac_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
@@ -1098,14 +1094,7 @@ QPaintEngine* QMacPixmapData::paintEngine() const
{
if (!pengine) {
QMacPixmapData *that = const_cast<QMacPixmapData*>(this);
-#ifdef QT_RASTER_PAINTENGINE
- if (qgetenv("QT_MAC_USE_COREGRAPHICS").isNull())
- that->pengine = new QRasterPaintEngine();
- else
- that->pengine = new QCoreGraphicsPaintEngine();
-#else
that->pengine = new QCoreGraphicsPaintEngine();
-#endif
}
return pengine;
}
diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp
index 762c98f..cef5c49 100644
--- a/src/gui/image/qpixmapcache.cpp
+++ b/src/gui/image/qpixmapcache.cpp
@@ -51,8 +51,7 @@ QT_BEGIN_NAMESPACE
\brief The QPixmapCache class provides an application-wide cache for pixmaps.
- \ingroup environment
- \ingroup multimedia
+ \ingroup painting
This class is a tool for optimized drawing with QPixmap. You can
use it to store temporary pixmaps that are expensive to generate
diff --git a/src/gui/image/qpixmapfilter.cpp b/src/gui/image/qpixmapfilter.cpp
index aad2f16..e95cf89 100644
--- a/src/gui/image/qpixmapfilter.cpp
+++ b/src/gui/image/qpixmapfilter.cpp
@@ -65,7 +65,7 @@ public:
/*!
\class QPixmapFilter
\since 4.5
- \ingroup multimedia
+ \ingroup painting
\brief The QPixmapFilter class provides the basic functionality for
pixmap filter classes. Pixmap filter can be for example colorize or blur.
@@ -175,7 +175,7 @@ QRectF QPixmapFilter::boundingRectFor(const QRectF &rect) const
/*!
\class QPixmapConvolutionFilter
\since 4.5
- \ingroup multimedia
+ \ingroup painting
\brief The QPixmapConvolutionFilter class provides convolution
filtering for pixmaps.
@@ -741,7 +741,7 @@ static void grayscale(const QImage &image, QImage &dest, const QRect& rect = QRe
/*!
\class QPixmapColorizeFilter
\since 4.5
- \ingroup multimedia
+ \ingroup painting
\brief The QPixmapColorizeFilter class provides colorizing
filtering for pixmaps.
@@ -865,7 +865,7 @@ public:
/*!
\class QPixmapDropShadowFilter
\since 4.5
- \ingroup multimedia
+ \ingroup painting
\brief The QPixmapDropShadowFilter class is a convenience class
for drawing pixmaps with drop shadows.
diff --git a/src/gui/inputmethod/qinputcontextfactory.cpp b/src/gui/inputmethod/qinputcontextfactory.cpp
index 39b9b03..9010edf 100644
--- a/src/gui/inputmethod/qinputcontextfactory.cpp
+++ b/src/gui/inputmethod/qinputcontextfactory.cpp
@@ -86,7 +86,6 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
\class QInputContextFactory
\brief The QInputContextFactory class creates QInputContext objects.
- \ingroup appearance
The input context factory creates a QInputContext object for a
given key with QInputContextFactory::create().
diff --git a/src/gui/itemviews/qabstractitemdelegate.cpp b/src/gui/itemviews/qabstractitemdelegate.cpp
index 22b96fc..447538a 100644
--- a/src/gui/itemviews/qabstractitemdelegate.cpp
+++ b/src/gui/itemviews/qabstractitemdelegate.cpp
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
data items from a model.
\ingroup model-view
- \mainclass
+
A QAbstractItemDelegate provides the interface and common functionality
for delegates in the model/view architecture. Delegates display
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index 7b51483..9eb71b7 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -166,7 +166,7 @@ void QAbstractItemViewPrivate::checkMouseMove(const QPersistentModelIndex &index
item view classes.
\ingroup model-view
- \mainclass
+
QAbstractItemView class is the base class for every standard view
that uses a QAbstractItemModel. QAbstractItemView is an abstract
diff --git a/src/gui/itemviews/qcolumnview.cpp b/src/gui/itemviews/qcolumnview.cpp
index fd8106f..9597656 100644
--- a/src/gui/itemviews/qcolumnview.cpp
+++ b/src/gui/itemviews/qcolumnview.cpp
@@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE
\brief The QColumnView class provides a model/view implementation of a column view.
\ingroup model-view
\ingroup advanced
- \mainclass
+
QColumnView displays a model in a number of QListViews, one for each
hierarchy in the tree. This is sometimes referred to as a cascading list.
diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp
index 96df758..4ab81f5 100644
--- a/src/gui/itemviews/qheaderview.cpp
+++ b/src/gui/itemviews/qheaderview.cpp
@@ -88,7 +88,7 @@ QDataStream &operator>>(QDataStream &in, QHeaderViewPrivate::SectionSpan &span)
item views.
\ingroup model-view
- \mainclass
+
A QHeaderView displays the headers used in item views such as the
QTableView and QTreeView classes. It takes the place of Qt3's \c QHeader
@@ -1195,7 +1195,8 @@ QHeaderView::ResizeMode QHeaderView::resizeMode(int logicalIndex) const
{
Q_D(const QHeaderView);
int visual = visualIndex(logicalIndex);
- Q_ASSERT(visual != -1);
+ if (visual == -1)
+ return Fixed; //the default value
return d->headerSectionResizeMode(visual);
}
diff --git a/src/gui/itemviews/qitemdelegate.cpp b/src/gui/itemviews/qitemdelegate.cpp
index 1e36f72..56af0f4 100644
--- a/src/gui/itemviews/qitemdelegate.cpp
+++ b/src/gui/itemviews/qitemdelegate.cpp
@@ -185,7 +185,7 @@ QSizeF QItemDelegatePrivate::doTextLayout(int lineWidth) const
data items from a model.
\ingroup model-view
- \mainclass
+
QItemDelegate can be used to provide custom display features and editor
widgets for item views based on QAbstractItemView subclasses. Using a
diff --git a/src/gui/itemviews/qitemselectionmodel.cpp b/src/gui/itemviews/qitemselectionmodel.cpp
index 98810a0..8414460 100644
--- a/src/gui/itemviews/qitemselectionmodel.cpp
+++ b/src/gui/itemviews/qitemselectionmodel.cpp
@@ -573,6 +573,7 @@ void QItemSelectionModelPrivate::_q_rowsAboutToBeRemoved(const QModelIndex &pare
int start, int end)
{
Q_Q(QItemSelectionModel);
+ finalize();
// update current index
if (currentIndex.isValid() && parent == currentIndex.parent()
@@ -591,8 +592,8 @@ void QItemSelectionModelPrivate::_q_rowsAboutToBeRemoved(const QModelIndex &pare
}
QItemSelection deselected;
- QItemSelection::iterator it = currentSelection.begin();
- while (it != currentSelection.end()) {
+ QItemSelection::iterator it = ranges.begin();
+ while (it != ranges.end()) {
if (it->topLeft().parent() != parent) { // Check parents until reaching root or contained in range
QModelIndex itParent = it->topLeft().parent();
while (itParent.isValid() && itParent.parent() != parent)
@@ -600,24 +601,22 @@ void QItemSelectionModelPrivate::_q_rowsAboutToBeRemoved(const QModelIndex &pare
if (parent.isValid() && start <= itParent.row() && itParent.row() <= end) {
deselected.append(*it);
- it = currentSelection.erase(it);
+ it = ranges.erase(it);
} else {
++it;
}
} else if (start <= it->bottom() && it->bottom() <= end // Full inclusion
&& start <= it->top() && it->top() <= end) {
deselected.append(*it);
- it = currentSelection.erase(it);
+ it = ranges.erase(it);
} else if (start <= it->top() && it->top() <= end) { // Top intersection
deselected.append(QItemSelectionRange(it->topLeft(), model->index(end, it->left(), it->parent())));
- it = currentSelection.insert(it, QItemSelectionRange(model->index(end + 1, it->left(), it->parent()),
- it->bottomRight()));
- it = currentSelection.erase(++it);
+ *it = QItemSelectionRange(model->index(end + 1, it->left(), it->parent()), it->bottomRight());
+ ++it;
} else if (start <= it->bottom() && it->bottom() <= end) { // Bottom intersection
deselected.append(QItemSelectionRange(model->index(start, it->right(), it->parent()), it->bottomRight()));
- it = currentSelection.insert(it, QItemSelectionRange(it->topLeft(),
- model->index(start - 1, it->right(), it->parent())));
- it = currentSelection.erase(++it);
+ *it = QItemSelectionRange(it->topLeft(), model->index(start - 1, it->right(), it->parent()));
+ ++it;
} else {
if (it->top() < start && end < it->bottom()) // Middle intersection (do nothing)
deselected.append(QItemSelectionRange(model->index(start, it->right(), it->parent()),
@@ -626,7 +625,8 @@ void QItemSelectionModelPrivate::_q_rowsAboutToBeRemoved(const QModelIndex &pare
}
}
- emit q->selectionChanged(QItemSelection(), deselected);
+ if (!deselected.isEmpty())
+ emit q->selectionChanged(QItemSelection(), deselected);
}
/*!
diff --git a/src/gui/itemviews/qlistview.cpp b/src/gui/itemviews/qlistview.cpp
index 3ab3204..e9e365f 100644
--- a/src/gui/itemviews/qlistview.cpp
+++ b/src/gui/itemviews/qlistview.cpp
@@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE
\ingroup model-view
\ingroup advanced
- \mainclass
+
A QListView presents items stored in a model, either as a simple
non-hierarchical list, or as a collection of icons. This class is used
@@ -458,6 +458,8 @@ QSize QListView::gridSize() const
void QListView::setViewMode(ViewMode mode)
{
Q_D(QListView);
+ if (d->viewMode == mode)
+ return;
d->viewMode = mode;
if (mode == ListMode) {
@@ -1963,7 +1965,7 @@ QListViewPrivate::QListViewPrivate()
movement(QListView::Static),
resizeMode(QListView::Fixed),
layoutMode(QListView::SinglePass),
- viewMode(QListView::ListMode),
+ viewMode(QListView::IconMode), //this will ensure the first initialization to ListView
modeProperties(0),
column(0),
uniformItemSizes(false),
@@ -1974,8 +1976,10 @@ QListViewPrivate::QListViewPrivate()
QListViewPrivate::~QListViewPrivate()
{
- delete staticListView;
- delete dynamicListView;
+ if (viewMode == QListView::ListMode)
+ delete staticListView;
+ else
+ delete dynamicListView;
}
void QListViewPrivate::clear()
diff --git a/src/gui/itemviews/qlistwidget.cpp b/src/gui/itemviews/qlistwidget.cpp
index a1f8288..232b4d2 100644
--- a/src/gui/itemviews/qlistwidget.cpp
+++ b/src/gui/itemviews/qlistwidget.cpp
@@ -1125,7 +1125,7 @@ void QListWidgetPrivate::_q_dataChanged(const QModelIndex &topLeft,
\brief The QListWidget class provides an item-based list widget.
\ingroup model-view
- \mainclass
+
QListWidget is a convenience class that provides a list view similar to the
one supplied by QListView, but with a classic item-based interface for
diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index 8444a5b..d173efe 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -1278,82 +1278,76 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsRemoved(
/*!
\since 4.1
\class QSortFilterProxyModel
- \brief The QSortFilterProxyModel class provides support for sorting and filtering data passed
- between another model and a view.
+ \brief The QSortFilterProxyModel class provides support for sorting and
+ filtering data passed between another model and a view.
\ingroup model-view
- QSortFilterProxyModel can be used for sorting items, filtering
- out items, or both. The model transforms the structure of a
- source model by mapping the model indexes it supplies to new
- indexes, corresponding to different locations, for views to use.
- This approach allows a given source model to be restructured as
- far as views are concerned without requiring any transformations
- on the underlying data, and without duplicating the data in
+ QSortFilterProxyModel can be used for sorting items, filtering out items,
+ or both. The model transforms the structure of a source model by mapping
+ the model indexes it supplies to new indexes, corresponding to different
+ locations, for views to use. This approach allows a given source model to
+ be restructured as far as views are concerned without requiring any
+ transformations on the underlying data, and without duplicating the data in
memory.
- Let's assume that we want to sort and filter the items provided
- by a custom model. The code to set up the model and the view, \e
- without sorting and filtering, would look like this:
+ Let's assume that we want to sort and filter the items provided by a custom
+ model. The code to set up the model and the view, \e without sorting and
+ filtering, would look like this:
\snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 1
- To add sorting and filtering support to \c MyItemModel, we need
- to create a QSortFilterProxyModel, call setSourceModel() with the
- \c MyItemModel as argument, and install the QSortFilterProxyModel
- on the view:
+ To add sorting and filtering support to \c MyItemModel, we need to create
+ a QSortFilterProxyModel, call setSourceModel() with the \c MyItemModel as
+ argument, and install the QSortFilterProxyModel on the view:
\snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 0
\snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 2
- At this point, neither sorting nor filtering is enabled; the
- original data is displayed in the view. Any changes made through
- the QSortFilterProxyModel are applied to the original model.
+ At this point, neither sorting nor filtering is enabled; the original data
+ is displayed in the view. Any changes made through the
+ QSortFilterProxyModel are applied to the original model.
- The QSortFilterProxyModel acts as a wrapper for the original
- model. If you need to convert source \l{QModelIndex}es to
- sorted/filtered model indexes or vice versa, use mapToSource(),
- mapFromSource(), mapSelectionToSource(), and
- mapSelectionFromSource().
+ The QSortFilterProxyModel acts as a wrapper for the original model. If you
+ need to convert source \l{QModelIndex}es to sorted/filtered model indexes
+ or vice versa, use mapToSource(), mapFromSource(), mapSelectionToSource(),
+ and mapSelectionFromSource().
- \note By default, the model does not dynamically re-sort and re-filter
- data whenever the original model changes. This behavior can be
- changed by setting the \l{QSortFilterProxyModel::dynamicSortFilter}
- {dynamicSortFilter} property.
+ \note By default, the model does not dynamically re-sort and re-filter data
+ whenever the original model changes. This behavior can be changed by
+ setting the \l{QSortFilterProxyModel::dynamicSortFilter}{dynamicSortFilter}
+ property.
- The \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model}
- and \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model}
- examples illustrate how to use QSortFilterProxyModel to perform
- basic sorting and filtering and how to subclass it to implement
- custom behavior.
+ The \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model} and
+ \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model} examples
+ illustrate how to use QSortFilterProxyModel to perform basic sorting and
+ filtering and how to subclass it to implement custom behavior.
\section1 Sorting
QTableView and QTreeView have a
- \l{QTreeView::sortingEnabled}{sortingEnabled} property that
- controls whether the user can sort the view by clicking the
- view's horizontal header. For example:
+ \l{QTreeView::sortingEnabled}{sortingEnabled} property that controls
+ whether the user can sort the view by clicking the view's horizontal
+ header. For example:
\snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 3
- When this feature is on (the default is off), clicking on a
- header section sorts the items according to that column. By
- clicking repeatedly, the user can alternate between ascending and
- descending order.
+ When this feature is on (the default is off), clicking on a header section
+ sorts the items according to that column. By clicking repeatedly, the user
+ can alternate between ascending and descending order.
\image qsortfilterproxymodel-sorting.png A sorted QTreeView
- Behind the scene, the view calls the sort() virtual function on
- the model to reorder the data in the model. To make your data
- sortable, you can either implement sort() in your model, or you
- use a QSortFilterProxyModel to wrap your model --
- QSortFilterProxyModel provides a generic sort() reimplementation
- that operates on the sortRole() (Qt::DisplayRole by default) of
- the items and that understands several data types, including \c
- int, QString, and QDateTime. For hierarchical models, sorting is
- applied recursively to all child items. String comparisons are
- case sensitive by default; this can be changed by setting the
- \l{QSortFilterProxyModel::}{sortCaseSensitivity} property.
+ Behind the scene, the view calls the sort() virtual function on the model
+ to reorder the data in the model. To make your data sortable, you can
+ either implement sort() in your model, or use a QSortFilterProxyModel to
+ wrap your model -- QSortFilterProxyModel provides a generic sort()
+ reimplementation that operates on the sortRole() (Qt::DisplayRole by
+ default) of the items and that understands several data types, including
+ \c int, QString, and QDateTime. For hierarchical models, sorting is applied
+ recursively to all child items. String comparisons are case sensitive by
+ default; this can be changed by setting the \l{QSortFilterProxyModel::}
+ {sortCaseSensitivity} property.
Custom sorting behavior is achieved by subclassing
QSortFilterProxyModel and reimplementing lessThan(), which is
@@ -1365,43 +1359,42 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsRemoved(
\l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model}
example.)
- An alternative approach to sorting is to disable sorting on the
- view and to impose a certain order to the user. This is done by
- explicitly calling sort() with the desired column and order as
- arguments on the QSortFilterProxyModel (or on the original model
- if it implements sort()). For example:
+ An alternative approach to sorting is to disable sorting on the view and to
+ impose a certain order to the user. This is done by explicitly calling
+ sort() with the desired column and order as arguments on the
+ QSortFilterProxyModel (or on the original model if it implements sort()).
+ For example:
\snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 4
- QSortFilterProxyModel can be sorted by column -1, in which case it
- returns to the sort order of the underlying source model.
+ QSortFilterProxyModel can be sorted by column -1, in which case it returns
+ to the sort order of the underlying source model.
\section1 Filtering
- In addition to sorting, QSortFilterProxyModel can be used to hide
- items that don't match a certain filter. The filter is specified
- using a QRegExp object and is applied to the filterRole()
- (Qt::DisplayRole by default) of each item, for a given column.
- The QRegExp object can be used to match a regular expression, a
- wildcard pattern, or a fixed string. For example:
+ In addition to sorting, QSortFilterProxyModel can be used to hide items
+ that do not match a certain filter. The filter is specified using a QRegExp
+ object and is applied to the filterRole() (Qt::DisplayRole by default) of
+ each item, for a given column. The QRegExp object can be used to match a
+ regular expression, a wildcard pattern, or a fixed string. For example:
\snippet doc/src/snippets/qsortfilterproxymodel-details/main.cpp 5
- For hierarchical models, the filter is applied recursively to all
- children. If a parent item doesn't match the filter, none of its
- children will be shown.
+ For hierarchical models, the filter is applied recursively to all children.
+ If a parent item doesn't match the filter, none of its children will be
+ shown.
- A common use case is to let the user specify the filter regexp,
- wildcard pattern, or fixed string in a QLineEdit and to connect
- the \l{QLineEdit::textChanged()}{textChanged()} signal to
- setFilterRegExp(), setFilterWildcard(), or setFilterFixedString()
- to reapply the filter.
+ A common use case is to let the user specify the filter regexp, wildcard
+ pattern, or fixed string in a QLineEdit and to connect the
+ \l{QLineEdit::textChanged()}{textChanged()} signal to setFilterRegExp(),
+ setFilterWildcard(), or setFilterFixedString() to reapply the filter.
Custom filtering behavior can be achieved by reimplementing the
filterAcceptsRow() and filterAcceptsColumn() functions. For
- example, the following implementation ignores the
- \l{QSortFilterProxyModel::filterKeyColumn}{filterKeyColumn}
- property and performs filtering on columns 0, 1, and 2:
+ example (from the \l{itemviews/customsortfiltermodel}
+ {Custom Sort/Filter Model} example), the following implementation ignores
+ the \l{QSortFilterProxyModel::filterKeyColumn}{filterKeyColumn} property
+ and performs filtering on columns 0, 1, and 2:
\snippet examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp 3
@@ -1411,24 +1404,24 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsRemoved(
If you are working with large amounts of filtering and have to invoke
invalidateFilter() repeatedly, using reset() may be more efficient,
- depending on the implementation of your model. However, note that reset()
- returns the proxy model to its original state, losing selection
- information, and will cause the proxy model to be repopulated.
+ depending on the implementation of your model. However, reset() returns the
+ proxy model to its original state, losing selection information, and will
+ cause the proxy model to be repopulated.
\section1 Subclassing
- \bold{Note:} Some general guidelines for subclassing models are
- available in the \l{Model Subclassing Reference}.
-
Since QAbstractProxyModel and its subclasses are derived from
- QAbstractItemModel, much of the same advice about subclassing normal
- models also applies to proxy models. In addition, it is worth noting
- that many of the default implementations of functions in this class
- are written so that they call the equivalent functions in the relevant
- source model. This simple proxying mechanism may need to be overridden
- for source models with more complex behavior; for example, if the
- source model provides a custom hasChildren() implementation, you
- should also provide one in the proxy model.
+ QAbstractItemModel, much of the same advice about subclassing normal models
+ also applies to proxy models. In addition, it is worth noting that many of
+ the default implementations of functions in this class are written so that
+ they call the equivalent functions in the relevant source model. This
+ simple proxying mechanism may need to be overridden for source models with
+ more complex behavior; for example, if the source model provides a custom
+ hasChildren() implementation, you should also provide one in the proxy
+ model.
+
+ \note Some general guidelines for subclassing models are available in the
+ \l{Model Subclassing Reference}.
\sa QAbstractProxyModel, QAbstractItemModel, {Model/View Programming},
{Basic Sort/Filter Model Example}, {Custom Sort/Filter Model Example}
@@ -1991,9 +1984,11 @@ Qt::SortOrder QSortFilterProxyModel::sortOrder() const
\brief the QRegExp used to filter the contents of the source model
Setting this property overwrites the current
- \l{QSortFilterProxyModel::filterCaseSensitivity}
- {filterCaseSensitivity}. By default, the QRegExp is an empty
- string matching all contents.
+ \l{QSortFilterProxyModel::filterCaseSensitivity}{filterCaseSensitivity}.
+ By default, the QRegExp is an empty string matching all contents.
+
+ If no QRegExp or an empty string is set, everything in the source model
+ will be accepted.
\sa filterCaseSensitivity, setFilterWildcard(), setFilterFixedString()
*/
diff --git a/src/gui/itemviews/qstringlistmodel.cpp b/src/gui/itemviews/qstringlistmodel.cpp
index d57de1a..9462dfe 100644
--- a/src/gui/itemviews/qstringlistmodel.cpp
+++ b/src/gui/itemviews/qstringlistmodel.cpp
@@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE
\brief The QStringListModel class provides a model that supplies strings to views.
\ingroup model-view
- \mainclass
+
QStringListModel is an editable model that can be used for simple
cases where you need to display a number of strings in a view
diff --git a/src/gui/itemviews/qstyleditemdelegate.cpp b/src/gui/itemviews/qstyleditemdelegate.cpp
index a8ea218..ae7c86d 100644
--- a/src/gui/itemviews/qstyleditemdelegate.cpp
+++ b/src/gui/itemviews/qstyleditemdelegate.cpp
@@ -112,7 +112,7 @@ public:
data items from a model.
\ingroup model-view
- \mainclass
+
\since 4.4
When displaying data from models in Qt item views, e.g., a
diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp
index 61c2b60..a9db9f5 100644
--- a/src/gui/itemviews/qtableview.cpp
+++ b/src/gui/itemviews/qtableview.cpp
@@ -508,7 +508,7 @@ void QTableViewPrivate::drawCell(QPainter *painter, const QStyleOptionViewItemV4
\ingroup model-view
\ingroup advanced
- \mainclass
+
A QTableView implements a table view that displays items from a
model. This class is used to provide standard tables that were
diff --git a/src/gui/itemviews/qtablewidget.cpp b/src/gui/itemviews/qtablewidget.cpp
index de8ebde..b04aea2 100644
--- a/src/gui/itemviews/qtablewidget.cpp
+++ b/src/gui/itemviews/qtablewidget.cpp
@@ -1486,7 +1486,7 @@ QTableWidgetItem &QTableWidgetItem::operator=(const QTableWidgetItem &other)
\brief The QTableWidget class provides an item-based table view with a default model.
\ingroup model-view
- \mainclass
+
Table widgets provide standard table display facilities for applications.
The items in a QTableWidget are provided by QTableWidgetItem.
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
index 539a642..7dad192 100644
--- a/src/gui/itemviews/qtreeview.cpp
+++ b/src/gui/itemviews/qtreeview.cpp
@@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE
\ingroup model-view
\ingroup advanced
- \mainclass
+
A QTreeView implements a tree representation of items from a
model. This class is used to provide standard hierarchical lists that
diff --git a/src/gui/itemviews/qtreewidget.cpp b/src/gui/itemviews/qtreewidget.cpp
index f48e393..0bc2bee 100644
--- a/src/gui/itemviews/qtreewidget.cpp
+++ b/src/gui/itemviews/qtreewidget.cpp
@@ -75,7 +75,7 @@ public:
\brief The QTreeModel class manages the items stored in a tree view.
\ingroup model-view
- \mainclass
+
*/
/*!
@@ -2329,7 +2329,7 @@ void QTreeWidgetPrivate::_q_dataChanged(const QModelIndex &topLeft,
tree model.
\ingroup model-view
- \mainclass
+
The QTreeWidget class is a convenience class that provides a standard
tree widget with a classic item-based interface similar to that used by
diff --git a/src/gui/kernel/qaction.cpp b/src/gui/kernel/qaction.cpp
index 7c343fc..4b44452 100644
--- a/src/gui/kernel/qaction.cpp
+++ b/src/gui/kernel/qaction.cpp
@@ -182,8 +182,8 @@ void QActionPrivate::setShortcutEnabled(bool enable, QShortcutMap &map)
\brief The QAction class provides an abstract user interface
action that can be inserted into widgets.
- \ingroup application
- \mainclass
+ \ingroup mainwindow-classes
+
\omit
* parent and widget are different
diff --git a/src/gui/kernel/qactiongroup.cpp b/src/gui/kernel/qactiongroup.cpp
index 5d429e4..9a12dea 100644
--- a/src/gui/kernel/qactiongroup.cpp
+++ b/src/gui/kernel/qactiongroup.cpp
@@ -100,7 +100,7 @@ void QActionGroupPrivate::_q_actionHovered()
\class QActionGroup
\brief The QActionGroup class groups actions together.
- \ingroup application
+ \ingroup mainwindow-classes
In some situations it is useful to group actions together. For
example, if you have a \gui{Left Align} action, a \gui{Right
diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp
index df85809..574d845 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -174,9 +174,6 @@ QApplicationPrivate::~QApplicationPrivate()
\brief The QApplication class manages the GUI application's control
flow and main settings.
- \ingroup application
- \mainclass
-
QApplication contains the main event loop, where all events from the window
system and other sources are processed and dispatched. It also handles the
application's initialization, finalization, and provides session
@@ -4107,9 +4104,6 @@ bool QApplicationPrivate::notify_helper(QObject *receiver, QEvent * e)
\class QSessionManager
\brief The QSessionManager class provides access to the session manager.
- \ingroup application
- \ingroup environment
-
A session manager in a desktop environment (in which Qt GUI applications
live) keeps track of a session, which is a group of running applications,
each of which has a particular state. The state of an application contains
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index db349f0..d942519 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -1851,10 +1851,20 @@ void qt_init(QApplicationPrivate *priv, int,
QX11InfoData *screen = X11->screens + s;
screen->ref = 1; // ensures it doesn't get deleted
screen->screen = s;
- screen->dpiX = (DisplayWidth(X11->display, s) * 254 + DisplayWidthMM(X11->display, s)*5)
- / (DisplayWidthMM(X11->display, s)*10);
- screen->dpiY = (DisplayHeight(X11->display, s) * 254 + DisplayHeightMM(X11->display, s)*5)
- / (DisplayHeightMM(X11->display, s)*10);
+
+ int widthMM = DisplayWidthMM(X11->display, s);
+ if (widthMM != 0) {
+ screen->dpiX = (DisplayWidth(X11->display, s) * 254 + widthMM * 5) / (widthMM * 10);
+ } else {
+ screen->dpiX = 72;
+ }
+
+ int heightMM = DisplayHeightMM(X11->display, s);
+ if (heightMM != 0) {
+ screen->dpiY = (DisplayHeight(X11->display, s) * 254 + heightMM * 5) / (heightMM * 10);
+ } else {
+ screen->dpiY = 72;
+ }
X11->argbVisuals[s] = 0;
X11->argbColormaps[s] = 0;
diff --git a/src/gui/kernel/qboxlayout.cpp b/src/gui/kernel/qboxlayout.cpp
index 5dd77e8..ce86c36 100644
--- a/src/gui/kernel/qboxlayout.cpp
+++ b/src/gui/kernel/qboxlayout.cpp
@@ -452,7 +452,6 @@ void QBoxLayoutPrivate::calcHfw(int w)
vertically.
\ingroup geomanagement
- \ingroup appearance
QBoxLayout takes the space it gets (from its parent layout or from
the parentWidget()), divides it up into a row of boxes, and makes
@@ -1271,8 +1270,6 @@ QBoxLayout::Direction QBoxLayout::direction() const
\brief The QHBoxLayout class lines up widgets horizontally.
\ingroup geomanagement
- \ingroup appearance
- \mainclass
This class is used to construct horizontal box layout objects. See
QBoxLayout for details.
@@ -1389,8 +1386,6 @@ QHBoxLayout::~QHBoxLayout()
\brief The QVBoxLayout class lines up widgets vertically.
\ingroup geomanagement
- \ingroup appearance
- \mainclass
This class is used to construct vertical box layout objects. See
QBoxLayout for details.
diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp
index 2779717..fce4f65 100644
--- a/src/gui/kernel/qclipboard.cpp
+++ b/src/gui/kernel/qclipboard.cpp
@@ -58,10 +58,6 @@ QT_BEGIN_NAMESPACE
\class QClipboard
\brief The QClipboard class provides access to the window system clipboard.
- \ingroup io
- \ingroup environment
- \mainclass
-
The clipboard offers a simple mechanism to copy and paste data
between applications.
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index c20445a..7ac0d89 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -102,7 +102,7 @@ static dndenum_mapper dnd_enums[] = {
{ NSDragOperationCopy, Qt::CopyAction, true },
{ NSDragOperationGeneric, Qt::CopyAction, false },
{ NSDragOperationEvery, Qt::ActionMask, false },
- { NSDragOperationNone, Qt::IgnoreAction, false }
+ { NSDragOperationNone, Qt::IgnoreAction, false }
};
static NSDragOperation qt_mac_mapDropAction(Qt::DropAction action)
@@ -228,14 +228,14 @@ extern "C" {
currentCustomTypes = new QStringList();
*currentCustomTypes = customTypes;
const NSString* mimeTypeGeneric = @"com.trolltech.qt.MimeTypeName";
- NSMutableArray *supportedTypes = [NSMutableArray arrayWithObjects:NSColorPboardType,
- NSFilenamesPboardType, NSStringPboardType,
- NSFilenamesPboardType, NSPostScriptPboardType, NSTIFFPboardType,
- NSRTFPboardType, NSTabularTextPboardType, NSFontPboardType,
- NSRulerPboardType, NSFileContentsPboardType, NSColorPboardType,
- NSRTFDPboardType, NSHTMLPboardType, NSPICTPboardType,
+ NSMutableArray *supportedTypes = [NSMutableArray arrayWithObjects:NSColorPboardType,
+ NSFilenamesPboardType, NSStringPboardType,
+ NSFilenamesPboardType, NSPostScriptPboardType, NSTIFFPboardType,
+ NSRTFPboardType, NSTabularTextPboardType, NSFontPboardType,
+ NSRulerPboardType, NSFileContentsPboardType, NSColorPboardType,
+ NSRTFDPboardType, NSHTMLPboardType, NSPICTPboardType,
NSURLPboardType, NSPDFPboardType, NSVCardPboardType,
- NSFilesPromisePboardType, NSInkTextPboardType,
+ NSFilesPromisePboardType, NSInkTextPboardType,
NSMultipleTextSelectionPboardType, mimeTypeGeneric, nil];
// Add custom types supported by the application.
for (int i = 0; i < customTypes.size(); i++) {
@@ -280,16 +280,16 @@ extern "C" {
dropData = 0;
}
}
-
-- (void)addDropData:(id <NSDraggingInfo>)sender
+
+- (void)addDropData:(id <NSDraggingInfo>)sender
{
[self removeDropData];
- CFStringRef dropPasteboard = (CFStringRef) [[sender draggingPasteboard] name];
+ CFStringRef dropPasteboard = (CFStringRef) [[sender draggingPasteboard] name];
dropData = new QCocoaDropData(dropPasteboard);
-}
+}
-- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
-{
+- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
+{
if (qwidget->testAttribute(Qt::WA_DropSiteRegistered) == false)
return NSDragOperationNone;
NSPoint windowPoint = [sender draggingLocation];
@@ -307,7 +307,7 @@ extern "C" {
NSPoint globalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:windowPoint];
NSPoint localPoint = [self convertPoint:windowPoint fromView:nil];
QPoint posDrag(localPoint.x, localPoint.y);
- NSDragOperation nsActions = [sender draggingSourceOperationMask];
+ NSDragOperation nsActions = [sender draggingSourceOperationMask];
Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions);
QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions;
Qt::KeyboardModifiers modifiers = Qt::NoModifier;
@@ -336,8 +336,8 @@ extern "C" {
qDMEvent.accept(); // accept by default, since enter event was accepted.
QApplication::sendEvent(qwidget, &qDMEvent);
if (!qDMEvent.isAccepted() || qDMEvent.dropAction() == Qt::IgnoreAction) {
- // since we accepted the drag enter event, the widget expects
- // future drage move events.
+ // since we accepted the drag enter event, the widget expects
+ // future drage move events.
// ### check if we need to treat this like the drag enter event.
nsActions = QT_PREPEND_NAMESPACE(qt_mac_mapDropAction)(qDEEvent.dropAction());
} else {
@@ -345,7 +345,7 @@ extern "C" {
}
QT_PREPEND_NAMESPACE(qt_mac_copy_answer_rect)(qDMEvent);
return nsActions;
- }
+ }
}
- (NSDragOperation)draggingUpdated:(id < NSDraggingInfo >)sender
@@ -373,7 +373,7 @@ extern "C" {
if (qt_mac_mouse_inside_answer_rect(posDrag)
&& QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) == nsActions)
return QT_PREPEND_NAMESPACE(qt_mac_mapDropActions)(QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastAction));
- // send drag move event to the widget
+ // send drag move event to the widget
QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions;
Qt::DropActions qtAllowed = QT_PREPEND_NAMESPACE(qt_mac_mapNSDragOperations)(nsActions);
Qt::KeyboardModifiers modifiers = Qt::NoModifier;
@@ -436,7 +436,7 @@ extern "C" {
NSPoint localPoint = [self convertPoint:windowPoint fromView:nil];
QPoint posDrop(localPoint.x, localPoint.y);
- NSDragOperation nsActions = [sender draggingSourceOperationMask];
+ NSDragOperation nsActions = [sender draggingSourceOperationMask];
Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions);
QMimeData *mimeData = dropData;
if (QDragManager::self()->source())
@@ -563,11 +563,6 @@ extern "C" {
qt_sendSpontaneousEvent(qwidget, &e);
if (!redirectionOffset.isNull())
QPainter::restoreRedirected(qwidget);
-#ifdef QT_RASTER_PAINTENGINE
- if(engine && engine->type() == QPaintEngine::Raster)
- static_cast<QRasterPaintEngine*>(engine)->flush(qwidget,
- qrgn.boundingRect().topLeft());
-#endif
if (engine)
engine->setSystemClip(QRegion());
qwidget->setAttribute(Qt::WA_WState_InPaintEvent, false);
@@ -638,7 +633,7 @@ extern "C" {
QHoverEvent he(QEvent::HoverEnter, QPoint(viewPoint.x, viewPoint.y), QPoint(-1, -1));
QApplicationPrivate::instance()->notify_helper(qwidget, &he);
}
- }
+ }
}
- (void)mouseExited:(NSEvent *)event
@@ -647,7 +642,7 @@ extern "C" {
NSPoint globalPoint = [[event window] convertBaseToScreen:[event locationInWindow]];
if (!qAppInstance()->activeModalWidget() || QApplicationPrivate::tryModalHelper(qwidget, 0)) {
QApplication::sendEvent(qwidget, &leaveEvent);
-
+
// ### Think about if it is necessary to update the cursor, should only be for a few cases.
qt_mac_update_cursor_at_global_pos(flipPoint(globalPoint).toPoint());
if (qwidget->testAttribute(Qt::WA_Hover)
@@ -679,7 +674,7 @@ extern "C" {
{
qt_mac_handleMouseEvent(self, theEvent, QEvent::MouseButtonPress, Qt::LeftButton);
// Don't call super here. This prevents us from getting the mouseUp event,
- // which we need to send even if the mouseDown event was not accepted.
+ // which we need to send even if the mouseDown event was not accepted.
// (this is standard Qt behavior.)
}
@@ -843,7 +838,7 @@ extern "C" {
}
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
-- (void)touchesBeganWithEvent:(NSEvent *)event;
+- (void)touchesBeganWithEvent:(NSEvent *)event;
{
bool all = qwidget->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents);
qt_translateRawTouchEvent(qwidget, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all));
@@ -877,7 +872,7 @@ extern "C" {
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
qNGEvent.position = flipPoint(p).toPoint();
qNGEvent.percentage = [event magnification];
- qApp->sendEvent(qwidget, &qNGEvent);
+ qt_sendSpontaneousEvent(qwidget, &qNGEvent);
}
- (void)rotateWithEvent:(NSEvent *)event;
@@ -890,7 +885,7 @@ extern "C" {
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
qNGEvent.position = flipPoint(p).toPoint();
qNGEvent.percentage = [event rotation];
- qApp->sendEvent(qwidget, &qNGEvent);
+ qt_sendSpontaneousEvent(qwidget, &qNGEvent);
}
- (void)swipeWithEvent:(NSEvent *)event;
@@ -903,7 +898,7 @@ extern "C" {
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
qNGEvent.position = flipPoint(p).toPoint();
qNGEvent.direction = QSize(-[event deltaX], -[event deltaY]);
- qApp->sendEvent(qwidget, &qNGEvent);
+ qt_sendSpontaneousEvent(qwidget, &qNGEvent);
}
- (void)beginGestureWithEvent:(NSEvent *)event;
@@ -915,7 +910,7 @@ extern "C" {
qNGEvent.gestureType = QNativeGestureEvent::GestureBegin;
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
qNGEvent.position = flipPoint(p).toPoint();
- qApp->sendEvent(qwidget, &qNGEvent);
+ qt_sendSpontaneousEvent(qwidget, &qNGEvent);
}
- (void)endGestureWithEvent:(NSEvent *)event;
@@ -927,7 +922,7 @@ extern "C" {
qNGEvent.gestureType = QNativeGestureEvent::GestureEnd;
NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
qNGEvent.position = flipPoint(p).toPoint();
- qApp->sendEvent(qwidget, &qNGEvent);
+ qt_sendSpontaneousEvent(qwidget, &qNGEvent);
}
#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
@@ -1128,7 +1123,7 @@ extern "C" {
while (index < composingLength) {
NSRange effectiveRange;
NSRange range = NSMakeRange(index, composingLength-index);
- NSDictionary *attributes = [aString attributesAtIndex:index
+ NSDictionary *attributes = [aString attributesAtIndex:index
longestEffectiveRange:&effectiveRange
inRange:range];
NSNumber *underlineStyle = [attributes objectForKey:NSUnderlineStyleAttributeName];
@@ -1137,7 +1132,7 @@ extern "C" {
NSColor *color = [attributes objectForKey:NSUnderlineColorAttributeName];
if (color) {
clr = colorFrom(color);
- }
+ }
QTextCharFormat format;
format.setFontUnderline(true);
format.setUnderlineColor(clr);
@@ -1213,7 +1208,7 @@ extern "C" {
- (NSRange) markedRange
{
- NSRange range;
+ NSRange range;
if (composing) {
range.location = 0;
range.length = composingLength;
@@ -1238,13 +1233,13 @@ extern "C" {
selRange.length = 0;
}
return selRange;
-
+
}
- (NSRect) firstRectForCharacterRange:(NSRange)theRange
{
Q_UNUSED(theRange);
- // The returned rect is always based on the internal cursor.
+ // The returned rect is always based on the internal cursor.
QRect mr(qwidget->inputMethodQuery(Qt::ImMicroFocus).toRect());
QPoint mp(qwidget->mapToGlobal(QPoint(mr.bottomLeft())));
NSRect rect ;
@@ -1392,7 +1387,7 @@ Qt::DropAction QDragManager::drag(QDrag *o)
NSImage *image = (NSImage *)qt_mac_create_nsimage(pix);
[image retain];
DnDParams *dndParams = [QT_MANGLE_NAMESPACE(QCocoaView) currentMouseEvent];
- // save supported actions
+ // save supported actions
[dndParams->view setSupportedActions: qt_mac_mapDropActions(dragPrivate()->possible_actions)];
NSPoint imageLoc = {dndParams->localPoint.x - hotspot.x(),
dndParams->localPoint.y + pix.height() - hotspot.y()};
@@ -1416,7 +1411,7 @@ Qt::DropAction QDragManager::drag(QDrag *o)
Qt::DropAction performedAction(qt_mac_mapNSDragOperation(dndParams->performedAction));
// do post drag processing, if required.
if(performedAction != Qt::IgnoreAction) {
- // check if the receiver points us to a file location.
+ // check if the receiver points us to a file location.
// if so, we need to do the file copy/move ourselves.
QCFType<CFURLRef> pasteLocation = 0;
PasteboardCopyPasteLocation(dragBoard.pasteBoard(), &pasteLocation);
diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp
index b83843b..16749b7 100644
--- a/src/gui/kernel/qcursor.cpp
+++ b/src/gui/kernel/qcursor.cpp
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
\ingroup appearance
\ingroup shared
- \mainclass
+
This class is mainly used to create mouse cursors that are
associated with particular widgets and to get and set the position
diff --git a/doc/src/classes/qdesktopwidget.qdoc b/src/gui/kernel/qdesktopwidget.qdoc
index 4717e3a..8e6673a 100644
--- a/doc/src/classes/qdesktopwidget.qdoc
+++ b/src/gui/kernel/qdesktopwidget.qdoc
@@ -45,8 +45,6 @@
\ingroup advanced
\ingroup desktop
- \ingroup environment
- \mainclass
QApplication::desktop() function should be used to get an instance
of the QDesktopWidget.
diff --git a/src/gui/kernel/qeventdispatcher_mac.mm b/src/gui/kernel/qeventdispatcher_mac.mm
index efe6375..113362a 100644
--- a/src/gui/kernel/qeventdispatcher_mac.mm
+++ b/src/gui/kernel/qeventdispatcher_mac.mm
@@ -500,7 +500,7 @@ static bool IsMouseOrKeyEvent( NSEvent* event )
static inline void qt_mac_waitForMoreEvents()
{
#ifndef QT_MAC_USE_COCOA
- while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0e20, true) == kCFRunLoopRunTimedOut);
+ while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 1.0e20, true) == kCFRunLoopRunTimedOut) ;
#else
// If no event exist in the cocoa event que, wait
// (and free up cpu time) until at least one event occur.
diff --git a/src/gui/kernel/qformlayout.cpp b/src/gui/kernel/qformlayout.cpp
index 4e632de..b3ecc35 100644
--- a/src/gui/kernel/qformlayout.cpp
+++ b/src/gui/kernel/qformlayout.cpp
@@ -1006,10 +1006,8 @@ QStyle* QFormLayoutPrivate::getStyle() const
\since 4.4
\brief The QFormLayout class manages forms of input widgets and their associated labels.
- \ingroup appearance
\ingroup geomanagement
- \mainclass
QFormLayout is a convenience layout class that lays out its
children in a two-column form. The left column consists of labels
diff --git a/src/gui/kernel/qgridlayout.cpp b/src/gui/kernel/qgridlayout.cpp
index 6624b77..1f25c63 100644
--- a/src/gui/kernel/qgridlayout.cpp
+++ b/src/gui/kernel/qgridlayout.cpp
@@ -980,8 +980,7 @@ QRect QGridLayoutPrivate::cellRect(int row, int col) const
\brief The QGridLayout class lays out widgets in a grid.
\ingroup geomanagement
- \ingroup appearance
- \mainclass
+
QGridLayout takes the space made available to it (by its parent
layout or by the parentWidget()), divides it up into rows and
diff --git a/src/gui/kernel/qkeymapper.cpp b/src/gui/kernel/qkeymapper.cpp
index 0730ef6..7143358 100644
--- a/src/gui/kernel/qkeymapper.cpp
+++ b/src/gui/kernel/qkeymapper.cpp
@@ -51,7 +51,6 @@ QT_BEGIN_NAMESPACE
/*!
\class QKeyMapper
\since 4.2
- \ingroup application
\internal
\sa QObject
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 99e2632..50fe849 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -152,9 +152,8 @@ void Q_AUTOTEST_EXPORT qt_set_sequence_auto_mnemonic(bool b) { qt_sequence_no_mn
\brief The QKeySequence class encapsulates a key sequence as used
by shortcuts.
- \ingroup misc
\ingroup shared
- \mainclass
+
In its most common form, a key sequence describes a combination of
keys that must be used together to perform some action. Key sequences
diff --git a/src/gui/kernel/qlayout.cpp b/src/gui/kernel/qlayout.cpp
index e3cde49..07c017d 100644
--- a/src/gui/kernel/qlayout.cpp
+++ b/src/gui/kernel/qlayout.cpp
@@ -75,7 +75,6 @@ static int menuBarHeightForWidth(QWidget *menubar, int w)
\class QLayout
\brief The QLayout class is the base class of geometry managers.
- \ingroup appearance
\ingroup geomanagement
This is an abstract base class inherited by the concrete classes
diff --git a/src/gui/kernel/qlayoutitem.cpp b/src/gui/kernel/qlayoutitem.cpp
index 47fe5e6..54f37bf 100644
--- a/src/gui/kernel/qlayoutitem.cpp
+++ b/src/gui/kernel/qlayoutitem.cpp
@@ -87,7 +87,6 @@ QSizePolicy::operator QVariant() const
\brief The QLayoutItem class provides an abstract item that a
QLayout manipulates.
- \ingroup appearance
\ingroup geomanagement
This is used by custom layouts.
@@ -116,7 +115,6 @@ QSizePolicy::operator QVariant() const
/*!
\class QSpacerItem
- \ingroup appearance
\ingroup geomanagement
\brief The QSpacerItem class provides blank space in a layout.
@@ -144,7 +142,6 @@ QSizePolicy::operator QVariant() const
/*!
\class QWidgetItem
- \ingroup appearance
\ingroup geomanagement
\brief The QWidgetItem class is a layout item that represents a widget.
diff --git a/src/gui/kernel/qmime_mac.cpp b/src/gui/kernel/qmime_mac.cpp
index f4d4707..9e8de67 100644
--- a/src/gui/kernel/qmime_mac.cpp
+++ b/src/gui/kernel/qmime_mac.cpp
@@ -126,9 +126,8 @@ CFStringRef qt_mac_mime_typeUTI = CFSTR("com.pasteboard.trolltech.marker");
\l{http://developer.apple.com/macosx/uniformtypeidentifiers.html}{Uniform
Type Identifier (UTI)} format.
\since 4.2
- \ingroup io
+
\ingroup draganddrop
- \ingroup misc
Qt's drag and drop and clipboard facilities use the MIME
standard. On X11, this maps trivially to the Xdnd protocol. On
diff --git a/src/gui/kernel/qmime_win.cpp b/src/gui/kernel/qmime_win.cpp
index 63f37af..7f82f53 100644
--- a/src/gui/kernel/qmime_win.cpp
+++ b/src/gui/kernel/qmime_win.cpp
@@ -219,9 +219,7 @@ Q_GLOBAL_STATIC(QWindowsMimeList, theMimeList);
/*!
\class QWindowsMime
\brief The QWindowsMime class maps open-standard MIME to Window Clipboard formats.
- \ingroup io
\ingroup draganddrop
- \ingroup misc
Qt's drag-and-drop and clipboard facilities use the MIME standard.
On X11, this maps trivially to the Xdnd protocol, but on Windows
diff --git a/src/gui/kernel/qpalette.cpp b/src/gui/kernel/qpalette.cpp
index 24e735c..c5ae66b 100644
--- a/src/gui/kernel/qpalette.cpp
+++ b/src/gui/kernel/qpalette.cpp
@@ -399,8 +399,8 @@ void QPalette::setColorGroup(ColorGroup cg, const QColorGroup &g)
\ingroup appearance
\ingroup shared
- \ingroup multimedia
- \mainclass
+ \ingroup painting
+
A palette consists of three color groups: \e Active, \e Disabled,
and \e Inactive. All widgets in Qt contain a palette and
diff --git a/src/gui/kernel/qshortcut.cpp b/src/gui/kernel/qshortcut.cpp
index 194f648..1c5917c 100644
--- a/src/gui/kernel/qshortcut.cpp
+++ b/src/gui/kernel/qshortcut.cpp
@@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE
\brief The QShortcut class is used to create keyboard shortcuts.
\ingroup events
- \mainclass
+
The QShortcut class provides a way of connecting keyboard
shortcuts to Qt's \l{signals and slots} mechanism, so that
diff --git a/doc/src/classes/qsizepolicy.qdoc b/src/gui/kernel/qsizepolicy.qdoc
index f7366c5..200deb5 100644
--- a/doc/src/classes/qsizepolicy.qdoc
+++ b/src/gui/kernel/qsizepolicy.qdoc
@@ -44,7 +44,6 @@
\brief The QSizePolicy class is a layout attribute describing horizontal
and vertical resizing policy.
- \ingroup appearance
\ingroup geomanagement
The size policy of a widget is an expression of its willingness to
diff --git a/src/gui/kernel/qsound.cpp b/src/gui/kernel/qsound.cpp
index 3fb750e..e5c263b 100644
--- a/src/gui/kernel/qsound.cpp
+++ b/src/gui/kernel/qsound.cpp
@@ -106,7 +106,7 @@ public:
\brief The QSound class provides access to the platform audio facilities.
\ingroup multimedia
- \mainclass
+
Qt provides the most commonly required audio operation in GUI
applications: asynchronously playing a sound file. This is most
diff --git a/src/gui/kernel/qstackedlayout.cpp b/src/gui/kernel/qstackedlayout.cpp
index 4025b73..c7e25b0 100644
--- a/src/gui/kernel/qstackedlayout.cpp
+++ b/src/gui/kernel/qstackedlayout.cpp
@@ -65,8 +65,6 @@ public:
only one widget is visible at a time.
\ingroup geomanagement
- \ingroup appearance
- \mainclass
QStackedLayout can be used to create a user interface similar to
the one provided by QTabWidget. There is also a convenience
diff --git a/src/gui/kernel/qtooltip.cpp b/src/gui/kernel/qtooltip.cpp
index 3ea9cb4..8193c55 100644
--- a/src/gui/kernel/qtooltip.cpp
+++ b/src/gui/kernel/qtooltip.cpp
@@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE
widget.
\ingroup helpsystem
- \mainclass
+
The tip is a short piece of text reminding the user of the
widget's function. It is drawn immediately below the given
diff --git a/src/gui/kernel/qwhatsthis.cpp b/src/gui/kernel/qwhatsthis.cpp
index 5a37801..6d0bc33 100644
--- a/src/gui/kernel/qwhatsthis.cpp
+++ b/src/gui/kernel/qwhatsthis.cpp
@@ -78,7 +78,7 @@ QT_BEGIN_NAMESPACE
widget, i.e. answering the question "What's This?".
\ingroup helpsystem
- \mainclass
+
"What's This?" help is part of an application's online help
system, and provides users with information about the
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index c00f953..515eed9 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -454,7 +454,7 @@ void QWidget::setAutoFillBackground(bool enabled)
\brief The QWidget class is the base class of all user interface objects.
\ingroup basicwidgets
- \mainclass
+
The widget is the atom of the user interface: it receives mouse, keyboard
and other events from the window system, and paints a representation of
@@ -2692,7 +2692,7 @@ void QWidget::showFullScreen()
Calling this function only affects \l{isWindow()}{windows}.
On X11, this function may not work properly with certain window
- managers. See \l{geometry.html}{Window Geometry} for an explanation.
+ managers. See the \l{Window Geometry} documentation for an explanation.
\sa setWindowState(), showNormal(), showMinimized(), show(), hide(), isVisible()
*/
@@ -3041,8 +3041,8 @@ void QWidget::setDisabled(bool disable)
\brief geometry of the widget relative to its parent including any
window frame
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of geometry issues with windows.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
By default, this property contains a value that depends on the user's
platform and screen geometry.
@@ -3068,8 +3068,8 @@ QRect QWidget::frameGeometry() const
\brief the x coordinate of the widget relative to its parent including
any window frame
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of window geometry.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
By default, this property has a value of 0.
@@ -3088,8 +3088,8 @@ int QWidget::x() const
\brief the y coordinate of the widget relative to its parent and
including any window frame
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of window geometry.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
By default, this property has a value of 0.
@@ -3121,8 +3121,8 @@ int QWidget::y() const
\warning Calling move() or setGeometry() inside moveEvent() can
lead to infinite recursion.
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of window geometry.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
\sa frameGeometry, size x(), y()
*/
@@ -3152,8 +3152,8 @@ QPoint QWidget::pos() const
\warning Calling setGeometry() inside resizeEvent() or moveEvent()
can lead to infinite recursion.
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of window geometry.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
By default, this property contains a value that depends on the user's
platform and screen geometry.
@@ -3202,8 +3202,8 @@ QPoint QWidget::pos() const
\property QWidget::width
\brief the width of the widget excluding any window frame
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of window geometry.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
\note Do not use this function to find the width of a screen on
a \l{QDesktopWidget}{multiple screen desktop}. Read
@@ -3219,8 +3219,8 @@ QPoint QWidget::pos() const
\property QWidget::height
\brief the height of the widget excluding any window frame
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of window geometry.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
\note Do not use this function to find the height of a screen
on a \l {QDesktopWidget} {multiple screen desktop}. Read
@@ -3239,8 +3239,8 @@ QPoint QWidget::pos() const
The rect property equals QRect(0, 0, width(), height()).
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of window geometry.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
By default, this property contains a value that depends on the user's
platform and screen geometry.
@@ -6228,8 +6228,8 @@ void QWidget::setGeometry(const QRect &r)
\snippet doc/src/snippets/code/src_gui_kernel_qwidget.cpp 11
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of geometry issues with windows.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
Use QMainWindow::saveState() to save the geometry and the state of
toolbars and dock widgets.
@@ -6270,8 +6270,8 @@ QByteArray QWidget::saveGeometry() const
\snippet doc/src/snippets/code/src_gui_kernel_qwidget.cpp 12
- See the \link geometry.html Window Geometry documentation\endlink
- for an overview of geometry issues with windows.
+ See the \l{Window Geometry} documentation for an overview of geometry
+ issues with windows.
Use QMainWindow::restoreState() to restore the geometry and the
state of toolbars and dock widgets.
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index 5948cd4..999faeb 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -72,7 +72,6 @@
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
****************************************************************************/
-//#define QT_RASTER_PAINTENGINE
#include <private/qt_mac_p.h>
#include <private/qeventdispatcher_mac_p.h>
@@ -88,9 +87,6 @@
#include "qlayout.h"
#include "qmenubar.h"
#include <private/qbackingstore_p.h>
-#ifdef QT_RASTER_PAINTENGINE
-# include <private/qpaintengine_raster_p.h>
-#endif
#include <private/qwindowsurface_mac_p.h>
#include <private/qpaintengine_mac_p.h>
#include "qpainter.h"
@@ -111,6 +107,7 @@
#include <private/qcocoapanel_mac_p.h>
#include "qwidget_p.h"
+#include "qevent_p.h"
#include "qdnd_p.h"
#include <QtGui/qgraphicsproxywidget.h>
@@ -733,6 +730,13 @@ static EventTypeSpec window_events[] = {
{ kEventClassWindow, kEventWindowGetRegion },
{ kEventClassWindow, kEventWindowGetClickModality },
{ kEventClassWindow, kEventWindowTransitionCompleted },
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
+ { kEventClassGesture, kEventGestureStarted },
+ { kEventClassGesture, kEventGestureEnded },
+ { kEventClassGesture, kEventGestureMagnify },
+ { kEventClassGesture, kEventGestureSwipe },
+ { kEventClassGesture, kEventGestureRotate },
+#endif
{ kEventClassMouse, kEventMouseDown }
};
static EventHandlerUPP mac_win_eventUPP = 0;
@@ -1017,6 +1021,69 @@ OSStatus QWidgetPrivate::qt_window_event(EventHandlerCallRef er, EventRef event,
return SendEventToApplication(event);
handled_event = false;
break; }
+
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
+ case kEventClassGesture: {
+ // First, find the widget that was under
+ // the mouse when the gesture happened:
+ HIPoint screenLocation;
+ if (GetEventParameter(event, kEventParamMouseLocation, typeHIPoint, 0,
+ sizeof(screenLocation), 0, &screenLocation) != noErr) {
+ handled_event = false;
+ break;
+ }
+ QWidget *widget = QApplication::widgetAt(screenLocation.x, screenLocation.y);
+ if (!widget) {
+ handled_event = false;
+ break;
+ }
+
+ QNativeGestureEvent qNGEvent;
+ qNGEvent.position = QPoint(screenLocation.x, screenLocation.y);
+
+ switch (ekind) {
+ case kEventGestureStarted:
+ qNGEvent.gestureType = QNativeGestureEvent::GestureBegin;
+ break;
+ case kEventGestureEnded:
+ qNGEvent.gestureType = QNativeGestureEvent::GestureEnd;
+ break;
+ case kEventGestureRotate: {
+ CGFloat amount;
+ if (GetEventParameter(event, kEventParamRotationAmount, typeCGFloat, 0,
+ sizeof(amount), 0, &amount) != noErr) {
+ handled_event = false;
+ break;
+ }
+ qNGEvent.gestureType = QNativeGestureEvent::Zoom;
+ qNGEvent.percentage = float(amount);
+ break; }
+ case kEventGestureSwipe: {
+ HIPoint swipeDirection;
+ if (GetEventParameter(event, kEventParamSwipeDirection, typeHIPoint, 0,
+ sizeof(swipeDirection), 0, &swipeDirection) != noErr) {
+ handled_event = false;
+ break;
+ }
+ qNGEvent.gestureType = QNativeGestureEvent::Swipe;
+ qNGEvent.direction = QSize(-swipeDirection.x, -swipeDirection.y);
+ break; }
+ case kEventGestureMagnify: {
+ CGFloat amount;
+ if (GetEventParameter(event, kEventParamMagnificationAmount, typeCGFloat, 0,
+ sizeof(amount), 0, &amount) != noErr) {
+ handled_event = false;
+ break;
+ }
+ qNGEvent.gestureType = QNativeGestureEvent::Zoom;
+ qNGEvent.percentage = float(amount);
+ break; }
+ }
+
+ QApplication::sendSpontaneousEvent(widget, &qNGEvent);
+ break; }
+#endif // gestures
+
default:
handled_event = false;
}
@@ -1220,11 +1287,6 @@ OSStatus QWidgetPrivate::qt_widget_event(EventHandlerCallRef er, EventRef event,
QApplication::sendSpontaneousEvent(widget, &e);
if (!redirectionOffset.isNull())
widget->d_func()->restoreRedirected();
-#ifdef QT_RASTER_PAINTENGINE
- if(engine && engine->type() == QPaintEngine::Raster)
- static_cast<QRasterPaintEngine*>(engine)->flush(widget,
- qrgn.boundingRect().topLeft());
-#endif
//cleanup
if (engine)
@@ -3101,7 +3163,7 @@ void QWidgetPrivate::update_sys(const QRegion &rgn)
dirtyOnWidget += rgn;
#ifndef QT_MAC_USE_COCOA
RgnHandle rgnHandle = rgn.toQDRgnForUpdate_sys();
- if (rgnHandle)
+ if (rgnHandle)
HIViewSetNeedsDisplayInRegion(qt_mac_nativeview_for(q), QMacSmartQuickDrawRegion(rgnHandle), true);
else {
HIViewSetNeedsDisplay(qt_mac_nativeview_for(q), true); // do a complete repaint on overflow.
@@ -4555,21 +4617,6 @@ Q_GLOBAL_STATIC(QPaintEngineCleanupHandler, engineHandler)
QPaintEngine *QWidget::paintEngine() const
{
QPaintEngine *&pe = engineHandler()->engine;
-#ifdef QT_RASTER_PAINTENGINE
- if (!pe) {
- if(qgetenv("QT_MAC_USE_COREGRAPHICS").isNull())
- pe = new QRasterPaintEngine();
- else
- pe = new QCoreGraphicsPaintEngine();
- }
- if (pe->isActive()) {
- QPaintEngine *engine =
- qgetenv("QT_MAC_USE_COREGRAPHICS").isNull()
- ? (QPaintEngine*)new QRasterPaintEngine() : (QPaintEngine*)new QCoreGraphicsPaintEngine();
- engine->setAutoDestruct(true);
- return engine;
- }
-#else
if (!pe)
pe = new QCoreGraphicsPaintEngine();
if (pe->isActive()) {
@@ -4577,7 +4624,6 @@ QPaintEngine *QWidget::paintEngine() const
engine->setAutoDestruct(true);
return engine;
}
-#endif
return pe;
}
diff --git a/src/gui/kernel/qwidgetaction.cpp b/src/gui/kernel/qwidgetaction.cpp
index 911d332..a397e39 100644
--- a/src/gui/kernel/qwidgetaction.cpp
+++ b/src/gui/kernel/qwidgetaction.cpp
@@ -54,6 +54,8 @@ QT_BEGIN_NAMESPACE
for inserting custom widgets into action based containers, such
as toolbars.
+ \ingroup mainwindow-classes
+
Most actions in an application are represented as items in menus or
buttons in toolbars. However sometimes more complex widgets are
necessary. For example a zoom action in a word processor may be
@@ -100,9 +102,6 @@ QT_BEGIN_NAMESPACE
DirectConnection.
\endlist
- \ingroup application
- \mainclass
-
\sa QAction, QActionGroup, QWidget
*/
diff --git a/src/gui/math3d/qgenericmatrix.cpp b/src/gui/math3d/qgenericmatrix.cpp
index 271571c..1c924c7 100644
--- a/src/gui/math3d/qgenericmatrix.cpp
+++ b/src/gui/math3d/qgenericmatrix.cpp
@@ -47,6 +47,8 @@ QT_BEGIN_NAMESPACE
\class QGenericMatrix
\brief The QGenericMatrix class is a template class that represents a NxM transformation matrix with N columns and M rows.
\since 4.6
+ \ingroup painting
+ \ingroup painting-3D
The QGenericMatrix template has four parameters:
diff --git a/src/gui/math3d/qmatrix4x4.cpp b/src/gui/math3d/qmatrix4x4.cpp
index a67a832..8fc439b 100644
--- a/src/gui/math3d/qmatrix4x4.cpp
+++ b/src/gui/math3d/qmatrix4x4.cpp
@@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE
\class QMatrix4x4
\brief The QMatrix4x4 class represents a 4x4 transformation matrix in 3D space.
\since 4.6
+ \ingroup painting-3D
\sa QVector3D, QGenericMatrix
*/
@@ -1009,11 +1010,24 @@ QMatrix4x4& QMatrix4x4::rotate(qreal angle, const QVector3D& vector)
*/
QMatrix4x4& QMatrix4x4::rotate(qreal angle, qreal x, qreal y, qreal z)
{
+ if (angle == 0.0f)
+ return *this;
QMatrix4x4 m(1); // The "1" says to not load the identity.
- qreal a = angle * M_PI / 180.0f;
- qreal c = qCos(a);
- qreal s = qSin(a);
- qreal ic;
+ qreal c, s, ic;
+ if (angle == 90.0f || angle == -270.0f) {
+ s = 1.0f;
+ c = 0.0f;
+ } else if (angle == -90.0f || angle == 270.0f) {
+ s = -1.0f;
+ c = 0.0f;
+ } else if (angle == 180.0f || angle == -180.0f) {
+ s = 0.0f;
+ c = -1.0f;
+ } else {
+ qreal a = angle * M_PI / 180.0f;
+ c = qCos(a);
+ s = qSin(a);
+ }
bool quick = false;
if (x == 0.0f) {
if (y == 0.0f) {
diff --git a/src/gui/math3d/qquaternion.cpp b/src/gui/math3d/qquaternion.cpp
index 9e56966..b2c598f 100644
--- a/src/gui/math3d/qquaternion.cpp
+++ b/src/gui/math3d/qquaternion.cpp
@@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE
\class QQuaternion
\brief The QQuaternion class represents a quaternion consisting of a vector and scalar.
\since 4.6
+ \ingroup painting-3D
Quaternions are used to represent rotations in 3D space, and
consist of a 3D rotation axis specified by the x, y, and z
diff --git a/src/gui/math3d/qvector2d.cpp b/src/gui/math3d/qvector2d.cpp
index f7fef6c..1662020 100644
--- a/src/gui/math3d/qvector2d.cpp
+++ b/src/gui/math3d/qvector2d.cpp
@@ -53,6 +53,8 @@ QT_BEGIN_NAMESPACE
\class QVector2D
\brief The QVector2D class represents a vector or vertex in 2D space.
\since 4.6
+ \ingroup painting
+ \ingroup painting-3D
The QVector2D class can also be used to represent vertices in 2D space.
We therefore do not need to provide a separate vertex class.
diff --git a/src/gui/math3d/qvector3d.cpp b/src/gui/math3d/qvector3d.cpp
index 2915d3a..0e3f4e1 100644
--- a/src/gui/math3d/qvector3d.cpp
+++ b/src/gui/math3d/qvector3d.cpp
@@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE
\class QVector3D
\brief The QVector3D class represents a vector or vertex in 3D space.
\since 4.6
+ \ingroup painting-3D
Vectors are one of the main building blocks of 3D representation and
drawing. They consist of three coordinates, traditionally called
diff --git a/src/gui/math3d/qvector4d.cpp b/src/gui/math3d/qvector4d.cpp
index dd64103..a2efff7 100644
--- a/src/gui/math3d/qvector4d.cpp
+++ b/src/gui/math3d/qvector4d.cpp
@@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE
\class QVector4D
\brief The QVector4D class represents a vector or vertex in 4D space.
\since 4.6
+ \ingroup painting-3D
The QVector4D class can also be used to represent vertices in 4D space.
We therefore do not need to provide a separate vertex class.
diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri
index b9d293c..d11e818 100644
--- a/src/gui/painting/painting.pri
+++ b/src/gui/painting/painting.pri
@@ -80,9 +80,6 @@ SOURCES += \
painting/qtransform.cpp \
painting/qwindowsurface.cpp \
- DEFINES += QT_RASTER_IMAGEENGINE
- win32:DEFINES += QT_RASTER_PAINTENGINE
- embedded:DEFINES += QT_RASTER_PAINTENGINE
SOURCES += \
painting/qpaintengine_raster.cpp \
painting/qdrawhelper.cpp \
diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp
index 1121c0e..e447301 100644
--- a/src/gui/painting/qblendfunctions.cpp
+++ b/src/gui/painting/qblendfunctions.cpp
@@ -793,8 +793,351 @@ void qt_scale_image_argb32_on_argb32(uchar *destPixels, int dbpl,
}
}
+struct QTransformImageVertex
+{
+ qreal x, y, u, v; // destination coordinates (x, y) and source coordinates (u, v)
+};
+
+template <class SrcT, class DestT, class Blender>
+void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
+ const SrcT *srcPixels, int sbpl,
+ const QTransformImageVertex &topLeft, const QTransformImageVertex &bottomLeft,
+ const QTransformImageVertex &topRight, const QTransformImageVertex &bottomRight,
+ const QRect &sourceRect,
+ const QRect &clip,
+ qreal topY, qreal bottomY,
+ int dudx, int dvdx, int dudy, int dvdy, int u0, int v0,
+ Blender blender)
+{
+ int fromY = qMax(qRound(topY), clip.top());
+ int toY = qMin(qRound(bottomY), clip.top() + clip.height());
+ if (fromY >= toY)
+ return;
+
+ qreal leftSlope = (bottomLeft.x - topLeft.x) / (bottomLeft.y - topLeft.y);
+ qreal rightSlope = (bottomRight.x - topRight.x) / (bottomRight.y - topRight.y);
+ int dx_l = int(leftSlope * 0x10000);
+ int dx_r = int(rightSlope * 0x10000);
+ int x_l = int((topLeft.x + (0.5 + fromY - topLeft.y) * leftSlope + 0.5) * 0x10000);
+ int x_r = int((topRight.x + (0.5 + fromY - topRight.y) * rightSlope + 0.5) * 0x10000);
+
+ int fromX, toX, x1, x2, u, v, i, ii;
+ DestT *line;
+ for (int y = fromY; y < toY; ++y) {
+ line = reinterpret_cast<DestT *>(reinterpret_cast<uchar *>(destPixels) + y * dbpl);
+
+ fromX = qMax(x_l >> 16, clip.left());
+ toX = qMin(x_r >> 16, clip.left() + clip.width());
+ if (fromX < toX) {
+ // Because of rounding, we can get source coordinates outside the source image.
+ // Clamp these coordinates to the source rect to avoid segmentation fault and
+ // garbage on the screen.
+
+ // Find the first pixel on the current scan line where the source coordinates are within the source rect.
+ x1 = fromX;
+ u = x1 * dudx + y * dudy + u0;
+ v = x1 * dvdx + y * dvdy + v0;
+ for (; x1 < toX; ++x1) {
+ int uu = u >> 16;
+ int vv = v >> 16;
+ if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width()
+ && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) {
+ break;
+ }
+ u += dudx;
+ v += dvdx;
+ }
+
+ // Find the last pixel on the current scan line where the source coordinates are within the source rect.
+ x2 = toX;
+ u = (x2 - 1) * dudx + y * dudy + u0;
+ v = (x2 - 1) * dvdx + y * dvdy + v0;
+ for (; x2 > x1; --x2) {
+ int uu = u >> 16;
+ int vv = v >> 16;
+ if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width()
+ && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) {
+ break;
+ }
+ u -= dudx;
+ v -= dvdx;
+ }
+
+ // Set up values at the beginning of the scan line.
+ u = fromX * dudx + y * dudy + u0;
+ v = fromX * dvdx + y * dvdy + v0;
+ line += fromX;
+
+ // Beginning of the scan line, with per-pixel checks.
+ i = x1 - fromX;
+ while (i) {
+ int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1);
+ int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1);
+ blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]);
+ u += dudx;
+ v += dvdx;
+ ++line;
+ --i;
+ }
+
+ // Middle of the scan line, without checks.
+ // Manual loop unrolling.
+ i = x2 - x1;
+ ii = i >> 3;
+ while (ii) {
+ blender.write(&line[0], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx;
+ blender.write(&line[1], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx;
+ blender.write(&line[2], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx;
+ blender.write(&line[3], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx;
+ blender.write(&line[4], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx;
+ blender.write(&line[5], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx;
+ blender.write(&line[6], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx;
+ blender.write(&line[7], reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx;
+ line += 8;
+ --ii;
+ }
+ switch (i & 7) {
+ case 7: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
+ case 6: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
+ case 5: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
+ case 4: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
+ case 3: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
+ case 2: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
+ case 1: blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + (v >> 16) * sbpl)[u >> 16]); u += dudx; v += dvdx; ++line;
+ }
+
+ // End of the scan line, with per-pixel checks.
+ i = toX - x2;
+ while (i) {
+ int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1);
+ int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1);
+ blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]);
+ u += dudx;
+ v += dvdx;
+ ++line;
+ --i;
+ }
+ }
+ x_l += dx_l;
+ x_r += dx_r;
+ }
+}
+
+template <class SrcT, class DestT, class Blender>
+void qt_transform_image(DestT *destPixels, int dbpl,
+ const SrcT *srcPixels, int sbpl,
+ const QRectF &targetRect,
+ const QRectF &sourceRect,
+ const QRect &clip,
+ const QTransform &targetRectTransform,
+ Blender blender)
+{
+ enum Corner
+ {
+ TopLeft,
+ TopRight,
+ BottomRight,
+ BottomLeft
+ };
+
+ // map source rectangle to destination.
+ QTransformImageVertex v[4];
+ v[TopLeft].u = v[BottomLeft].u = sourceRect.left();
+ v[TopLeft].v = v[TopRight].v = sourceRect.top();
+ v[TopRight].u = v[BottomRight].u = sourceRect.right();
+ v[BottomLeft].v = v[BottomRight].v = sourceRect.bottom();
+ targetRectTransform.map(targetRect.left(), targetRect.top(), &v[TopLeft].x, &v[TopLeft].y);
+ targetRectTransform.map(targetRect.right(), targetRect.top(), &v[TopRight].x, &v[TopRight].y);
+ targetRectTransform.map(targetRect.left(), targetRect.bottom(), &v[BottomLeft].x, &v[BottomLeft].y);
+ targetRectTransform.map(targetRect.right(), targetRect.bottom(), &v[BottomRight].x, &v[BottomRight].y);
+
+ // find topmost vertex.
+ int topmost = 0;
+ for (int i = 1; i < 4; ++i) {
+ if (v[i].y < v[topmost].y)
+ topmost = i;
+ }
+ // rearrange array such that topmost vertex is at index 0.
+ switch (topmost) {
+ case 1:
+ {
+ QTransformImageVertex t = v[0];
+ for (int i = 0; i < 3; ++i)
+ v[i] = v[i+1];
+ v[3] = t;
+ }
+ break;
+ case 2:
+ qSwap(v[0], v[2]);
+ qSwap(v[1], v[3]);
+ break;
+ case 3:
+ {
+ QTransformImageVertex t = v[3];
+ for (int i = 3; i > 0; --i)
+ v[i] = v[i-1];
+ v[0] = t;
+ }
+ break;
+ }
+
+ // if necessary, swap vertex 1 and 3 such that 1 is to the left of 3.
+ qreal dx1 = v[1].x - v[0].x;
+ qreal dy1 = v[1].y - v[0].y;
+ qreal dx2 = v[3].x - v[0].x;
+ qreal dy2 = v[3].y - v[0].y;
+ if (dx1 * dy2 - dx2 * dy1 > 0)
+ qSwap(v[1], v[3]);
+
+ QTransformImageVertex u = {v[1].x - v[0].x, v[1].y - v[0].y, v[1].u - v[0].u, v[1].v - v[0].v};
+ QTransformImageVertex w = {v[2].x - v[0].x, v[2].y - v[0].y, v[2].u - v[0].u, v[2].v - v[0].v};
+
+ qreal det = u.x * w.y - u.y * w.x;
+ if (det == 0)
+ return;
+
+ qreal invDet = 1.0 / det;
+ qreal m11, m12, m21, m22, mdx, mdy;
+
+ m11 = (u.u * w.y - u.y * w.u) * invDet;
+ m12 = (u.x * w.u - u.u * w.x) * invDet;
+ m21 = (u.v * w.y - u.y * w.v) * invDet;
+ m22 = (u.x * w.v - u.v * w.x) * invDet;
+ mdx = v[0].u - m11 * v[0].x - m12 * v[0].y;
+ mdy = v[0].v - m21 * v[0].x - m22 * v[0].y;
+
+ int dudx = int(m11 * 0x10000);
+ int dvdx = int(m21 * 0x10000);
+ int dudy = int(m12 * 0x10000);
+ int dvdy = int(m22 * 0x10000);
+ int u0 = qCeil((0.5 * m11 + 0.5 * m12 + mdx) * 0x10000) - 1;
+ int v0 = qCeil((0.5 * m21 + 0.5 * m22 + mdy) * 0x10000) - 1;
+
+ int x1 = qFloor(sourceRect.left());
+ int y1 = qFloor(sourceRect.top());
+ int x2 = qCeil(sourceRect.right());
+ int y2 = qCeil(sourceRect.bottom());
+ QRect sourceRectI(x1, y1, x2 - x1, y2 - y1);
+
+ // rasterize trapezoids.
+ if (v[1].y < v[3].y) {
+ qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[0], v[1], v[0], v[3], sourceRectI, clip, v[0].y, v[1].y, dudx, dvdx, dudy, dvdy, u0, v0, blender);
+ qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[1], v[2], v[0], v[3], sourceRectI, clip, v[1].y, v[3].y, dudx, dvdx, dudy, dvdy, u0, v0, blender);
+ qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[1], v[2], v[3], v[2], sourceRectI, clip, v[3].y, v[2].y, dudx, dvdx, dudy, dvdy, u0, v0, blender);
+ } else {
+ qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[0], v[1], v[0], v[3], sourceRectI, clip, v[0].y, v[3].y, dudx, dvdx, dudy, dvdy, u0, v0, blender);
+ qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[0], v[1], v[3], v[2], sourceRectI, clip, v[3].y, v[1].y, dudx, dvdx, dudy, dvdy, u0, v0, blender);
+ qt_transform_image_rasterize(destPixels, dbpl, srcPixels, sbpl, v[1], v[2], v[3], v[2], sourceRectI, clip, v[1].y, v[2].y, dudx, dvdx, dudy, dvdy, u0, v0, blender);
+ }
+}
+
+void qt_transform_image_rgb16_on_rgb16(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ const QRectF &targetRect,
+ const QRectF &sourceRect,
+ const QRect &clip,
+ const QTransform &targetRectTransform,
+ int const_alpha)
+{
+ if (const_alpha == 256) {
+ Blend_RGB16_on_RGB16_NoAlpha noAlpha;
+ qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl,
+ reinterpret_cast<const quint16 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, noAlpha);
+ } else {
+ Blend_RGB16_on_RGB16_ConstAlpha constAlpha(const_alpha);
+ qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl,
+ reinterpret_cast<const quint16 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, constAlpha);
+ }
+}
+
+void qt_transform_image_argb24_on_rgb16(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ const QRectF &targetRect,
+ const QRectF &sourceRect,
+ const QRect &clip,
+ const QTransform &targetRectTransform,
+ int const_alpha)
+{
+ if (const_alpha == 256) {
+ Blend_ARGB24_on_RGB16_SourceAlpha noAlpha;
+ qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl,
+ reinterpret_cast<const qargb8565 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, noAlpha);
+ } else {
+ Blend_ARGB24_on_RGB16_SourceAndConstAlpha constAlpha(const_alpha);
+ qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl,
+ reinterpret_cast<const qargb8565 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, constAlpha);
+ }
+}
+void qt_transform_image_argb32_on_rgb16(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ const QRectF &targetRect,
+ const QRectF &sourceRect,
+ const QRect &clip,
+ const QTransform &targetRectTransform,
+ int const_alpha)
+{
+ if (const_alpha == 256) {
+ Blend_ARGB32_on_RGB16_SourceAlpha noAlpha;
+ qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl,
+ reinterpret_cast<const quint32 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, noAlpha);
+ } else {
+ Blend_ARGB32_on_RGB16_SourceAndConstAlpha constAlpha(const_alpha);
+ qt_transform_image(reinterpret_cast<quint16 *>(destPixels), dbpl,
+ reinterpret_cast<const quint32 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, constAlpha);
+ }
+}
+
+
+void qt_transform_image_rgb32_on_rgb32(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ const QRectF &targetRect,
+ const QRectF &sourceRect,
+ const QRect &clip,
+ const QTransform &targetRectTransform,
+ int const_alpha)
+{
+ if (const_alpha == 256) {
+ Blend_RGB32_on_RGB32_NoAlpha noAlpha;
+ qt_transform_image(reinterpret_cast<quint32 *>(destPixels), dbpl,
+ reinterpret_cast<const quint32 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, noAlpha);
+ } else {
+ Blend_RGB32_on_RGB32_ConstAlpha constAlpha(const_alpha);
+ qt_transform_image(reinterpret_cast<quint32 *>(destPixels), dbpl,
+ reinterpret_cast<const quint32 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, constAlpha);
+ }
+}
+
+void qt_transform_image_argb32_on_argb32(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ const QRectF &targetRect,
+ const QRectF &sourceRect,
+ const QRect &clip,
+ const QTransform &targetRectTransform,
+ int const_alpha)
+{
+ if (const_alpha == 256) {
+ Blend_ARGB32_on_ARGB32_SourceAlpha sourceAlpha;
+ qt_transform_image(reinterpret_cast<quint32 *>(destPixels), dbpl,
+ reinterpret_cast<const quint32 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, sourceAlpha);
+ } else {
+ Blend_ARGB32_on_ARGB32_SourceAndConstAlpha constAlpha(const_alpha);
+ qt_transform_image(reinterpret_cast<quint32 *>(destPixels), dbpl,
+ reinterpret_cast<const quint32 *>(srcPixels), sbpl,
+ targetRect, sourceRect, clip, targetRectTransform, constAlpha);
+ }
+}
+
SrcOverScaleFunc qScaleFunctions[QImage::NImageFormats][QImage::NImageFormats] = {
{ // Format_Invalid
0, // Format_Invalid,
@@ -1378,5 +1721,295 @@ SrcOverBlendFunc qBlendFunctions[QImage::NImageFormats][QImage::NImageFormats] =
}
};
+SrcOverTransformFunc qTransformFunctions[QImage::NImageFormats][QImage::NImageFormats] = {
+ { // Format_Invalid
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_Mono
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_MonoLSB
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_Indexed8
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_RGB32
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ qt_transform_image_rgb32_on_rgb32, // Format_RGB32,
+ 0, // Format_ARGB32,
+ qt_transform_image_argb32_on_argb32, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_ARGB32
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_ARGB32_Premultiplied
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ qt_transform_image_rgb32_on_rgb32, // Format_RGB32,
+ 0, // Format_ARGB32,
+ qt_transform_image_argb32_on_argb32, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_RGB16
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ qt_transform_image_argb32_on_rgb16, // Format_ARGB32_Premultiplied,
+ qt_transform_image_rgb16_on_rgb16, // Format_RGB16,
+ qt_transform_image_argb24_on_rgb16, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_ARGB8565_Premultiplied
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_RGB666
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_ARGB6666_Premultiplied
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_RGB555
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_ARGB8555_Premultiplied
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_RGB888
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_RGB444
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ },
+ { // Format_ARGB4444_Premultiplied
+ 0, // Format_Invalid,
+ 0, // Format_Mono,
+ 0, // Format_MonoLSB,
+ 0, // Format_Indexed8,
+ 0, // Format_RGB32,
+ 0, // Format_ARGB32,
+ 0, // Format_ARGB32_Premultiplied,
+ 0, // Format_RGB16,
+ 0, // Format_ARGB8565_Premultiplied,
+ 0, // Format_RGB666,
+ 0, // Format_ARGB6666_Premultiplied,
+ 0, // Format_RGB555,
+ 0, // Format_ARGB8555_Premultiplied,
+ 0, // Format_RGB888,
+ 0, // Format_RGB444,
+ 0 // Format_ARGB4444_Premultiplied,
+ }
+};
QT_END_NAMESPACE
diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp
index be5db6b..931d7ff 100644
--- a/src/gui/painting/qbrush.cpp
+++ b/src/gui/painting/qbrush.cpp
@@ -233,7 +233,7 @@ struct QGradientBrushData : public QBrushData
/*!
\class QBrush
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
\brief The QBrush class defines the fill pattern of shapes drawn
@@ -1153,7 +1153,7 @@ QDataStream &operator>>(QDataStream &s, QBrush &b)
/*!
\class QGradient
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
\brief The QGradient class is used in combination with QBrush to
@@ -1517,7 +1517,7 @@ bool QGradient::operator==(const QGradient &gradient)
/*!
\class QLinearGradient
- \ingroup multimedia
+ \ingroup painting
\brief The QLinearGradient class is used in combination with QBrush to
specify a linear gradient brush.
@@ -1696,7 +1696,7 @@ void QLinearGradient::setFinalStop(const QPointF &stop)
/*!
\class QRadialGradient
- \ingroup multimedia
+ \ingroup painting
\brief The QRadialGradient class is used in combination with QBrush to
specify a radial gradient brush.
@@ -1953,7 +1953,7 @@ void QRadialGradient::setFocalPoint(const QPointF &focalPoint)
/*!
\class QConicalGradient
- \ingroup multimedia
+ \ingroup painting
\brief The QConicalGradient class is used in combination with QBrush to
specify a conical gradient brush.
diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp
index 11a9ae7..4e93f04 100644
--- a/src/gui/painting/qcolor.cpp
+++ b/src/gui/painting/qcolor.cpp
@@ -66,9 +66,9 @@ QT_BEGIN_NAMESPACE
\class QColor
\brief The QColor class provides colors based on RGB, HSV or CMYK values.
- \ingroup multimedia
+ \ingroup painting
\ingroup appearance
- \mainclass
+
A color is normally specified in terms of RGB (red, green, and
blue) components, but it is also possible to specify it in terms
diff --git a/doc/src/classes/qcolormap.qdoc b/src/gui/painting/qcolormap.qdoc
index 5536137..e4a88f0 100644
--- a/doc/src/classes/qcolormap.qdoc
+++ b/src/gui/painting/qcolormap.qdoc
@@ -41,7 +41,7 @@
/*!
\class QColormap
- \ingroup multimedia
+ \ingroup painting
\brief The QColormap class maps device independent QColors to device
dependent pixel values.
diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h
index 18c3358..83d2671 100644
--- a/src/gui/painting/qdrawhelper_p.h
+++ b/src/gui/painting/qdrawhelper_p.h
@@ -146,6 +146,14 @@ typedef void (*SrcOverScaleFunc)(uchar *destPixels, int dbpl,
const QRect &clipRect,
int const_alpha);
+typedef void (*SrcOverTransformFunc)(uchar *destPixels, int dbpl,
+ const uchar *src, int spbl,
+ const QRectF &targetRect,
+ const QRectF &sourceRect,
+ const QRect &clipRect,
+ const QTransform &targetRectTransform,
+ int const_alpha);
+
struct DrawHelper {
ProcessSpans blendColor;
@@ -158,6 +166,7 @@ struct DrawHelper {
extern SrcOverBlendFunc qBlendFunctions[QImage::NImageFormats][QImage::NImageFormats];
extern SrcOverScaleFunc qScaleFunctions[QImage::NImageFormats][QImage::NImageFormats];
+extern SrcOverTransformFunc qTransformFunctions[QImage::NImageFormats][QImage::NImageFormats];
extern DrawHelper qDrawHelper[QImage::NImageFormats];
diff --git a/src/gui/painting/qmatrix.cpp b/src/gui/painting/qmatrix.cpp
index ce71a84..abff9bf 100644
--- a/src/gui/painting/qmatrix.cpp
+++ b/src/gui/painting/qmatrix.cpp
@@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE
coordinate system.
\obsolete
- \ingroup multimedia
+ \ingroup painting
A matrix specifies how to translate, scale, shear or rotate the
coordinate system, and is typically used when rendering graphics.
diff --git a/src/gui/painting/qpaintdevice.cpp b/src/gui/painting/qpaintdevice.cpp
index 6477952..6a2a4c4 100644
--- a/src/gui/painting/qpaintdevice.cpp
+++ b/src/gui/painting/qpaintdevice.cpp
@@ -64,3 +64,5 @@ int QPaintDevice::metric(PaintDeviceMetric) const
qWarning("QPaintDevice::metrics: Device has no metric information");
return 0;
}
+
+QT_END_NAMESPACE
diff --git a/doc/src/classes/qpaintdevice.qdoc b/src/gui/painting/qpaintdevice.qdoc
index 6e7c561..5933484 100644
--- a/doc/src/classes/qpaintdevice.qdoc
+++ b/src/gui/painting/qpaintdevice.qdoc
@@ -44,7 +44,7 @@
\brief The QPaintDevice class is the base class of objects that
can be painted.
- \ingroup multimedia
+ \ingroup painting
A paint device is an abstraction of a two-dimensional space that
can be drawn using a QPainter. Its default coordinate system has
diff --git a/src/gui/painting/qpaintdevice_qws.cpp b/src/gui/painting/qpaintdevice_qws.cpp
index 9a6a3d3..b161cb8 100644
--- a/src/gui/painting/qpaintdevice_qws.cpp
+++ b/src/gui/painting/qpaintdevice_qws.cpp
@@ -48,39 +48,6 @@
QT_BEGIN_NAMESPACE
-QPaintDevice::QPaintDevice()
-{
- painters = 0;
-}
-
-extern void qt_painter_removePaintDevice(QPaintDevice *); //qpainter.cpp
-
-
-QPaintDevice::~QPaintDevice()
-{
- if (paintingActive())
- qWarning("QPaintDevice: Cannot destroy paint device that is being "
- "painted");
- qt_painter_removePaintDevice(this);
-}
-
-
-int QPaintDevice::metric(PaintDeviceMetric m) const
-{
- qWarning("QPaintDevice::metrics: Device has no metric information");
- if (m == PdmDpiX) {
- return 72;
- } else if (m == PdmDpiY) {
- return 72;
- } else if (m == PdmNumColors) {
- // FIXME: does this need to be a real value?
- return 256;
- } else {
- qDebug("Unrecognised metric %d!",m);
- return 0;
- }
-}
-
QWSDisplay *QPaintDevice::qwsDisplay()
{
return qt_fbdpy;
diff --git a/src/gui/painting/qpaintengine.cpp b/src/gui/painting/qpaintengine.cpp
index a8518ea..07fec96 100644
--- a/src/gui/painting/qpaintengine.cpp
+++ b/src/gui/painting/qpaintengine.cpp
@@ -145,7 +145,7 @@ QFont QTextItem::font() const
/*!
\class QPaintEngine
- \ingroup multimedia
+ \ingroup painting
\brief The QPaintEngine class provides an abstract definition of how
QPainter draws to a given device on a given platform.
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index d00329b..63c4e32 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -2495,10 +2495,7 @@ void QRasterPaintEngine::drawImage(const QPointF &p, const QImage &img)
const QClipData *clip = d->clip();
QPointF pt(p.x() + s->matrix.dx(), p.y() + s->matrix.dy());
- // ### TODO: remove this eventually...
- static bool NO_BLEND_FUNC = !qgetenv("QT_NO_BLEND_FUNCTIONS").isNull();
-
- if (s->flags.fast_images && !NO_BLEND_FUNC) {
+ if (s->flags.fast_images) {
SrcOverBlendFunc func = qBlendFunctions[d->rasterBuffer->format][img.format()];
if (func) {
if (!clip) {
@@ -2511,6 +2508,8 @@ void QRasterPaintEngine::drawImage(const QPointF &p, const QImage &img)
}
}
+
+
d->image_filler.clip = clip;
d->image_filler.initTexture(&img, s->intOpacity, QTextureData::Plain, img.rect());
if (!d->image_filler.blend)
@@ -2545,12 +2544,44 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
Q_D(QRasterPaintEngine);
QRasterPaintEngineState *s = state();
const bool aa = s->flags.antialiased || s->flags.bilinear;
- if (!aa && sr.size() == QSize(1, 1)) {
+ int sr_l = qFloor(sr.left());
+ int sr_r = qCeil(sr.right()) - 1;
+ int sr_t = qFloor(sr.top());
+ int sr_b = qCeil(sr.bottom()) - 1;
+
+ if (!aa && sr_l == sr_r && sr_t == sr_b) {
// as fillRect will apply the aliased coordinate delta we need to
// subtract it here as we don't use it for image drawing
QTransform old = s->matrix;
s->matrix = s->matrix * QTransform::fromTranslate(-aliasedCoordinateDelta, -aliasedCoordinateDelta);
- fillRect(r, QColor::fromRgba(img.pixel(sr.x(), sr.y())));
+
+ // Do whatever fillRect() does, but without premultiplying the color if it's already premultiplied.
+ QRgb color = img.pixel(sr_l, sr_t);
+ switch (img.format()) {
+ case QImage::Format_ARGB32_Premultiplied:
+ case QImage::Format_ARGB8565_Premultiplied:
+ case QImage::Format_ARGB6666_Premultiplied:
+ case QImage::Format_ARGB8555_Premultiplied:
+ case QImage::Format_ARGB4444_Premultiplied:
+ // Combine premultiplied color with the opacity set on the painter.
+ d->solid_color_filler.solid.color =
+ ((((color & 0x00ff00ff) * s->intOpacity) >> 8) & 0x00ff00ff)
+ | ((((color & 0xff00ff00) >> 8) * s->intOpacity) & 0xff00ff00);
+ break;
+ default:
+ d->solid_color_filler.solid.color = PREMUL(ARGB_COMBINE_ALPHA(color, s->intOpacity));
+ break;
+ }
+
+ if ((d->solid_color_filler.solid.color & 0xff000000) == 0
+ && s->composition_mode == QPainter::CompositionMode_SourceOver) {
+ return;
+ }
+
+ d->solid_color_filler.clip = d->clip();
+ d->solid_color_filler.adjustSpanMethods();
+ fillRect(r, &d->solid_color_filler);
+
s->matrix = old;
return;
}
@@ -2562,14 +2593,24 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
if (s->matrix.type() > QTransform::TxTranslate || stretch_sr) {
if (s->flags.fast_images) {
- SrcOverScaleFunc func = qScaleFunctions[d->rasterBuffer->format][img.format()];
- if (func && (!clip || clip->hasRectClip)) {
- func(d->rasterBuffer->buffer(), d->rasterBuffer->bytesPerLine(),
- img.bits(), img.bytesPerLine(),
- qt_mapRect_non_normalizing(r, s->matrix), sr,
- !clip ? d->deviceRect : clip->clipRect,
- s->intOpacity);
- return;
+ if (s->matrix.type() > QTransform::TxScale) {
+ SrcOverTransformFunc func = qTransformFunctions[d->rasterBuffer->format][img.format()];
+ if (func && (!clip || clip->hasRectClip)) {
+ func(d->rasterBuffer->buffer(), d->rasterBuffer->bytesPerLine(), img.bits(),
+ img.bytesPerLine(), r, sr, !clip ? d->deviceRect : clip->clipRect,
+ s->matrix, s->intOpacity);
+ return;
+ }
+ } else {
+ SrcOverScaleFunc func = qScaleFunctions[d->rasterBuffer->format][img.format()];
+ if (func && (!clip || clip->hasRectClip)) {
+ func(d->rasterBuffer->buffer(), d->rasterBuffer->bytesPerLine(),
+ img.bits(), img.bytesPerLine(),
+ qt_mapRect_non_normalizing(r, s->matrix), sr,
+ !clip ? d->deviceRect : clip->clipRect,
+ s->intOpacity);
+ return;
+ }
}
}
@@ -4056,7 +4097,7 @@ void QRasterPaintEnginePrivate::recalculateFastImages()
s->flags.fast_images = !(s->renderHints & QPainter::SmoothPixmapTransform)
&& rasterBuffer->compositionMode == QPainter::CompositionMode_SourceOver
- && s->matrix.type() <= QTransform::TxScale;
+ && s->matrix.type() <= QTransform::TxShear;
}
@@ -5189,6 +5230,13 @@ static void drawLine_midpoint_i(int x1, int y1, int x2, int y2, ProcessSpans spa
dy = -dy;
}
+ int x_lower_limit = - 128;
+ if (x1 < x_lower_limit) {
+ int cy = dy * (x_lower_limit - x1) / dx + y1;
+ drawLine_midpoint_i(x_lower_limit, cy, x2, y2, span_func, data, style, devRect);
+ return;
+ }
+
if (style == LineDrawNormal)
--x2;
@@ -5326,6 +5374,13 @@ static void drawLine_midpoint_i(int x1, int y1, int x2, int y2, ProcessSpans spa
dx = -dx;
}
+ int y_lower_limit = - 128;
+ if (y1 < y_lower_limit) {
+ int cx = dx * (y_lower_limit - y1) / dy + x1;
+ drawLine_midpoint_i(cx, y_lower_limit, x2, y2, span_func, data, style, devRect);
+ return;
+ }
+
if (style == LineDrawNormal)
--y2;
diff --git a/src/gui/painting/qpaintengine_x11.cpp b/src/gui/painting/qpaintengine_x11.cpp
index 6816aac..a4d34b5 100644
--- a/src/gui/painting/qpaintengine_x11.cpp
+++ b/src/gui/painting/qpaintengine_x11.cpp
@@ -2459,15 +2459,23 @@ void QX11PaintEngine::drawFreetype(const QPointF &p, const QTextItemInt &ti)
XRectangle rects[rectcount];
int num_rects = 0;
+ QPoint delta(qRound(d->matrix.dx()), qRound(d->matrix.dy()));
+ QRect clip(d->polygonClipper.boundingRect());
for (int i=0; i < path.elementCount(); i+=5) {
int x = qRound(path.elementAt(i).x);
int y = qRound(path.elementAt(i).y);
int w = qRound(path.elementAt(i+1).x) - x;
int h = qRound(path.elementAt(i+2).y) - y;
- rects[num_rects].x = x + qRound(d->matrix.dx());
- rects[num_rects].y = y + qRound(d->matrix.dy());
- rects[num_rects].width = w;
- rects[num_rects].height = h;
+
+ QRect rect = QRect(x + delta.x(), y + delta.y(), w, h);
+ rect = rect.intersected(clip);
+ if (rect.isEmpty())
+ continue;
+
+ rects[num_rects].x = short(rect.x());
+ rects[num_rects].y = short(rect.y());
+ rects[num_rects].width = ushort(rect.width());
+ rects[num_rects].height = ushort(rect.height());
++num_rects;
if (num_rects == rectcount) {
XFillRectangles(d->dpy, d->hd, d->gc, rects, num_rects);
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 0762138..ab35ead 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -924,8 +924,8 @@ void QPainterPrivate::updateState(QPainterState *newState)
\brief The QPainter class performs low-level painting on widgets and
other paint devices.
- \ingroup multimedia
- \mainclass
+ \ingroup painting
+
\reentrant
QPainter provides highly optimized functions to do most of the
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index ed57e63..5bc4bdb 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -153,7 +153,7 @@ static void qt_debug_path(const QPainterPath &path)
/*!
\class QPainterPath
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
\brief The QPainterPath class provides a container for painting operations,
@@ -2396,7 +2396,7 @@ void qt_path_stroke_cubic_to(qfixed c1x, qfixed c1y,
/*!
\since 4.1
\class QPainterPathStroker
- \ingroup multimedia
+ \ingroup painting
\brief The QPainterPathStroker class is used to generate fillable
outlines for a given painter path.
diff --git a/src/gui/painting/qpen.cpp b/src/gui/painting/qpen.cpp
index 047fd9b..51929a2 100644
--- a/src/gui/painting/qpen.cpp
+++ b/src/gui/painting/qpen.cpp
@@ -52,9 +52,9 @@ typedef QPenPrivate QPenData;
/*!
\class QPen
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
- \mainclass
+
\brief The QPen class defines how a QPainter should draw lines and outlines
of shapes.
diff --git a/src/gui/painting/qpolygon.cpp b/src/gui/painting/qpolygon.cpp
index 87a9848..044b2c5 100644
--- a/src/gui/painting/qpolygon.cpp
+++ b/src/gui/painting/qpolygon.cpp
@@ -91,7 +91,7 @@ static void qt_polygon_isect_line(const QPointF &p1, const QPointF &p2, const QP
\reentrant
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
A QPolygon object is a QVector<QPoint>. The easiest way to add
@@ -489,7 +489,7 @@ QDebug operator<<(QDebug dbg, const QPolygon &a)
floating point precision.
\reentrant
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
A QPolygonF is a QVector<QPointF>. The easiest way to add points
diff --git a/src/gui/painting/qprinter.cpp b/src/gui/painting/qprinter.cpp
index f8399af..666719f 100644
--- a/src/gui/painting/qprinter.cpp
+++ b/src/gui/painting/qprinter.cpp
@@ -268,8 +268,8 @@ void QPrinterPrivate::addToManualSetList(QPrintEngine::PrintEnginePropertyKey ke
\brief The QPrinter class is a paint device that paints on a printer.
- \ingroup multimedia
- \mainclass
+ \ingroup printing
+
This device represents a series of pages of printed output, and is
used in almost exactly the same way as other paint devices such as
@@ -2204,7 +2204,7 @@ bool QPrinter::isOptionEnabled( PrinterOption option ) const
\class QPrintEngine
\reentrant
- \ingroup multimedia
+ \ingroup printing
\brief The QPrintEngine class defines an interface for how QPrinter
interacts with a given printing subsystem.
diff --git a/doc/src/classes/qprinterinfo.qdoc b/src/gui/painting/qprinterinfo.qdoc
index 7507e8a..e3cbe96 100644
--- a/doc/src/classes/qprinterinfo.qdoc
+++ b/src/gui/painting/qprinterinfo.qdoc
@@ -44,6 +44,8 @@
\brief The QPrinterInfo class gives access to information about
existing printers.
+
+ \ingroup printing
Use the static functions to generate a list of QPrinterInfo
objects. Each QPrinterInfo object in the list represents a single
diff --git a/src/gui/painting/qregion.cpp b/src/gui/painting/qregion.cpp
index 4e75911..4ddc8f3 100644
--- a/src/gui/painting/qregion.cpp
+++ b/src/gui/painting/qregion.cpp
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
\class QRegion
\brief The QRegion class specifies a clip region for a painter.
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
QRegion is used with QPainter::setClipRegion() to limit the paint
diff --git a/src/gui/painting/qstylepainter.cpp b/src/gui/painting/qstylepainter.cpp
index 959caa9..93512d0 100644
--- a/src/gui/painting/qstylepainter.cpp
+++ b/src/gui/painting/qstylepainter.cpp
@@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE
elements inside a widget.
\ingroup appearance
- \ingroup multimedia
+ \ingroup painting
QStylePainter extends QPainter with a set of high-level \c
draw...() functions implemented on top of QStyle's API. The
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index 8832a3d..859767b 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -93,7 +93,7 @@ QT_BEGIN_NAMESPACE
\class QTransform
\brief The QTransform class specifies 2D transformations of a coordinate system.
\since 4.3
- \ingroup multimedia
+ \ingroup painting
A transformation specifies how to translate, scale, shear, rotate
or project the coordinate system, and is typically used when
diff --git a/doc/src/classes/qmacstyle.qdoc b/src/gui/styles/qmacstyle.qdoc
index 171ddb0..171ddb0 100644
--- a/doc/src/classes/qmacstyle.qdoc
+++ b/src/gui/styles/qmacstyle.qdoc
diff --git a/src/gui/styles/qstyleoption.cpp b/src/gui/styles/qstyleoption.cpp
index eabbb8d..04ecbc4 100644
--- a/src/gui/styles/qstyleoption.cpp
+++ b/src/gui/styles/qstyleoption.cpp
@@ -4937,7 +4937,7 @@ QStyleOptionSizeGrip::QStyleOptionSizeGrip(int version)
\brief The QStyleOptionGraphicsItem class is used to describe
the parameters needed to draw a QGraphicsItem.
\since 4.2
- \ingroup multimedia
+ \ingroup graphicsview-api
For performance reasons, the access to the member variables is
direct (i.e., using the \c . or \c -> operator). This low-level feel
diff --git a/src/gui/text/qabstracttextdocumentlayout.cpp b/src/gui/text/qabstracttextdocumentlayout.cpp
index 8b21c8f..f2ddeb6 100644
--- a/src/gui/text/qabstracttextdocumentlayout.cpp
+++ b/src/gui/text/qabstracttextdocumentlayout.cpp
@@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE
\brief The QAbstractTextDocumentLayout class is an abstract base
class used to implement custom layouts for QTextDocuments.
- \ingroup text
+ \ingroup richtext-processing
The standard layout provided by Qt can handle simple word processing
including inline images, lists and tables.
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index d838f45..21277c5 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -408,11 +408,11 @@ QFontEngineData::~QFontEngineData()
\brief The QFont class specifies a font used for drawing text.
- \ingroup multimedia
+ \ingroup painting
\ingroup appearance
\ingroup shared
- \ingroup text
- \mainclass
+ \ingroup richtext-processing
+
When you create a QFont object you specify various attributes that
you want the font to have. Qt will use the font with the specified
@@ -2270,9 +2270,8 @@ QDataStream &operator>>(QDataStream &s, QFont &font)
\brief The QFontInfo class provides general information about fonts.
- \ingroup multimedia
+ \ingroup appearance
\ingroup shared
- \ingroup text
The QFontInfo class provides the same access functions as QFont,
e.g. family(), pointSize(), italic(), weight(), fixedPitch(),
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index 03ecc84..7f0a7aa 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -1295,9 +1295,7 @@ QString QFontDatabase::styleString(const QFontInfo &fontInfo)
\brief The QFontDatabase class provides information about the fonts available in the underlying window system.
- \ingroup environment
- \ingroup multimedia
- \ingroup text
+ \ingroup appearance
The most common uses of this class are to query the database for
the list of font families() and for the pointSizes() and styles()
@@ -2427,7 +2425,7 @@ QStringList QFontDatabase::applicationFontFamilies(int id)
means that all QPainter::drawText() calls outside the GUI thread
will not produce readable output.
- \sa threads.html#painting-in-threads
+ \sa {Thread-Support in Qt Modules#Painting In Threads}{Painting In Threads}
*/
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index b3d1a5f..c017f8b 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -75,9 +75,8 @@ extern int qt_defaultDpi();
\brief The QFontMetrics class provides font metrics information.
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
- \ingroup text
QFontMetrics functions calculate the size of characters and
strings for a given font. There are three ways you can create a
@@ -941,9 +940,8 @@ int QFontMetrics::lineWidth() const
\brief The QFontMetricsF class provides font metrics information.
- \ingroup multimedia
+ \ingroup painting
\ingroup shared
- \ingroup text
QFontMetricsF functions calculate the size of characters and
strings for a given font. You can construct a QFontMetricsF object
diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp
index 5c54500..cdb30ef 100644
--- a/src/gui/text/qsyntaxhighlighter.cpp
+++ b/src/gui/text/qsyntaxhighlighter.cpp
@@ -219,7 +219,7 @@ void QSyntaxHighlighterPrivate::reformatBlock(QTextBlock block)
\since 4.1
- \ingroup text
+ \ingroup richtext-processing
The QSyntaxHighlighter class is a base class for implementing
QTextEdit syntax highlighters. A syntax highligher automatically
diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp
index 58f8a06..1c14d20 100644
--- a/src/gui/text/qtextcontrol.cpp
+++ b/src/gui/text/qtextcontrol.cpp
@@ -2262,7 +2262,7 @@ void QTextControl::print(QPrinter *printer) const
{
#ifndef QT_NO_PRINTER
Q_D(const QTextControl);
- if (printer && !printer->isValid())
+ if (!printer || !printer->isValid())
return;
QTextDocument *tempDoc = 0;
const QTextDocument *doc = d->doc;
diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp
index 6ab89dc..5a938e3 100644
--- a/src/gui/text/qtextcursor.cpp
+++ b/src/gui/text/qtextcursor.cpp
@@ -125,7 +125,7 @@ QTextCursorPrivate::AdjustResult QTextCursorPrivate::adjustPosition(int position
void QTextCursorPrivate::setX()
{
- if (priv && priv->isInEditBlock()) {
+ if (priv->isInEditBlock()) {
x = -1; // mark dirty
return;
}
@@ -855,9 +855,9 @@ QTextLayout *QTextCursorPrivate::blockLayout(QTextBlock &block) const{
\brief The QTextCursor class offers an API to access and modify QTextDocuments.
- \ingroup text
+ \ingroup richtext-processing
\ingroup shared
- \mainclass
+
Text cursors are objects that are used to access and modify the contents
and underlying structure of text documents via a programming interface
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index 6fa3e90..bfed368 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -247,8 +247,8 @@ QTextCodec *Qt::codecForHtml(const QByteArray &ba)
\brief The QTextDocument class holds formatted text that can be
viewed and edited using a QTextEdit.
- \ingroup text
- \mainclass
+ \ingroup richtext-processing
+
QTextDocument is a container for structured rich text documents, providing
support for styled text and various types of document elements, such as
diff --git a/src/gui/text/qtextdocumentfragment.cpp b/src/gui/text/qtextdocumentfragment.cpp
index da7025c..953e965 100644
--- a/src/gui/text/qtextdocumentfragment.cpp
+++ b/src/gui/text/qtextdocumentfragment.cpp
@@ -259,7 +259,7 @@ void QTextDocumentFragmentPrivate::insert(QTextCursor &_cursor) const
\brief The QTextDocumentFragment class represents a piece of formatted text
from a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
\ingroup shared
A QTextDocumentFragment is a fragment of rich text, that can be inserted into
diff --git a/src/gui/text/qtextdocumentwriter.cpp b/src/gui/text/qtextdocumentwriter.cpp
index 33a5018..bdb5247 100644
--- a/src/gui/text/qtextdocumentwriter.cpp
+++ b/src/gui/text/qtextdocumentwriter.cpp
@@ -76,7 +76,7 @@ public:
\brief The QTextDocumentWriter class provides a format-independent interface for writing a QTextDocument to files or other devices.
- \ingroup text
+ \ingroup richtext-processing
\ingroup io
To write a document, construct a QTextDocumentWriter object with either a
diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp
index 075f2ff..950e45c 100644
--- a/src/gui/text/qtextformat.cpp
+++ b/src/gui/text/qtextformat.cpp
@@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE
\brief The QTextLength class encapsulates the different types of length
used in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
When we specify a value for the length of an element in a text document,
we often need to provide some other information so that the length is
@@ -415,7 +415,7 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &stream, QTextFormat &fmt)
\brief The QTextFormat class provides formatting information for a
QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
\ingroup shared
A QTextFormat is a generic class used for describing the format of
@@ -448,7 +448,7 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &stream, QTextFormat &fmt)
associate the format with a QTextObject. It is used to represent
lists, frames, and tables inside the document.
- \sa {Text Processing Classes}
+ \sa {Rich Text Processing}
*/
/*!
@@ -1184,7 +1184,7 @@ bool QTextFormat::operator==(const QTextFormat &rhs) const
\brief The QTextCharFormat class provides formatting information for
characters in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
The character format of text in a document specifies the visual properties
of the text, as well as information about its role in a hypertext document.
@@ -1797,7 +1797,7 @@ QFont QTextCharFormat::font() const
\brief The QTextBlockFormat class provides formatting information for
blocks of text in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
A document is composed of a list of blocks, represented by QTextBlock
objects. Each block can contain an item of some kind, such as a
@@ -2088,7 +2088,7 @@ QList<QTextOption::Tab> QTextBlockFormat::tabPositions() const
\brief The QTextListFormat class provides formatting information for
lists in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
A list is composed of one or more items, represented as text blocks.
The list's format specifies the appearance of items in the list.
@@ -2198,7 +2198,7 @@ QTextListFormat::QTextListFormat(const QTextFormat &fmt)
\brief The QTextFrameFormat class provides formatting information for
frames in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
A text frame groups together one or more blocks of text, providing a layer
of structure larger than the paragraph. The format of a frame specifies
@@ -2524,7 +2524,7 @@ qreal QTextFrameFormat::rightMargin() const
\brief The QTextTableFormat class provides formatting information for
tables in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
A table is a group of cells ordered into rows and columns. Each table
contains at least one row and one column. Each cell contains a block.
@@ -2730,7 +2730,7 @@ QTextTableFormat::QTextTableFormat(const QTextFormat &fmt)
\brief The QTextImageFormat class provides formatting information for
images in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
Inline images are represented by an object replacement character
(0xFFFC in Unicode) which has an associated QTextImageFormat. The
@@ -2999,7 +2999,7 @@ QTextTableCellFormat::QTextTableCellFormat(const QTextFormat &fmt)
\brief The QTextTableCellFormat class provides formatting information for
table cells in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
The table cell format of a table cell in a document specifies the visual
properties of the table cell.
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 242dbbf..cde5b5f 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -128,7 +128,7 @@ static QFixed alignLine(QTextEngine *eng, const QScriptLine &line)
\brief The QTextInlineObject class represents an inline object in
a QTextLayout.
- \ingroup text
+ \ingroup richtext-processing
This class is only used if the text layout is used to lay out
parts of a QTextDocument.
@@ -285,7 +285,7 @@ Qt::LayoutDirection QTextInlineObject::textDirection() const
\brief The QTextLayout class is used to lay out and paint a single
paragraph of text.
- \ingroup text
+ \ingroup richtext-processing
It offers most features expected from a modern text layout
engine, including Unicode compliant rendering, line breaking and
@@ -1368,7 +1368,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition
\brief The QTextLine class represents a line of text inside a QTextLayout.
- \ingroup text
+ \ingroup richtext-processing
A text line is usually created by QTextLayout::createLine().
diff --git a/src/gui/text/qtextlist.cpp b/src/gui/text/qtextlist.cpp
index 8348c92..3e5d7b0 100644
--- a/src/gui/text/qtextlist.cpp
+++ b/src/gui/text/qtextlist.cpp
@@ -63,7 +63,7 @@ public:
\brief The QTextList class provides a decorated list of items in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
A list contains a sequence of text blocks, each of which is marked with a
bullet point or other symbol. Multiple levels of lists can be used, and
diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp
index 98c92eb..4ac0276 100644
--- a/src/gui/text/qtextobject.cpp
+++ b/src/gui/text/qtextobject.cpp
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
\brief The QTextObject class is a base class for different kinds
of objects that can group parts of a QTextDocument together.
- \ingroup text
+ \ingroup richtext-processing
The common grouping text objects are lists (QTextList), frames
(QTextFrame), and tables (QTextTable). A text object has an
@@ -183,7 +183,7 @@ QTextDocumentPrivate *QTextObject::docHandle() const
\brief The QTextBlockGroup class provides a container for text blocks within
a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
Block groups can be used to organize blocks of text within a document.
They maintain an up-to-date list of the text blocks that belong to
@@ -305,7 +305,7 @@ QTextFrameLayoutData::~QTextFrameLayoutData()
\brief The QTextFrame class represents a frame in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
Text frames provide structure for the text in a document. They are used
as generic containers for other document elements.
@@ -412,11 +412,6 @@ QTextFrameLayoutData::~QTextFrameLayoutData()
QTextFrame::QTextFrame(QTextDocument *doc)
: QTextObject(*new QTextFramePrivate(doc), doc)
{
- Q_D(QTextFrame);
- d->fragment_start = 0;
- d->fragment_end = 0;
- d->parentFrame = 0;
- d->layoutData = 0;
}
// ### DOC: What does this do to child frames?
@@ -435,11 +430,6 @@ QTextFrame::~QTextFrame()
QTextFrame::QTextFrame(QTextFramePrivate &p, QTextDocument *doc)
: QTextObject(p, doc)
{
- Q_D(QTextFrame);
- d->fragment_start = 0;
- d->fragment_end = 0;
- d->parentFrame = 0;
- d->layoutData = 0;
}
/*!
@@ -609,7 +599,7 @@ void QTextFramePrivate::remove_me()
\brief The iterator class provides an iterator for reading
the contents of a QTextFrame.
- \ingroup text
+ \ingroup richtext-processing
A frame consists of an arbitrary sequence of \l{QTextBlock}s and
child \l{QTextFrame}s. This class provides a way to iterate over the
@@ -809,7 +799,7 @@ QTextFrame::iterator &QTextFrame::iterator::operator--()
\brief The QTextBlockUserData class is used to associate custom data with blocks of text.
\since 4.1
- \ingroup text
+ \ingroup richtext-processing
QTextBlockUserData provides an abstract interface for container classes that are used
to associate application-specific user data with text blocks in a QTextDocument.
@@ -839,7 +829,7 @@ QTextBlockUserData::~QTextBlockUserData()
\brief The QTextBlock class provides a container for text fragments in a
QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
A text block encapsulates a block or paragraph of text in a QTextDocument.
QTextBlock provides read-only access to the block/paragraph structure of
@@ -934,7 +924,7 @@ QTextBlockUserData::~QTextBlockUserData()
\brief The QTextBlock::iterator class provides an iterator for reading
the contents of a QTextBlock.
- \ingroup text
+ \ingroup richtext-processing
A block consists of a sequence of text fragments. This class provides
a way to iterate over these, and read their contents. It does not provide
@@ -1535,7 +1525,7 @@ QTextBlock::iterator &QTextBlock::iterator::operator--()
\brief The QTextFragment class holds a piece of text in a
QTextDocument with a single QTextCharFormat.
- \ingroup text
+ \ingroup richtext-processing
A text fragment describes a piece of text that is stored with a single
character format. Text in which the character format changes can be
diff --git a/src/gui/text/qtextobject_p.h b/src/gui/text/qtextobject_p.h
index e862b30..22034c8 100644
--- a/src/gui/text/qtextobject_p.h
+++ b/src/gui/text/qtextobject_p.h
@@ -94,7 +94,7 @@ class QTextFramePrivate : public QTextObjectPrivate
Q_DECLARE_PUBLIC(QTextFrame)
public:
QTextFramePrivate(QTextDocument *doc)
- : QTextObjectPrivate(doc)
+ : QTextObjectPrivate(doc), fragment_start(0), fragment_end(0), parentFrame(0), layoutData(0)
{
}
virtual void fragmentAdded(const QChar &type, uint fragment);
diff --git a/src/gui/text/qtextoption.cpp b/src/gui/text/qtextoption.cpp
index ca30ed4..20ba9bf 100644
--- a/src/gui/text/qtextoption.cpp
+++ b/src/gui/text/qtextoption.cpp
@@ -197,7 +197,7 @@ QList<QTextOption::Tab> QTextOption::tabs() const
\brief The QTextOption class provides a description of general rich text
properties.
- \ingroup text
+ \ingroup richtext-processing
QTextOption is used to encapsulate common rich text properties in a single
object. It contains information about text alignment, layout direction,
diff --git a/src/gui/text/qtexttable.cpp b/src/gui/text/qtexttable.cpp
index 9097b4e..576758e 100644
--- a/src/gui/text/qtexttable.cpp
+++ b/src/gui/text/qtexttable.cpp
@@ -58,7 +58,7 @@ QT_BEGIN_NAMESPACE
\brief The QTextTableCell class represents the properties of a
cell in a QTextTable.
- \ingroup text
+ \ingroup richtext-processing
Table cells are pieces of document structure that belong to a table.
The table orders cells into particular rows and columns; cells can
@@ -492,7 +492,7 @@ void QTextTablePrivate::update() const
\brief The QTextTable class represents a table in a QTextDocument.
- \ingroup text
+ \ingroup richtext-processing
A table is a group of cells ordered into rows and columns. Each table
contains at least one row and one column. Each cell contains a block, and
diff --git a/src/gui/text/qtexttable_p.h b/src/gui/text/qtexttable_p.h
index 4dd52c7..7783b5d 100644
--- a/src/gui/text/qtexttable_p.h
+++ b/src/gui/text/qtexttable_p.h
@@ -62,7 +62,7 @@ class QTextTablePrivate : public QTextFramePrivate
{
Q_DECLARE_PUBLIC(QTextTable)
public:
- QTextTablePrivate(QTextDocument *document) : QTextFramePrivate(document), grid(0), nRows(0), dirty(true), blockFragmentUpdates(false) {}
+ QTextTablePrivate(QTextDocument *document) : QTextFramePrivate(document), grid(0), nRows(0), nCols(0), dirty(true), blockFragmentUpdates(false) {}
~QTextTablePrivate();
static QTextTable *createTable(QTextDocumentPrivate *, int pos, int rows, int cols, const QTextTableFormat &tableFormat);
diff --git a/src/gui/util/qsystemtrayicon.cpp b/src/gui/util/qsystemtrayicon.cpp
index f4d2f7f..64591c7 100644
--- a/src/gui/util/qsystemtrayicon.cpp
+++ b/src/gui/util/qsystemtrayicon.cpp
@@ -65,7 +65,6 @@ QT_BEGIN_NAMESPACE
\class QSystemTrayIcon
\brief The QSystemTrayIcon class provides an icon for an application in the system tray.
\since 4.2
- \ingroup application
\ingroup desktop
Modern operating systems usually provide a special area on the desktop,
diff --git a/src/gui/util/qundogroup.cpp b/src/gui/util/qundogroup.cpp
index 9fcfe95..07a3a3d 100644
--- a/src/gui/util/qundogroup.cpp
+++ b/src/gui/util/qundogroup.cpp
@@ -61,7 +61,6 @@ public:
\class QUndoGroup
\brief The QUndoGroup class is a group of QUndoStack objects.
\since 4.2
- \ingroup misc
For an overview of the Qt's undo framework, see the
\link qundo.html overview\endlink.
diff --git a/src/gui/util/qundostack.cpp b/src/gui/util/qundostack.cpp
index a5e8004..065cc24 100644
--- a/src/gui/util/qundostack.cpp
+++ b/src/gui/util/qundostack.cpp
@@ -52,7 +52,6 @@ QT_BEGIN_NAMESPACE
\class QUndoCommand
\brief The QUndoCommand class is the base class of all commands stored on a QUndoStack.
\since 4.2
- \ingroup misc
For an overview of Qt's Undo Framework, see the
\l{Overview of Qt's Undo Framework}{overview document}.
@@ -292,7 +291,6 @@ const QUndoCommand *QUndoCommand::child(int index) const
\class QUndoStack
\brief The QUndoStack class is a stack of QUndoCommand objects.
\since 4.2
- \ingroup misc
For an overview of Qt's Undo Framework, see the
\l{Overview of Qt's Undo Framework}{overview document}.
diff --git a/src/gui/util/qundoview.cpp b/src/gui/util/qundoview.cpp
index 0241500..079a62f 100644
--- a/src/gui/util/qundoview.cpp
+++ b/src/gui/util/qundoview.cpp
@@ -253,7 +253,7 @@ QIcon QUndoModel::cleanIcon() const
\class QUndoView
\brief The QUndoView class displays the contents of a QUndoStack.
\since 4.2
- \ingroup misc
+
\ingroup advanced
QUndoView is a QListView which displays the list of commands pushed on an undo stack.
diff --git a/src/gui/widgets/qbuttongroup.cpp b/src/gui/widgets/qbuttongroup.cpp
index 8b89a86..26a9d51 100644
--- a/src/gui/widgets/qbuttongroup.cpp
+++ b/src/gui/widgets/qbuttongroup.cpp
@@ -48,8 +48,6 @@
\ingroup organizers
\ingroup geomanagement
- \ingroup appearance
- \mainclass
QButtonGroup provides an abstract container into which button widgets can
be placed. It does not provide a visual representation of this container
diff --git a/src/gui/widgets/qcalendarwidget.cpp b/src/gui/widgets/qcalendarwidget.cpp
index 8d5d0c7..377b4bb 100644
--- a/src/gui/widgets/qcalendarwidget.cpp
+++ b/src/gui/widgets/qcalendarwidget.cpp
@@ -1960,7 +1960,7 @@ void QCalendarWidgetPrivate::_q_editingFinished()
\brief The QCalendarWidget class provides a monthly based
calendar widget allowing the user to select a date.
\since 4.2
- \mainclass
+
\ingroup advanced
\image cleanlooks-calendarwidget.png
diff --git a/src/gui/widgets/qcheckbox.cpp b/src/gui/widgets/qcheckbox.cpp
index 8cdf3b9..faec9d0 100644
--- a/src/gui/widgets/qcheckbox.cpp
+++ b/src/gui/widgets/qcheckbox.cpp
@@ -73,7 +73,7 @@ public:
\brief The QCheckBox widget provides a checkbox with a text label.
\ingroup basicwidgets
- \mainclass
+
A QCheckBox is an option button that can be switched on (checked) or off
(unchecked). Checkboxes are typically used to represent features in an
diff --git a/src/gui/widgets/qcombobox.cpp b/src/gui/widgets/qcombobox.cpp
index f3027be..0f54bac 100644
--- a/src/gui/widgets/qcombobox.cpp
+++ b/src/gui/widgets/qcombobox.cpp
@@ -863,7 +863,7 @@ QComboBox::QComboBox(bool rw, QWidget *parent, const char *name)
\brief The QComboBox widget is a combined button and popup list.
\ingroup basicwidgets
- \mainclass
+
A QComboBox provides a means of presenting a list of options to the user
in a way that takes up the minimum amount of screen space.
diff --git a/src/gui/widgets/qcommandlinkbutton.cpp b/src/gui/widgets/qcommandlinkbutton.cpp
index 3d12ce9..206221f 100644
--- a/src/gui/widgets/qcommandlinkbutton.cpp
+++ b/src/gui/widgets/qcommandlinkbutton.cpp
@@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE
\brief The QCommandLinkButton widget provides a Vista style command link button.
\ingroup basicwidgets
- \mainclass
+
The command link is a new control that was introduced by Windows Vista. It's
intended use is similar to that of a radio button in that it is used to choose
diff --git a/src/gui/widgets/qdatetimeedit.cpp b/src/gui/widgets/qdatetimeedit.cpp
index 2900d39..0fca0b7 100644
--- a/src/gui/widgets/qdatetimeedit.cpp
+++ b/src/gui/widgets/qdatetimeedit.cpp
@@ -75,7 +75,7 @@ QT_BEGIN_NAMESPACE
\brief The QDateTimeEdit class provides a widget for editing dates and times.
\ingroup basicwidgets
- \mainclass
+
QDateTimeEdit allows the user to edit dates by using the keyboard or
the arrow keys to increase and decrease date and time values. The
@@ -1505,7 +1505,7 @@ void QDateTimeEdit::mousePressEvent(QMouseEvent *event)
the QDateTimeEdit widget.
\ingroup basicwidgets
- \mainclass
+
Many of the properties and functions provided by QTimeEdit are implemented in
QDateTimeEdit. The following properties are most relevant to users of this
@@ -1567,7 +1567,7 @@ QTimeEdit::QTimeEdit(const QTime &time, QWidget *parent)
the QDateTimeEdit widget.
\ingroup basicwidgets
- \mainclass
+
Many of the properties and functions provided by QDateEdit are implemented in
QDateTimeEdit. The following properties are most relevant to users of this
diff --git a/src/gui/widgets/qdial.cpp b/src/gui/widgets/qdial.cpp
index 3fe7c68..90f1c85 100644
--- a/src/gui/widgets/qdial.cpp
+++ b/src/gui/widgets/qdial.cpp
@@ -168,7 +168,7 @@ int QDialPrivate::valueFromPoint(const QPoint &p) const
\brief The QDial class provides a rounded range control (like a speedometer or potentiometer).
\ingroup basicwidgets
- \mainclass
+
QDial is used when the user needs to control a value within a
program-definable range, and the range either wraps around
diff --git a/src/gui/widgets/qdialogbuttonbox.cpp b/src/gui/widgets/qdialogbuttonbox.cpp
index 5560367..515efc4 100644
--- a/src/gui/widgets/qdialogbuttonbox.cpp
+++ b/src/gui/widgets/qdialogbuttonbox.cpp
@@ -57,8 +57,8 @@ QT_BEGIN_NAMESPACE
\brief The QDialogButtonBox class is a widget that presents buttons in a
layout that is appropriate to the current widget style.
- \ingroup application
- \mainclass
+ \ingroup dialog-classes
+
Dialogs and message boxes typically present buttons in a layout that
conforms to the interface guidelines for that platform. Invariably,
diff --git a/src/gui/widgets/qdockwidget.cpp b/src/gui/widgets/qdockwidget.cpp
index a521921..1193b3e 100644
--- a/src/gui/widgets/qdockwidget.cpp
+++ b/src/gui/widgets/qdockwidget.cpp
@@ -1069,7 +1069,7 @@ void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect
inside a QMainWindow or floated as a top-level window on the
desktop.
- \ingroup application
+ \ingroup mainwindow-classes
QDockWidget provides the concept of dock widgets, also know as
tool palettes or utility windows. Dock windows are secondary
diff --git a/src/gui/widgets/qfocusframe.cpp b/src/gui/widgets/qfocusframe.cpp
index 2c88a2e..65dc7d0 100644
--- a/src/gui/widgets/qfocusframe.cpp
+++ b/src/gui/widgets/qfocusframe.cpp
@@ -118,7 +118,7 @@ void QFocusFrame::initStyleOption(QStyleOption *option) const
outside of a widget's normal paintable area.
\ingroup basicwidgets
- \mainclass
+
Normally an application will not need to create its own
QFocusFrame as QStyle will handle this detail for
diff --git a/src/gui/widgets/qfontcombobox.cpp b/src/gui/widgets/qfontcombobox.cpp
index 24af989..d3f5bf9 100644
--- a/src/gui/widgets/qfontcombobox.cpp
+++ b/src/gui/widgets/qfontcombobox.cpp
@@ -276,7 +276,6 @@ void QFontComboBoxPrivate::_q_currentChanged(const QString &text)
\since 4.2
\ingroup basicwidgets
- \ingroup text
The combobox is populated with an alphabetized list of font
family names, such as Arial, Helvetica, and Times New Roman.
diff --git a/src/gui/widgets/qframe.cpp b/src/gui/widgets/qframe.cpp
index a7861ad..62f2ddf 100644
--- a/src/gui/widgets/qframe.cpp
+++ b/src/gui/widgets/qframe.cpp
@@ -73,7 +73,7 @@ inline void QFramePrivate::init()
\brief The QFrame class is the base class of widgets that can have a frame.
\ingroup abstractwidgets
- \mainclass
+
QMenu uses this to "raise" the menu above the surrounding
screen. QProgressBar has a "sunken" look. QLabel has a flat look.
diff --git a/src/gui/widgets/qgroupbox.cpp b/src/gui/widgets/qgroupbox.cpp
index 03a08e8..daf92c0 100644
--- a/src/gui/widgets/qgroupbox.cpp
+++ b/src/gui/widgets/qgroupbox.cpp
@@ -147,8 +147,6 @@ void QGroupBoxPrivate::click()
\ingroup organizers
\ingroup geomanagement
- \ingroup appearance
- \mainclass
A group box provides a frame, a title and a keyboard shortcut, and
displays various other widgets inside itself. The title is on top,
diff --git a/src/gui/widgets/qlabel.cpp b/src/gui/widgets/qlabel.cpp
index fd97c8f..a9c7e12 100644
--- a/src/gui/widgets/qlabel.cpp
+++ b/src/gui/widgets/qlabel.cpp
@@ -61,8 +61,6 @@ QT_BEGIN_NAMESPACE
\brief The QLabel widget provides a text or image display.
\ingroup basicwidgets
- \ingroup text
- \mainclass
QLabel is used for displaying text or an image. No user
interaction functionality is provided. The visual appearance of
diff --git a/src/gui/widgets/qlcdnumber.cpp b/src/gui/widgets/qlcdnumber.cpp
index c4c97ab..d6f5e61 100644
--- a/src/gui/widgets/qlcdnumber.cpp
+++ b/src/gui/widgets/qlcdnumber.cpp
@@ -74,7 +74,7 @@ public:
\brief The QLCDNumber widget displays a number with LCD-like digits.
\ingroup basicwidgets
- \mainclass
+
It can display a number in just about any size. It can display
decimal, hexadecimal, octal or binary numbers. It is easy to
diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp
index 3f44bc8..56cc828 100644
--- a/src/gui/widgets/qlineedit.cpp
+++ b/src/gui/widgets/qlineedit.cpp
@@ -128,7 +128,7 @@ void QLineEdit::initStyleOption(QStyleOptionFrame *option) const
\brief The QLineEdit widget is a one-line text editor.
\ingroup basicwidgets
- \mainclass
+
A line edit allows the user to enter and edit a single line of
plain text with a useful collection of editing functions,
@@ -1388,6 +1388,7 @@ bool QLineEdit::event(QEvent * e)
if (QApplication::keypadNavigationEnabled()) {
if (e->type() == QEvent::EnterEditFocus) {
end(false);
+ d->setCursorVisible(true);
int cft = QApplication::cursorFlashTime();
d->control->setCursorBlinkPeriod(cft/2);
} else if (e->type() == QEvent::LeaveEditFocus) {
@@ -1396,7 +1397,6 @@ bool QLineEdit::event(QEvent * e)
if (d->control->hasAcceptableInput() || d->control->fixup())
emit editingFinished();
}
- return true;
}
#endif
return QWidget::event(e);
diff --git a/src/gui/widgets/qmainwindow.cpp b/src/gui/widgets/qmainwindow.cpp
index 88059a0..e19961f 100644
--- a/src/gui/widgets/qmainwindow.cpp
+++ b/src/gui/widgets/qmainwindow.cpp
@@ -146,8 +146,8 @@ void QMainWindowPrivate::init()
\class QMainWindow
\brief The QMainWindow class provides a main application
window.
- \ingroup application
- \mainclass
+ \ingroup mainwindow-classes
+
\tableofcontents
diff --git a/src/gui/widgets/qmdiarea.cpp b/src/gui/widgets/qmdiarea.cpp
index 2390c25..e206bcf 100644
--- a/src/gui/widgets/qmdiarea.cpp
+++ b/src/gui/widgets/qmdiarea.cpp
@@ -43,8 +43,8 @@
\class QMdiArea
\brief The QMdiArea widget provides an area in which MDI windows are displayed.
\since 4.3
- \ingroup application
- \mainclass
+ \ingroup mainwindow-classes
+
QMdiArea functions, essentially, like a window manager for MDI
windows. For instance, it draws the windows it manages on itself
diff --git a/src/gui/widgets/qmdisubwindow.cpp b/src/gui/widgets/qmdisubwindow.cpp
index c645429..d51bd99 100644
--- a/src/gui/widgets/qmdisubwindow.cpp
+++ b/src/gui/widgets/qmdisubwindow.cpp
@@ -44,8 +44,8 @@
\brief The QMdiSubWindow class provides a subwindow class for
QMdiArea.
\since 4.3
- \ingroup application
- \mainclass
+ \ingroup mainwindow-classes
+
QMdiSubWindow represents a top-level window in a QMdiArea, and consists
of a title bar with window decorations, an internal widget, and
diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index eb3b6b1..da63b0d 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -1200,9 +1200,9 @@ void QMenu::initStyleOption(QStyleOptionMenuItem *option, const QAction *action)
\brief The QMenu class provides a menu widget for use in menu
bars, context menus, and other popup menus.
- \ingroup application
+ \ingroup mainwindow-classes
\ingroup basicwidgets
- \mainclass
+
A menu widget is a selection menu. It can be either a pull-down
menu in a menu bar or a standalone context menu. Pull-down menus
diff --git a/src/gui/widgets/qmenubar.cpp b/src/gui/widgets/qmenubar.cpp
index 640ac5b..2989f94 100644
--- a/src/gui/widgets/qmenubar.cpp
+++ b/src/gui/widgets/qmenubar.cpp
@@ -590,8 +590,7 @@ void QMenuBar::initStyleOption(QStyleOptionMenuItem *option, const QAction *acti
\class QMenuBar
\brief The QMenuBar class provides a horizontal menu bar.
- \ingroup application
- \mainclass
+ \ingroup mainwindow-classes
A menu bar consists of a list of pull-down menu items. You add
menu items with addMenu(). For example, asuming that \c menubar
@@ -715,7 +714,7 @@ void QMenuBar::initStyleOption(QStyleOptionMenuItem *option, const QAction *acti
\section1 Examples
The \l{mainwindows/menus}{Menus} example shows how to use QMenuBar
- and QMenu. The other \l{Qt Examples#Main Windows}{main window
+ and QMenu. The other \l{Main Window Examples}{main window
application examples} also provide menus using these classes.
\sa QMenu, QShortcut, QAction,
diff --git a/src/gui/widgets/qplaintextedit.cpp b/src/gui/widgets/qplaintextedit.cpp
index e489f3b..16b7c1e 100644
--- a/src/gui/widgets/qplaintextedit.cpp
+++ b/src/gui/widgets/qplaintextedit.cpp
@@ -111,8 +111,7 @@ public:
\since 4.4
\brief The QPlainTextDocumentLayout class implements a plain text layout for QTextDocument
- \ingroup text
-
+ \ingroup richtext-processing
A QPlainTextDocumentLayout is required for text documents that can
be display or edited in a QPlainTextEdit. See
@@ -1007,8 +1006,8 @@ void QPlainTextEditPrivate::ensureViewportLayouted()
\brief The QPlainTextEdit class provides a widget that is used to edit and display
plain text.
- \ingroup text
- \mainclass
+ \ingroup richtext-processing
+
\tableofcontents
diff --git a/src/gui/widgets/qprintpreviewwidget.cpp b/src/gui/widgets/qprintpreviewwidget.cpp
index ade6223..40ea5a1 100644
--- a/src/gui/widgets/qprintpreviewwidget.cpp
+++ b/src/gui/widgets/qprintpreviewwidget.cpp
@@ -452,7 +452,7 @@ void QPrintPreviewWidgetPrivate::setZoomFactor(qreal _zoomFactor)
\brief The QPrintPreviewWidget class provides a widget for
previewing page layouts for printer output.
- \ingroup multimedia
+ \ingroup printing
QPrintPreviewDialog uses a QPrintPreviewWidget internally, and the
purpose of QPrintPreviewWidget is to make it possible to embed the
diff --git a/src/gui/widgets/qprogressbar.cpp b/src/gui/widgets/qprogressbar.cpp
index b35b9d3..9f91cf7 100644
--- a/src/gui/widgets/qprogressbar.cpp
+++ b/src/gui/widgets/qprogressbar.cpp
@@ -172,7 +172,7 @@ bool QProgressBarPrivate::repaintRequired() const
\brief The QProgressBar widget provides a horizontal or vertical progress bar.
\ingroup basicwidgets
- \mainclass
+
A progress bar is used to give the user an indication of the
progress of an operation and to reassure them that the application
diff --git a/src/gui/widgets/qpushbutton.cpp b/src/gui/widgets/qpushbutton.cpp
index 94b39e0..f991620 100644
--- a/src/gui/widgets/qpushbutton.cpp
+++ b/src/gui/widgets/qpushbutton.cpp
@@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE
\brief The QPushButton widget provides a command button.
\ingroup basicwidgets
- \mainclass
+
The push button, or command button, is perhaps the most commonly
used widget in any graphical user interface. Push (click) a button
diff --git a/src/gui/widgets/qradiobutton.cpp b/src/gui/widgets/qradiobutton.cpp
index feada97..4b5cead 100644
--- a/src/gui/widgets/qradiobutton.cpp
+++ b/src/gui/widgets/qradiobutton.cpp
@@ -80,7 +80,7 @@ void QRadioButtonPrivate::init()
\brief The QRadioButton widget provides a radio button with a text label.
\ingroup basicwidgets
- \mainclass
+
A QRadioButton is an option button that can be switched on (checked) or
off (unchecked). Radio buttons typically present the user with a "one
diff --git a/src/gui/widgets/qrubberband.cpp b/src/gui/widgets/qrubberband.cpp
index 5b61bd4..a04bc55 100644
--- a/src/gui/widgets/qrubberband.cpp
+++ b/src/gui/widgets/qrubberband.cpp
@@ -98,9 +98,6 @@ void QRubberBand::initStyleOption(QStyleOptionRubberBand *option) const
\brief The QRubberBand class provides a rectangle or line that can
indicate a selection or a boundary.
- \ingroup misc
- \mainclass
-
A rubber band is often used to show a new bounding area (as in a
QSplitter or a QDockWidget that is undocking). Historically this has
been implemented using a QPainter and XOR, but this approach
diff --git a/src/gui/widgets/qscrollarea.cpp b/src/gui/widgets/qscrollarea.cpp
index 32d3c2b..31e558b 100644
--- a/src/gui/widgets/qscrollarea.cpp
+++ b/src/gui/widgets/qscrollarea.cpp
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
another widget.
\ingroup basicwidgets
- \mainclass
+
A scroll area is used to display the contents of a child widget
within a frame. If the widget exceeds the size of the frame, the
diff --git a/src/gui/widgets/qsizegrip.cpp b/src/gui/widgets/qsizegrip.cpp
index 080e328..8a1a0e6 100644
--- a/src/gui/widgets/qsizegrip.cpp
+++ b/src/gui/widgets/qsizegrip.cpp
@@ -165,9 +165,8 @@ Qt::Corner QSizeGripPrivate::corner() const
\brief The QSizeGrip class provides a resize handle for resizing top-level windows.
- \ingroup application
+ \ingroup mainwindow-classes
\ingroup basicwidgets
- \ingroup appearance
This widget works like the standard Windows resize handle. In the
X11 version this resize handle generally works differently from
diff --git a/src/gui/widgets/qslider.cpp b/src/gui/widgets/qslider.cpp
index 0b7e7c1..d9c98e1 100644
--- a/src/gui/widgets/qslider.cpp
+++ b/src/gui/widgets/qslider.cpp
@@ -203,7 +203,7 @@ QStyle::SubControl QSliderPrivate::newHoverControl(const QPoint &pos)
\brief The QSlider widget provides a vertical or horizontal slider.
\ingroup basicwidgets
- \mainclass
+
The slider is the classic widget for controlling a bounded value.
It lets the user move a slider handle along a horizontal or vertical
diff --git a/src/gui/widgets/qspinbox.cpp b/src/gui/widgets/qspinbox.cpp
index c903610..f17c15f 100644
--- a/src/gui/widgets/qspinbox.cpp
+++ b/src/gui/widgets/qspinbox.cpp
@@ -106,7 +106,7 @@ public:
\brief The QSpinBox class provides a spin box widget.
\ingroup basicwidgets
- \mainclass
+
QSpinBox is designed to handle integers and discrete sets of
values (e.g., month names); use QDoubleSpinBox for floating point
@@ -527,7 +527,7 @@ void QSpinBox::fixup(QString &input) const
takes doubles.
\ingroup basicwidgets
- \mainclass
+
QDoubleSpinBox allows the user to choose a value by clicking the
up and down buttons or by pressing Up or Down on the keyboard to
diff --git a/src/gui/widgets/qsplashscreen.cpp b/src/gui/widgets/qsplashscreen.cpp
index e4f7307..2357164 100644
--- a/src/gui/widgets/qsplashscreen.cpp
+++ b/src/gui/widgets/qsplashscreen.cpp
@@ -72,9 +72,6 @@ public:
\brief The QSplashScreen widget provides a splash screen that can
be shown during application startup.
- \ingroup misc
- \mainclass
-
A splash screen is a widget that is usually displayed when an
application is being started. Splash screens are often used for
applications that have long start up times (e.g. database or
diff --git a/src/gui/widgets/qsplitter.cpp b/src/gui/widgets/qsplitter.cpp
index 98cf2a8..0aa89f4 100644
--- a/src/gui/widgets/qsplitter.cpp
+++ b/src/gui/widgets/qsplitter.cpp
@@ -931,7 +931,7 @@ QSplitterLayoutStruct *QSplitterPrivate::insertWidget(int index, QWidget *w)
\brief The QSplitter class implements a splitter widget.
\ingroup organizers
- \mainclass
+
A splitter lets the user control the size of child widgets by dragging the
boundary between the children. Any number of widgets may be controlled by a
diff --git a/src/gui/widgets/qstackedwidget.cpp b/src/gui/widgets/qstackedwidget.cpp
index da942d1..7dedf4a 100644
--- a/src/gui/widgets/qstackedwidget.cpp
+++ b/src/gui/widgets/qstackedwidget.cpp
@@ -65,8 +65,7 @@ public:
\ingroup organizers
\ingroup geomanagement
- \ingroup appearance
- \mainclass
+
QStackedWidget can be used to create a user interface similar to
the one provided by QTabWidget. It is a convenience layout widget
diff --git a/src/gui/widgets/qstatusbar.cpp b/src/gui/widgets/qstatusbar.cpp
index ed2d5d8..eb58c61 100644
--- a/src/gui/widgets/qstatusbar.cpp
+++ b/src/gui/widgets/qstatusbar.cpp
@@ -158,9 +158,9 @@ QRect QStatusBarPrivate::messageRect() const
\brief The QStatusBar class provides a horizontal bar suitable for
presenting status information.
- \ingroup application
+ \ingroup mainwindow-classes
\ingroup helpsystem
- \mainclass
+
Each status indicator falls into one of three categories:
diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
index 410c26f..5166390 100644
--- a/src/gui/widgets/qtabbar.cpp
+++ b/src/gui/widgets/qtabbar.cpp
@@ -192,7 +192,7 @@ void QTabBar::initStyleOption(QStyleOptionTab *option, int tabIndex) const
\brief The QTabBar class provides a tab bar, e.g. for use in tabbed dialogs.
\ingroup basicwidgets
- \mainclass
+
QTabBar is straightforward to use; it draws the tabs using one of
the predefined \link QTabBar::Shape shapes\endlink, and emits a
diff --git a/src/gui/widgets/qtabwidget.cpp b/src/gui/widgets/qtabwidget.cpp
index 6828c50..14a554a 100644
--- a/src/gui/widgets/qtabwidget.cpp
+++ b/src/gui/widgets/qtabwidget.cpp
@@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE
\ingroup organizers
\ingroup basicwidgets
- \mainclass
+
A tab widget provides a tab bar (see QTabBar) and a "page area"
that is used to display pages related to each tab. By default, the
diff --git a/src/gui/widgets/qtextbrowser.cpp b/src/gui/widgets/qtextbrowser.cpp
index 803b6fb..7a67a8d 100644
--- a/src/gui/widgets/qtextbrowser.cpp
+++ b/src/gui/widgets/qtextbrowser.cpp
@@ -580,7 +580,7 @@ void QTextBrowserPrivate::restoreHistoryEntry(const HistoryEntry entry)
\class QTextBrowser
\brief The QTextBrowser class provides a rich text browser with hypertext navigation.
- \ingroup text
+ \ingroup richtext-processing
This class extends QTextEdit (in read-only mode), adding some navigation
functionality so that users can follow links in hypertext documents.
diff --git a/src/gui/widgets/qtextedit.cpp b/src/gui/widgets/qtextedit.cpp
index a82adf7..a6e3c83 100644
--- a/src/gui/widgets/qtextedit.cpp
+++ b/src/gui/widgets/qtextedit.cpp
@@ -333,8 +333,8 @@ void QTextEditPrivate::_q_ensureVisible(const QRectF &_rect)
\brief The QTextEdit class provides a widget that is used to edit and display
both plain and rich text.
- \ingroup text
- \mainclass
+ \ingroup richtext-processing
+
\tableofcontents
diff --git a/src/gui/widgets/qtoolbar.cpp b/src/gui/widgets/qtoolbar.cpp
index 37c7998..ef0847b 100644
--- a/src/gui/widgets/qtoolbar.cpp
+++ b/src/gui/widgets/qtoolbar.cpp
@@ -412,8 +412,8 @@ void QToolBarPrivate::plug(const QRect &r)
\brief The QToolBar class provides a movable panel that contains a
set of controls.
- \ingroup application
- \mainclass
+ \ingroup mainwindow-classes
+
Toolbar buttons are added by adding \e actions, using addAction()
or insertAction(). Groups of buttons can be separated using
diff --git a/src/gui/widgets/qtoolbox.cpp b/src/gui/widgets/qtoolbox.cpp
index 803c6ab..378ed17 100644
--- a/src/gui/widgets/qtoolbox.cpp
+++ b/src/gui/widgets/qtoolbox.cpp
@@ -252,7 +252,7 @@ void QToolBoxButton::paintEvent(QPaintEvent *)
\brief The QToolBox class provides a column of tabbed widget items.
- \mainclass
+
\ingroup basicwidgets
A toolbox is a widget that displays a column of tabs one above the
diff --git a/src/gui/widgets/qtoolbutton.cpp b/src/gui/widgets/qtoolbutton.cpp
index bb8c32f..4ca3d62 100644
--- a/src/gui/widgets/qtoolbutton.cpp
+++ b/src/gui/widgets/qtoolbutton.cpp
@@ -116,7 +116,7 @@ bool QToolButtonPrivate::hasMenu() const
commands or options, usually used inside a QToolBar.
\ingroup basicwidgets
- \mainclass
+
A tool button is a special button that provides quick-access to
specific commands or options. As opposed to a normal command
diff --git a/src/gui/widgets/qvalidator.cpp b/src/gui/widgets/qvalidator.cpp
index 7db0247..8f43097 100644
--- a/src/gui/widgets/qvalidator.cpp
+++ b/src/gui/widgets/qvalidator.cpp
@@ -55,9 +55,6 @@ QT_BEGIN_NAMESPACE
\class QValidator
\brief The QValidator class provides validation of input text.
- \ingroup misc
- \mainclass
-
The class itself is abstract. Two subclasses, \l QIntValidator and
\l QDoubleValidator, provide basic numeric-range checking, and \l
QRegExpValidator provides general checking using a custom regular
@@ -246,8 +243,6 @@ void QValidator::fixup(QString &) const
\brief The QIntValidator class provides a validator that ensures
a string contains a valid integer within a specified range.
- \ingroup misc
-
Example of use:
\snippet doc/src/snippets/code/src_gui_widgets_qvalidator.cpp 0
@@ -497,8 +492,6 @@ public:
\brief The QDoubleValidator class provides range checking of
floating-point numbers.
- \ingroup misc
-
QDoubleValidator provides an upper bound, a lower bound, and a
limit on the number of digits after the decimal point. It does not
provide a fixup() function.
@@ -767,8 +760,6 @@ QDoubleValidator::Notation QDoubleValidator::notation() const
\brief The QRegExpValidator class is used to check a string
against a regular expression.
- \ingroup misc
-
QRegExpValidator uses a regular expression (regexp) to
determine whether an input string is \l Acceptable, \l
Intermediate, or \l Invalid. The regexp can either be supplied
diff --git a/src/gui/widgets/qworkspace.cpp b/src/gui/widgets/qworkspace.cpp
index d8bcf9b..cd98671 100644
--- a/src/gui/widgets/qworkspace.cpp
+++ b/src/gui/widgets/qworkspace.cpp
@@ -834,7 +834,6 @@ QSize QWorkspaceTitleBar::sizeHint() const
\obsolete
\brief The QWorkspace widget provides a workspace window that can be
used in an MDI application.
- \ingroup application
This class is deprecated. Use QMdiArea instead.
diff --git a/src/network/access/qftp.cpp b/src/network/access/qftp.cpp
index 5d5c978..308037a 100644
--- a/src/network/access/qftp.cpp
+++ b/src/network/access/qftp.cpp
@@ -1294,9 +1294,9 @@ int QFtpPrivate::addCommand(QFtpCommand *cmd)
\class QFtp
\brief The QFtp class provides an implementation of the client side of FTP protocol.
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
- \mainclass
+
This class provides a direct interface to FTP that allows you to
have more control over the requests. However, for new
diff --git a/src/network/access/qhttp.cpp b/src/network/access/qhttp.cpp
index 9d0b413..e789a9c 100644
--- a/src/network/access/qhttp.cpp
+++ b/src/network/access/qhttp.cpp
@@ -516,7 +516,7 @@ public:
\obsolete
\brief The QHttpHeader class contains header information for HTTP.
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
In most cases you should use the more specialized derivatives of
@@ -1011,7 +1011,7 @@ public:
\obsolete
\brief The QHttpResponseHeader class contains response header information for HTTP.
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
This class is used by the QHttp class to report the header
@@ -1216,7 +1216,7 @@ public:
\obsolete
\brief The QHttpRequestHeader class contains request header information for HTTP.
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
This class is used in the QHttp class to report the header
@@ -1421,9 +1421,9 @@ QString QHttpRequestHeader::toString() const
\brief The QHttp class provides an implementation of the HTTP protocol.
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
- \mainclass
+
This class provides a direct interface to HTTP that allows you to
download and upload data with the HTTP protocol.
diff --git a/src/network/access/qnetworkcookie.cpp b/src/network/access/qnetworkcookie.cpp
index 0c13286..6884bee 100644
--- a/src/network/access/qnetworkcookie.cpp
+++ b/src/network/access/qnetworkcookie.cpp
@@ -504,7 +504,12 @@ QByteArray QNetworkCookie::toRawForm(RawForm form) const
}
if (!d->domain.isEmpty()) {
result += "; domain=";
- result += QUrl::toAce(d->domain);
+ QString domainNoDot = d->domain;
+ if (domainNoDot.startsWith(QLatin1Char('.'))) {
+ result += '.';
+ domainNoDot = domainNoDot.mid(1);
+ }
+ result += QUrl::toAce(domainNoDot);
}
if (!d->path.isEmpty()) {
result += "; path=";
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index cc83e40..721f8c4 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE
\brief The QNetworkRequest class holds one request to be sent with the Network Access API.
\since 4.4
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
QNetworkRequest is part of the Network Access API and is the class
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index d0e60f7..fc9ff8b 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -64,7 +64,7 @@ static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phas
\since 4.3
\reentrant
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
The QAuthenticator class is usually used in the
diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp
index 2391732..84bfee5 100644
--- a/src/network/kernel/qhostaddress.cpp
+++ b/src/network/kernel/qhostaddress.cpp
@@ -419,7 +419,7 @@ void QNetmaskAddress::setPrefixLength(QAbstractSocket::NetworkLayerProtocol prot
/*!
\class QHostAddress
\brief The QHostAddress class provides an IP address.
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
This class holds an IPv4 or IPv6 address in a platform- and
diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp
index 0b8e15c..ee1369d 100644
--- a/src/network/kernel/qhostinfo.cpp
+++ b/src/network/kernel/qhostinfo.cpp
@@ -73,7 +73,7 @@ void QHostInfoAgent::staticCleanup()
\reentrant
\inmodule QtNetwork
- \ingroup io
+ \ingroup network
QHostInfo uses the lookup mechanisms provided by the operating
system to find the IP address(es) associated with a host name,
diff --git a/src/network/kernel/qnetworkinterface.cpp b/src/network/kernel/qnetworkinterface.cpp
index f4088f8..d6ce745 100644
--- a/src/network/kernel/qnetworkinterface.cpp
+++ b/src/network/kernel/qnetworkinterface.cpp
@@ -148,7 +148,7 @@ QString QNetworkInterfacePrivate::makeHwAddress(int len, uchar *data)
\since 4.2
\reentrant
- \ingroup io
+ \ingroup network
Each network interface can contain zero or more IP addresses, which
in turn can be associated with a netmask and/or a broadcast
@@ -333,7 +333,7 @@ void QNetworkAddressEntry::setBroadcast(const QHostAddress &newBroadcast)
\since 4.2
\reentrant
- \ingroup io
+ \ingroup network
QNetworkInterface represents one network interface attached to the
host where the program is being run. Each network interface may
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index 4a8d997..0fa54ed 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -48,7 +48,7 @@
\brief The QNetworkProxy class provides a network layer proxy.
\reentrant
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
QNetworkProxy provides the method for configuring network layer
@@ -1118,7 +1118,7 @@ void QNetworkProxyQuery::setUrl(const QUrl &url)
\brief The QNetworkProxyFactory class provides fine-grained proxy selection.
\since 4.5
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
QNetworkProxyFactory is an extension to QNetworkProxy, allowing
diff --git a/src/network/kernel/qurlinfo.cpp b/src/network/kernel/qurlinfo.cpp
index 626bce2..5ab200c 100644
--- a/src/network/kernel/qurlinfo.cpp
+++ b/src/network/kernel/qurlinfo.cpp
@@ -85,7 +85,7 @@ public:
\brief The QUrlInfo class stores information about URLs.
\ingroup io
- \ingroup misc
+ \ingroup network
The information about a URL that can be retrieved includes name(),
permissions(), owner(), group(), size(), lastModified(),
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 49ffe3d..1ebe213 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -48,7 +48,7 @@
common to all socket types.
\reentrant
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
QAbstractSocket is the base class for QTcpSocket and QUdpSocket
diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp
index a1643fe..45b06cb 100644
--- a/src/network/socket/qnativesocketengine.cpp
+++ b/src/network/socket/qnativesocketengine.cpp
@@ -47,7 +47,7 @@
\brief The QNativeSocketEngine class provides low level access to a socket.
\reentrant
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
QtSocketLayer provides basic socket functionality provided by the
diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp
index 11d5c3a..a73c2ac 100644
--- a/src/network/socket/qtcpserver.cpp
+++ b/src/network/socket/qtcpserver.cpp
@@ -46,7 +46,7 @@
\brief The QTcpServer class provides a TCP-based server.
\reentrant
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
This class makes it possible to accept incoming TCP connections.
diff --git a/src/network/socket/qtcpsocket.cpp b/src/network/socket/qtcpsocket.cpp
index af1cee7..604143a 100644
--- a/src/network/socket/qtcpsocket.cpp
+++ b/src/network/socket/qtcpsocket.cpp
@@ -47,7 +47,7 @@
\brief The QTcpSocket class provides a TCP socket.
\reentrant
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
TCP (Transmission Control Protocol) is a reliable,
diff --git a/src/network/socket/qudpsocket.cpp b/src/network/socket/qudpsocket.cpp
index 3883ff5..0d055f7 100644
--- a/src/network/socket/qudpsocket.cpp
+++ b/src/network/socket/qudpsocket.cpp
@@ -46,7 +46,7 @@
\reentrant
\brief The QUdpSocket class provides a UDP socket.
- \ingroup io
+ \ingroup network
\inmodule QtNetwork
UDP (User Datagram Protocol) is a lightweight, unreliable,
diff --git a/src/network/ssl/qssl.cpp b/src/network/ssl/qssl.cpp
index c4f792e..1913b49 100644
--- a/src/network/ssl/qssl.cpp
+++ b/src/network/ssl/qssl.cpp
@@ -49,7 +49,8 @@ QT_BEGIN_NAMESPACE
\brief The QSsl namespace declares enums common to all SSL classes in QtNetwork.
\since 4.3
- \ingroup io
+ \ingroup network
+ \ingroup ssl
\inmodule QtNetwork
*/
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 7e4bd7f..2782e1b 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -46,7 +46,7 @@
\since 4.3
\reentrant
- \ingroup io
+ \ingroup network
\ingroup ssl
\inmodule QtNetwork
diff --git a/src/network/ssl/qsslcipher.cpp b/src/network/ssl/qsslcipher.cpp
index e13733a..d8ad88b 100644
--- a/src/network/ssl/qsslcipher.cpp
+++ b/src/network/ssl/qsslcipher.cpp
@@ -46,7 +46,7 @@
\since 4.3
\reentrant
- \ingroup io
+ \ingroup network
\ingroup ssl
\inmodule QtNetwork
diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp
index f207e99..87db324 100644
--- a/src/network/ssl/qsslconfiguration.cpp
+++ b/src/network/ssl/qsslconfiguration.cpp
@@ -66,7 +66,7 @@ template<> void QSharedDataPointer<QSslConfigurationPrivate>::detach()
\reentrant
\inmodule QtNetwork
- \ingroup io
+ \ingroup network
\ingroup ssl
QSslConfiguration is used by Qt networking classes to relay
diff --git a/src/network/ssl/qsslerror.cpp b/src/network/ssl/qsslerror.cpp
index 3536bc4..8fbd61f 100644
--- a/src/network/ssl/qsslerror.cpp
+++ b/src/network/ssl/qsslerror.cpp
@@ -46,7 +46,7 @@
\since 4.3
\reentrant
- \ingroup io
+ \ingroup network
\ingroup ssl
\inmodule QtNetwork
diff --git a/src/network/ssl/qsslkey.cpp b/src/network/ssl/qsslkey.cpp
index 185d1e5..c5c7277 100644
--- a/src/network/ssl/qsslkey.cpp
+++ b/src/network/ssl/qsslkey.cpp
@@ -46,7 +46,7 @@
\since 4.3
\reentrant
- \ingroup io
+ \ingroup network
\ingroup ssl
\inmodule QtNetwork
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp
index 390b1fc..cdbcb86 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -49,7 +49,7 @@
\since 4.3
\reentrant
- \ingroup io
+ \ingroup network
\ingroup ssl
\inmodule QtNetwork
diff --git a/src/opengl/gl2paintengineex/qglengineshadersource_p.h b/src/opengl/gl2paintengineex/qglengineshadersource_p.h
index 842cac4..cf930f3 100644
--- a/src/opengl/gl2paintengineex/qglengineshadersource_p.h
+++ b/src/opengl/gl2paintengineex/qglengineshadersource_p.h
@@ -73,8 +73,8 @@ static const char* const qglslMainVertexShader = "\
}";
static const char* const qglslMainWithTexCoordsVertexShader = "\
- attribute lowp vec2 textureCoordArray; \
- varying lowp vec2 textureCoords; \
+ attribute mediump vec2 textureCoordArray; \
+ varying mediump vec2 textureCoords; \
uniform highp float depth;\
void setPosition();\
void main(void) \
@@ -284,7 +284,7 @@ static const char* const qglslSolidBrushSrcFragmentShader = "\
}";
static const char* const qglslImageSrcFragmentShader = "\
- varying highp vec2 textureCoords; \
+ varying mediump vec2 textureCoords; \
uniform sampler2D imageTexture; \
lowp vec4 srcPixel() { \
return texture2D(imageTexture, textureCoords); \
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index b415b13..c1e39a7 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -75,6 +75,7 @@
#include <private/qfontengine_p.h>
#include <private/qtextureglyphcache_p.h>
#include <private/qpixmapdata_gl_p.h>
+#include <private/qdatabuffer_p.h>
#include "qglgradientcache_p.h"
#include "qglengineshadermanager_p.h"
@@ -175,7 +176,7 @@ void QGLTextureGlyphCache::createTextureData(int width, int height)
m_height = height;
QVarLengthArray<uchar> data(width * height);
- for (int i = 0; i < width * height; ++i)
+ for (int i = 0; i < data.size(); ++i)
data[i] = 0;
if (m_type == QFontEngineGlyphCache::Raster_RGBMask)
@@ -200,13 +201,18 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height)
glBindFramebuffer(GL_FRAMEBUFFER_EXT, m_fbo);
- GLuint colorBuffer;
- glGenRenderbuffers(1, &colorBuffer);
- glBindRenderbuffer(GL_RENDERBUFFER_EXT, colorBuffer);
- glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL_RGBA, oldWidth, oldHeight);
- glFramebufferRenderbuffer(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
- GL_RENDERBUFFER_EXT, colorBuffer);
- glBindRenderbuffer(GL_RENDERBUFFER_EXT, 0);
+ GLuint tmp_texture;
+ glGenTextures(1, &tmp_texture);
+ glBindTexture(GL_TEXTURE_2D, tmp_texture);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, oldWidth, oldHeight, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ glBindTexture(GL_TEXTURE_2D, 0);
+ glFramebufferTexture2D(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
+ GL_TEXTURE_2D, tmp_texture, 0);
glActiveTexture(GL_TEXTURE0 + QT_IMAGE_TEXTURE_UNIT);
glBindTexture(GL_TEXTURE_2D, oldTexture);
@@ -237,11 +243,24 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height)
glDisableVertexAttribArray(QT_TEXTURE_COORDS_ATTR);
glBindTexture(GL_TEXTURE_2D, m_texture);
+
+#ifdef QT_OPENGL_ES_2
+ QDataBuffer<uchar> buffer(4*oldWidth*oldHeight);
+ glReadPixels(0, 0, oldWidth, oldHeight, GL_RGBA, GL_UNSIGNED_BYTE, buffer.data());
+
+ // do an in-place conversion from GL_RGBA to GL_ALPHA
+ for (int i=0; i<oldWidth*oldHeight; ++i)
+ buffer.data()[i] = buffer.at(4*i + 3);
+
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, oldWidth, oldHeight,
+ GL_ALPHA, GL_UNSIGNED_BYTE, buffer.data());
+#else
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, oldWidth, oldHeight);
+#endif
glFramebufferRenderbuffer(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
GL_RENDERBUFFER_EXT, 0);
- glDeleteRenderbuffers(1, &colorBuffer);
+ glDeleteTextures(1, &tmp_texture);
glDeleteTextures(1, &oldTexture);
glBindFramebuffer(GL_FRAMEBUFFER_EXT, ctx->d_ptr->current_fbo);
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 67c02f2..e031fb5 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -147,7 +147,7 @@ QGLSignalProxy *QGLSignalProxy::instance()
\brief The QGL namespace specifies miscellaneous identifiers used
in the Qt OpenGL module.
- \ingroup multimedia
+ \ingroup painting-3D
*/
/*!
@@ -190,7 +190,7 @@ QGLSignalProxy *QGLSignalProxy::instance()
\brief The QGLFormat class specifies the display format of an OpenGL
rendering context.
- \ingroup multimedia
+ \ingroup painting-3D
A display format has several characteristics:
\list
@@ -1554,7 +1554,7 @@ Q_OPENGL_EXPORT QGLShareRegister* qgl_share_reg()
\class QGLContext
\brief The QGLContext class encapsulates an OpenGL rendering context.
- \ingroup multimedia
+ \ingroup painting-3D
An OpenGL rendering context is a complete set of OpenGL state
variables. The rendering context's \l {QGL::FormatOption} {format}
@@ -2775,8 +2775,8 @@ const QGLContext* QGLContext::currentContext()
\class QGLWidget
\brief The QGLWidget class is a widget for rendering OpenGL graphics.
- \ingroup multimedia
- \mainclass
+ \ingroup painting-3D
+
QGLWidget provides functionality for displaying OpenGL graphics
integrated into a Qt application. It is very simple to use. You
diff --git a/src/opengl/qglcolormap.cpp b/src/opengl/qglcolormap.cpp
index 0d38ce7..cdbf1c8 100644
--- a/src/opengl/qglcolormap.cpp
+++ b/src/opengl/qglcolormap.cpp
@@ -45,7 +45,7 @@
QGLWidgets.
\module OpenGL
- \ingroup multimedia
+ \ingroup painting-3D
\ingroup shared
QGLColormap provides a platform independent way of specifying and
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp
index f48c18d..db33297 100644
--- a/src/opengl/qglframebufferobject.cpp
+++ b/src/opengl/qglframebufferobject.cpp
@@ -90,7 +90,7 @@ public:
\since 4.6
- \ingroup multimedia
+ \ingroup painting-3D
A framebuffer object has several characteristics:
\list
@@ -275,7 +275,6 @@ public:
GLenum target;
QSize size;
QGLFramebufferObjectFormat format;
- int samples;
uint valid : 1;
uint bound : 1;
QGLFramebufferObject::Attachment fbo_attachment;
@@ -368,7 +367,6 @@ void QGLFramebufferObjectPrivate::init(const QSize &sz, QGLFramebufferObject::At
valid = checkFramebufferStatus();
color_buffer = 0;
- samples = 0;
} else {
GLint maxSamples;
glGetIntegerv(GL_MAX_SAMPLES_EXT, &maxSamples);
@@ -478,7 +476,7 @@ void QGLFramebufferObjectPrivate::init(const QSize &sz, QGLFramebufferObject::At
\brief The QGLFramebufferObject class encapsulates an OpenGL framebuffer object.
\since 4.2
- \ingroup multimedia
+ \ingroup painting-3D
The QGLFramebufferObject class encapsulates an OpenGL framebuffer
object, defined by the \c{GL_EXT_framebuffer_object} extension. In
diff --git a/src/opengl/qglpixelbuffer.cpp b/src/opengl/qglpixelbuffer.cpp
index 884bb36..4140bdf 100644
--- a/src/opengl/qglpixelbuffer.cpp
+++ b/src/opengl/qglpixelbuffer.cpp
@@ -44,7 +44,7 @@
\brief The QGLPixelBuffer class encapsulates an OpenGL pbuffer.
\since 4.1
- \ingroup multimedia
+ \ingroup painting-3D
Rendering into a pbuffer is normally done using full hardware
acceleration. This can be significantly faster than rendering
diff --git a/src/opengl/qglshaderprogram.cpp b/src/opengl/qglshaderprogram.cpp
index e3627ff..f8bffd3 100644
--- a/src/opengl/qglshaderprogram.cpp
+++ b/src/opengl/qglshaderprogram.cpp
@@ -55,6 +55,7 @@ QT_BEGIN_NAMESPACE
\class QGLShaderProgram
\brief The QGLShaderProgram class allows OpenGL shader programs to be linked and used.
\since 4.6
+ \ingroup painting-3D
\section1 Introduction
@@ -181,6 +182,7 @@ QT_BEGIN_NAMESPACE
\class QGLShader
\brief The QGLShader class allows OpenGL shaders to be compiled.
\since 4.6
+ \ingroup painting-3D
This class supports shaders written in the OpenGL Shading Language (GLSL)
and in the OpenGL/ES Shading Language (GLSL/ES).
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp
index d2fadcb..3979a8c 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp
@@ -47,7 +47,7 @@
QDirectFBPaintDevice::QDirectFBPaintDevice(QDirectFBScreen *scr)
: QCustomRasterPaintDevice(0), dfbSurface(0), lockedImage(0), screen(scr),
- lock(DFBSurfaceLockFlags(0)), mem(0), engine(0)
+ bpl(-1), lockFlgs(DFBSurfaceLockFlags(0)), mem(0), engine(0)
{}
QDirectFBPaintDevice::~QDirectFBPaintDevice()
@@ -65,15 +65,15 @@ IDirectFBSurface *QDirectFBPaintDevice::directFBSurface() const
void QDirectFBPaintDevice::lockDirectFB(DFBSurfaceLockFlags flags)
{
- if (!(lock & flags)) {
- if (lock)
+ if (!(lockFlgs & flags)) {
+ if (lockFlgs)
unlockDirectFB();
mem = QDirectFBScreen::lockSurface(dfbSurface, flags, &bpl);
Q_ASSERT(mem);
const QSize s = size();
lockedImage = new QImage(mem, s.width(), s.height(), bpl,
QDirectFBScreen::getImageFormat(dfbSurface));
- lock = flags;
+ lockFlgs = flags;
}
}
@@ -87,7 +87,7 @@ void QDirectFBPaintDevice::unlockDirectFB()
delete lockedImage;
lockedImage = 0;
mem = 0;
- lock = DFBSurfaceLockFlags(0);
+ lockFlgs = DFBSurfaceLockFlags(0);
}
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
index 3932403..688fd7b 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h
@@ -68,7 +68,7 @@ public:
int bytesPerLine() const;
QSize size() const;
int metric(QPaintDevice::PaintDeviceMetric metric) const;
- DFBSurfaceLockFlags lockFlags() const { return lock; }
+ DFBSurfaceLockFlags lockFlags() const { return lockFlgs; }
QPaintEngine *paintEngine() const;
protected:
@@ -86,7 +86,7 @@ protected:
QImage *lockedImage;
QDirectFBScreen *screen;
int bpl;
- DFBSurfaceLockFlags lock;
+ DFBSurfaceLockFlags lockFlgs;
uchar *mem;
QDirectFBPaintEngine *engine;
private:
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
index 131ff4b..ba715c3 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
@@ -119,13 +119,14 @@ private:
IDirectFB *fb;
quint8 opacity;
- bool dirtyClip;
ClipType clipType;
QDirectFBPaintDevice *dfbDevice;
uint compositionModeStatus;
- QDirectFBPaintEngine *q;
+ bool inClip;
QRect currentClip;
+
+ QDirectFBPaintEngine *q;
friend class QDirectFBPaintEngine;
};
@@ -236,7 +237,7 @@ static inline void drawRects(const T *rects, int n, const QTransform &transform,
d->surface->SetClip(d->surface, &clipRegion); \
operation; \
} \
- d->dirtyClip = true; \
+ d->updateClip(); \
break; } \
case QDirectFBPaintEnginePrivate::ComplexClip: \
case QDirectFBPaintEnginePrivate::ClipUnset: \
@@ -297,8 +298,8 @@ bool QDirectFBPaintEngine::end()
void QDirectFBPaintEngine::clipEnabledChanged()
{
Q_D(QDirectFBPaintEngine);
- d->dirtyClip = true;
QRasterPaintEngine::clipEnabledChanged();
+ d->updateClip();
}
void QDirectFBPaintEngine::penChanged()
@@ -341,26 +342,49 @@ void QDirectFBPaintEngine::setState(QPainterState *state)
{
Q_D(QDirectFBPaintEngine);
QRasterPaintEngine::setState(state);
- d->dirtyClip = true;
d->setPen(state->pen);
d->opacity = quint8(state->opacity * 255);
d->setCompositionMode(state->compositionMode());
d->setTransform(state->transform());
d->setRenderHints(state->renderHints);
+ if (d->surface)
+ d->updateClip();
}
void QDirectFBPaintEngine::clip(const QVectorPath &path, Qt::ClipOperation op)
{
Q_D(QDirectFBPaintEngine);
- d->dirtyClip = true;
+ const bool wasInClip = d->inClip;
+ d->inClip = true;
QRasterPaintEngine::clip(path, op);
+ if (!wasInClip) {
+ d->inClip = false;
+ d->updateClip();
+ }
+}
+
+void QDirectFBPaintEngine::clip(const QRegion &region, Qt::ClipOperation op)
+{
+ Q_D(QDirectFBPaintEngine);
+ const bool wasInClip = d->inClip;
+ d->inClip = true;
+ QRasterPaintEngine::clip(region, op);
+ if (!wasInClip) {
+ d->inClip = false;
+ d->updateClip();
+ }
}
void QDirectFBPaintEngine::clip(const QRect &rect, Qt::ClipOperation op)
{
Q_D(QDirectFBPaintEngine);
- d->dirtyClip = true;
+ const bool wasInClip = d->inClip;
+ d->inClip = true;
QRasterPaintEngine::clip(rect, op);
+ if (!wasInClip) {
+ d->inClip = false;
+ d->updateClip();
+ }
}
void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount)
@@ -371,7 +395,6 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount)
if (brush == Qt::NoBrush && pen == Qt::NoPen)
return;
- d->updateClip();
if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedPrimitives)
|| (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_RectsUnsupported)
|| !d->simplePen
@@ -401,7 +424,6 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount)
if (brush == Qt::NoBrush && pen == Qt::NoPen)
return;
- d->updateClip();
if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedPrimitives)
|| (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_RectsUnsupported)
|| !d->simplePen
@@ -426,7 +448,6 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount)
void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount)
{
Q_D(QDirectFBPaintEngine);
- d->updateClip();
if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedPrimitives)
|| !d->simplePen
@@ -448,7 +469,6 @@ void QDirectFBPaintEngine::drawLines(const QLine *lines, int lineCount)
void QDirectFBPaintEngine::drawLines(const QLineF *lines, int lineCount)
{
Q_D(QDirectFBPaintEngine);
- d->updateClip();
if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedPrimitives)
|| !d->simplePen
@@ -491,7 +511,6 @@ void QDirectFBPaintEngine::drawImage(const QRectF &r, const QImage &image,
than the max image cache size we fall back to raster engine.
*/
- d->updateClip();
#if !defined QT_NO_DIRECTFB_PREALLOCATED || defined QT_DIRECTFB_IMAGECACHE
if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedBlits)
|| (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported)
@@ -534,7 +553,6 @@ void QDirectFBPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pixmap,
{
Q_D(QDirectFBPaintEngine);
- d->updateClip();
if (pixmap.pixmapData()->classId() != QPixmapData::DirectFBClass) {
RASTERFALLBACK(DRAW_PIXMAP, r, pixmap.size(), sr);
d->lock();
@@ -569,7 +587,6 @@ void QDirectFBPaintEngine::drawTiledPixmap(const QRectF &r,
const QPointF &offset)
{
Q_D(QDirectFBPaintEngine);
- d->updateClip();
if (pixmap.pixmapData()->classId() != QPixmapData::DirectFBClass) {
RASTERFALLBACK(DRAW_TILED_PIXMAP, r, pixmap.size(), offset);
d->lock();
@@ -586,7 +603,7 @@ void QDirectFBPaintEngine::drawTiledPixmap(const QRectF &r,
QRasterPaintEngine::drawTiledPixmap(r, pix, offset);
} else {
d->unlock();
- d->drawTiledPixmap(r, pixmap, offset);
+ CLIPPED_PAINT(d->drawTiledPixmap(r, pixmap, offset));
}
}
@@ -674,7 +691,6 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
Q_D(QDirectFBPaintEngine);
if (brush.style() == Qt::NoBrush)
return;
- d->updateClip();
if (d->clipType != QDirectFBPaintEnginePrivate::ComplexClip) {
switch (brush.style()) {
case Qt::SolidPattern: {
@@ -718,7 +734,6 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QColor &color)
if (!color.isValid())
return;
Q_D(QDirectFBPaintEngine);
- d->updateClip();
if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_SupportedPrimitives)
|| (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_RectsUnsupported)
|| d->clipType == QDirectFBPaintEnginePrivate::ComplexClip) {
@@ -729,8 +744,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QColor &color)
d->unlock();
d->setDFBColor(color);
const QRect r = state()->matrix.mapRect(rect).toRect();
- d->surface->FillRectangle(d->surface, r.x(), r.y(),
- r.width(), r.height());
+ CLIPPED_PAINT(d->surface->FillRectangle(d->surface, r.x(), r.y(), r.width(), r.height()));
}
}
@@ -765,9 +779,9 @@ void QDirectFBPaintEngine::initImageCache(int size)
QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p)
: surface(0), antialiased(false), simplePen(false),
- transformationType(0), opacity(255), dirtyClip(true),
+ transformationType(0), opacity(255),
clipType(ClipUnset), dfbDevice(0),
- compositionModeStatus(0), q(p)
+ compositionModeStatus(0), inClip(false), q(p)
{
fb = QDirectFBScreen::instance()->dfb();
surfaceCache = new SurfaceCache;
@@ -978,7 +992,6 @@ static inline qreal fixCoord(qreal rect_pos, qreal pixmapSize, qreal offset)
void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPixmap &pixmap, const QPointF &off)
{
- Q_ASSERT(!dirtyClip);
Q_ASSERT(!(transformationType & Matrix_BlitsUnsupported));
const QTransform &transform = q->state()->matrix;
const QRect destinationRect = transform.mapRect(dest).toRect().normalized();
@@ -1071,9 +1084,7 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
void QDirectFBPaintEnginePrivate::updateClip()
{
- if (!dirtyClip)
- return;
-
+ Q_ASSERT(surface);
currentClip = QRect();
const QClipData *clipData = clip();
if (!clipData || !clipData->enabled) {
@@ -1095,14 +1106,12 @@ void QDirectFBPaintEnginePrivate::updateClip()
} else {
clipType = ComplexClip;
}
-
- dirtyClip = false;
}
void QDirectFBPaintEnginePrivate::systemStateChanged()
{
- dirtyClip = true;
QRasterPaintEnginePrivate::systemStateChanged();
+ updateClip();
}
IDirectFBSurface *SurfaceCache::getSurface(const uint *buf, int size)
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
index b939b68..80108b2 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
@@ -101,6 +101,7 @@ public:
virtual void setState(QPainterState *state);
virtual void clip(const QVectorPath &path, Qt::ClipOperation op);
+ virtual void clip(const QRegion &region, Qt::ClipOperation op);
virtual void clip(const QRect &rect, Qt::ClipOperation op);
static void initImageCache(int size);
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
index a1edbd6..dc53847 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
@@ -56,21 +56,29 @@
class QDirectFBScreenPrivate : public QObject, public QWSGraphicsSystem
{
+ Q_OBJECT
public:
QDirectFBScreenPrivate(QDirectFBScreen *qptr);
~QDirectFBScreenPrivate();
void setFlipFlags(const QStringList &args);
QPixmapData *createPixmapData(QPixmapData::PixelType type) const;
-
+public slots:
+#ifdef QT_DIRECTFB_WM
+ void onWindowEvent(QWSWindow *window, QWSServer::WindowEvent event);
+#endif
+public:
IDirectFB *dfb;
- IDirectFBSurface *dfbSurface;
DFBSurfaceFlipFlags flipFlags;
+ QDirectFBScreen::DirectFBFlags directFBFlags;
+ QImage::Format alphaPixmapFormat;
+ IDirectFBScreen *dfbScreen;
+#ifdef QT_NO_DIRECTFB_WM
+ IDirectFBSurface *primarySurface;
+#endif
#ifndef QT_NO_DIRECTFB_LAYER
IDirectFBDisplayLayer *dfbLayer;
#endif
- IDirectFBScreen *dfbScreen;
-
QSet<IDirectFBSurface*> allocatedSurfaces;
#ifndef QT_NO_DIRECTFB_MOUSE
@@ -79,31 +87,37 @@ public:
#ifndef QT_NO_DIRECTFB_KEYBOARD
QDirectFBKeyboardHandler *keyboard;
#endif
- QDirectFBScreen::DirectFBFlags directFBFlags;
- QImage::Format alphaPixmapFormat;
QColor backgroundColor;
QDirectFBScreen *q;
};
+#include "qdirectfbscreen.moc"
+
QDirectFBScreenPrivate::QDirectFBScreenPrivate(QDirectFBScreen *qptr)
- : QWSGraphicsSystem(qptr), dfb(0), dfbSurface(0), flipFlags(DSFLIP_NONE)
+ : QWSGraphicsSystem(qptr), dfb(0), flipFlags(DSFLIP_NONE),
+ directFBFlags(QDirectFBScreen::NoFlags), alphaPixmapFormat(QImage::Format_Invalid),
+ dfbScreen(0)
+#ifdef QT_NO_DIRECTFB_WM
+ , primarySurface(0)
+#endif
#ifndef QT_NO_DIRECTFB_LAYER
, dfbLayer(0)
#endif
- , dfbScreen(0)
#ifndef QT_NO_DIRECTFB_MOUSE
, mouse(0)
#endif
#ifndef QT_NO_DIRECTFB_KEYBOARD
, keyboard(0)
#endif
- , directFBFlags(QDirectFBScreen::NoFlags)
- , alphaPixmapFormat(QImage::Format_Invalid)
, q(qptr)
{
#ifndef QT_NO_QWS_SIGNALHANDLER
QWSSignalHandler::instance()->addObject(this);
#endif
+#ifdef QT_DIRECTFB_WM
+ connect(QWSServer::instance(), SIGNAL(windowEvent(QWSWindow*, QWSServer::WindowEvent)),
+ this, SLOT(onWindowEvent(QWSWindow*, QWSServer::WindowEvent)));
+#endif
}
QDirectFBScreenPrivate::~QDirectFBScreenPrivate()
@@ -119,8 +133,10 @@ QDirectFBScreenPrivate::~QDirectFBScreenPrivate()
(*it)->Release(*it);
}
- if (dfbSurface)
- dfbSurface->Release(dfbSurface);
+#ifdef QT_NO_DIRECTFB_WM
+ if (primarySurface)
+ primarySurface->Release(primarySurface);
+#endif
#ifndef QT_NO_DIRECTFB_LAYER
if (dfbLayer)
@@ -366,10 +382,12 @@ IDirectFB *QDirectFBScreen::dfb()
return d_ptr->dfb;
}
-IDirectFBSurface *QDirectFBScreen::dfbSurface()
+#ifdef QT_NO_DIRECTFB_WM
+IDirectFBSurface *QDirectFBScreen::primarySurface()
{
- return d_ptr->dfbSurface;
+ return d_ptr->primarySurface;
}
+#endif
#ifndef QT_NO_DIRECTFB_LAYER
IDirectFBDisplayLayer *QDirectFBScreen::dfbDisplayLayer()
@@ -571,6 +589,7 @@ QDirectFBScreenCursor::QDirectFBScreenCursor()
void QDirectFBScreenCursor::move(int x, int y)
{
+ pos = QPoint(x, y);
layer->WarpCursor(layer, x, y);
}
@@ -739,6 +758,18 @@ void QDirectFBScreenPrivate::setFlipFlags(const QStringList &args)
}
}
+#ifdef QT_DIRECTFB_WM
+void QDirectFBScreenPrivate::onWindowEvent(QWSWindow *window, QWSServer::WindowEvent event)
+{
+ if (event == QWSServer::Raise) {
+ QWSWindowSurface *windowSurface = window->windowSurface();
+ if (windowSurface && windowSurface->key() == QLatin1String("directfb")) {
+ static_cast<QDirectFBWindowSurface*>(windowSurface)->raise();
+ }
+ }
+}
+#endif
+
QPixmapData *QDirectFBScreenPrivate::createPixmapData(QPixmapData::PixelType type) const
{
if (type == QPixmapData::BitmapType)
@@ -863,6 +894,36 @@ static inline bool setIntOption(const QStringList &arguments, const QString &var
return false;
}
+static inline int depth(QImage::Format format)
+{
+ switch (format) {
+ case QImage::Format_Mono:
+ case QImage::Format_MonoLSB:
+ return 1;
+ case QImage::Format_Indexed8:
+ return 8;
+ case QImage::Format_RGB32:
+ case QImage::Format_ARGB32:
+ case QImage::Format_ARGB32_Premultiplied:
+ return 32;
+ case QImage::Format_ARGB8565_Premultiplied:
+ case QImage::Format_RGB666:
+ case QImage::Format_ARGB6666_Premultiplied:
+ case QImage::Format_ARGB8555_Premultiplied:
+ case QImage::Format_RGB888:
+ return 24;
+ case QImage::Format_RGB555:
+ case QImage::Format_RGB444:
+ case QImage::Format_RGB16:
+ case QImage::Format_ARGB4444_Premultiplied:
+ return 16;
+ case QImage::Format_Invalid:
+ case QImage::NImageFormats:
+ break;
+ }
+ return -1;
+}
+
bool QDirectFBScreen::connect(const QString &displaySpec)
{
DFBResult result = DFB_OK;
@@ -923,7 +984,9 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
DFBSurfaceDescription description;
memset(&description, 0, sizeof(DFBSurfaceDescription));
+ IDirectFBSurface *surface;
+#ifdef QT_NO_DIRECTFB_WM
description.flags = DSDESC_CAPS;
if (::setIntOption(displayArgs, QLatin1String("width"), &description.width))
description.flags |= DSDESC_WIDTH;
@@ -952,15 +1015,22 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
}
// We don't track the primary surface as it's released in disconnect
- d_ptr->dfbSurface = createDFBSurface(description, DontTrackSurface);
- if (!d_ptr->dfbSurface) {
+ d_ptr->primarySurface = createDFBSurface(description, DontTrackSurface);
+ if (!d_ptr->primarySurface) {
DirectFBError("QDirectFBScreen: error creating primary surface",
result);
return false;
}
+ surface = d_ptr->primarySurface;
+#else
+ description.flags = DSDESC_WIDTH|DSDESC_HEIGHT;
+ description.width = description.height = 1;
+ surface = createDFBSurface(description, DontTrackSurface);
+#endif
// Work out what format we're going to use for surfaces with an alpha channel
- d_ptr->alphaPixmapFormat = QDirectFBScreen::getImageFormat(d_ptr->dfbSurface);
+ d_ptr->alphaPixmapFormat = QDirectFBScreen::getImageFormat(surface);
+
setPixelFormat(d_ptr->alphaPixmapFormat);
switch (d_ptr->alphaPixmapFormat) {
case QImage::Format_RGB666:
@@ -994,31 +1064,11 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
// works already
break;
}
- d_ptr->dfbSurface->GetSize(d_ptr->dfbSurface, &w, &h);
+ QScreen::d = ::depth(pixelFormat());
data = 0;
lstep = 0;
size = 0;
- dw = w;
- dh = h;
-
- DFBSurfacePixelFormat format;
- result = d_ptr->dfbSurface->GetPixelFormat(d_ptr->dfbSurface, &format);
- if (result == DFB_OK)
- QScreen::d = depth(format);
- else
- DirectFBError("QDirectFBScreen: error getting surface format", result);
-
- setPixelFormat(getImageFormat(d_ptr->dfbSurface));
-
- physWidth = physHeight = -1;
- ::setIntOption(displayArgs, QLatin1String("mmWidth"), &physWidth);
- ::setIntOption(displayArgs, QLatin1String("mmHeight"), &physHeight);
- const int dpi = 72;
- if (physWidth < 0)
- physWidth = qRound(dw * 25.4 / dpi);
- if (physHeight < 0)
- physHeight = qRound(dh * 25.4 / dpi);
#ifndef QT_NO_DIRECTFB_LAYER
result = d_ptr->dfb->GetDisplayLayer(d_ptr->dfb, DLID_PRIMARY,
@@ -1037,12 +1087,35 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
"Unable to get screen!", result);
return false;
}
+ result = d_ptr->dfbScreen->GetSize(d_ptr->dfbScreen, &w, &h);
+ if (result != DFB_OK) {
+ DirectFBError("QDirectFBScreen::connect: "
+ "Unable to get screen size!", result);
+ return false;
+ }
+
+ dw = w;
+ dh = h;
+
+ Q_ASSERT(dw != 0 && dh != 0);
+
+ physWidth = physHeight = -1;
+ ::setIntOption(displayArgs, QLatin1String("mmWidth"), &physWidth);
+ ::setIntOption(displayArgs, QLatin1String("mmHeight"), &physHeight);
+ const int dpi = 72;
+ if (physWidth < 0)
+ physWidth = qRound(dw * 25.4 / dpi);
+ if (physHeight < 0)
+ physHeight = qRound(dh * 25.4 / dpi);
setGraphicsSystem(d_ptr);
#if (Q_DIRECTFB_VERSION >= 0x000923)
if (displayArgs.contains(QLatin1String("debug"), Qt::CaseInsensitive))
- printDirectFBInfo(d_ptr->dfb, d_ptr->dfbSurface);
+ printDirectFBInfo(d_ptr->dfb, surface);
+#endif
+#ifndef QT_NO_DIRECTFB_WM
+ surface->Release(surface);
#endif
QRegExp backgroundColorRegExp("bgcolor=?(.+)");
@@ -1058,8 +1131,10 @@ bool QDirectFBScreen::connect(const QString &displaySpec)
void QDirectFBScreen::disconnect()
{
- d_ptr->dfbSurface->Release(d_ptr->dfbSurface);
- d_ptr->dfbSurface = 0;
+#ifdef QT_NO_DIRECTFB_WM
+ d_ptr->primarySurface->Release(d_ptr->primarySurface);
+ d_ptr->primarySurface = 0;
+#endif
foreach (IDirectFBSurface *surf, d_ptr->allocatedSurfaces)
surf->Release(surf);
@@ -1155,25 +1230,9 @@ QWSWindowSurface *QDirectFBScreen::createSurface(const QString &key) const
// QT_NO_DIRECTFB_WM isn't set), exposeRegion will simply return. If
// QT_NO_DIRECTFB_WM is set, exposeRegion will compose only non-directFB
// window surfaces. Normal, directFB surfaces are handled by DirectFB.
-static inline bool needExposeRegion()
-{
-#ifdef QT_NO_DIRECTFB_WM
- return true;
-#endif
-#ifdef QT_NO_DIRECTFB_LAYER
-#ifndef QT_NO_QWS_CURSOR
- return true;
-#endif
-#endif
- return false;
-}
-
void QDirectFBScreen::exposeRegion(QRegion r, int changing)
{
- if (!needExposeRegion()) {
- return;
- }
-
+#ifdef QT_NO_DIRECTFB_WM
const QList<QWSWindow*> windows = QWSServer::instance()->clientWindows();
if (changing < 0 || changing >= windows.size())
return;
@@ -1207,9 +1266,9 @@ void QDirectFBScreen::exposeRegion(QRegion r, int changing)
const DFBRectangle rect = {
source.x(), source.y(), source.width(), source.height()
};
- d_ptr->dfbSurface->Blit(d_ptr->dfbSurface, surface, &rect,
- windowGeometry.x() + source.x(),
- windowGeometry.y() + source.y());
+ d_ptr->primarySurface->Blit(d_ptr->primarySurface, surface, &rect,
+ windowGeometry.x() + source.x(),
+ windowGeometry.y() + source.y());
} else {
const QVector<QRect> rects = insideWindow.rects();
QVarLengthArray<DFBRectangle, 16> dfbRectangles(n);
@@ -1225,8 +1284,8 @@ void QDirectFBScreen::exposeRegion(QRegion r, int changing)
dfbPoints[i].x = (windowGeometry.x() + source.x());
dfbPoints[i].y = (windowGeometry.y() + source.y());
}
- d_ptr->dfbSurface->BatchBlit(d_ptr->dfbSurface, surface, dfbRectangles.constData(),
- dfbPoints.constData(), n);
+ d_ptr->primarySurface->BatchBlit(d_ptr->primarySurface, surface, dfbRectangles.constData(),
+ dfbPoints.constData(), n);
}
}
}
@@ -1237,29 +1296,37 @@ void QDirectFBScreen::exposeRegion(QRegion r, int changing)
if (cursor->isVisible() && !cursor->isAccelerated() && cursorRectangle.intersects(brect)) {
const QImage image = cursor->image();
IDirectFBSurface *surface = createDFBSurface(image, QDirectFBScreen::DontTrackSurface);
- d_ptr->dfbSurface->SetBlittingFlags(d_ptr->dfbSurface, DSBLIT_BLEND_ALPHACHANNEL);
- d_ptr->dfbSurface->Blit(d_ptr->dfbSurface, surface, 0, cursorRectangle.x(), cursorRectangle.y());
+ d_ptr->primarySurface->SetBlittingFlags(d_ptr->primarySurface, DSBLIT_BLEND_ALPHACHANNEL);
+ d_ptr->primarySurface->Blit(d_ptr->primarySurface, surface, 0, cursorRectangle.x(), cursorRectangle.y());
surface->Release(surface);
#if (Q_DIRECTFB_VERSION >= 0x010000)
- d_ptr->dfbSurface->ReleaseSource(d_ptr->dfbSurface);
+ d_ptr->primarySurface->ReleaseSource(d_ptr->primarySurface);
#endif
}
}
- flipSurface(d_ptr->dfbSurface, d_ptr->flipFlags, r, QPoint());
+ flipSurface(d_ptr->primarySurface, d_ptr->flipFlags, r, QPoint());
+#else
+ Q_UNUSED(r);
+ Q_UNUSED(changing);
+#endif
}
void QDirectFBScreen::solidFill(const QColor &color, const QRegion &region)
{
+#ifdef QT_DIRECTFB_WM
+ Q_UNUSED(color);
+ Q_UNUSED(region);
+#else
if (region.isEmpty())
return;
- d_ptr->dfbSurface->SetColor(d_ptr->dfbSurface,
+ d_ptr->primarySurface->SetColor(d_ptr->primarySurface,
color.red(), color.green(), color.blue(),
color.alpha());
const int n = region.numRects();
if (n > 1) {
const QRect r = region.boundingRect();
- d_ptr->dfbSurface->FillRectangle(d_ptr->dfbSurface, r.x(), r.y(), r.width(), r.height());
+ d_ptr->primarySurface->FillRectangle(d_ptr->primarySurface, r.x(), r.y(), r.width(), r.height());
} else {
const QVector<QRect> rects = region.rects();
QVarLengthArray<DFBRectangle, 32> rectArray(n);
@@ -1270,8 +1337,9 @@ void QDirectFBScreen::solidFill(const QColor &color, const QRegion &region)
rectArray[i].w = r.width();
rectArray[i].h = r.height();
}
- d_ptr->dfbSurface->FillRectangles(d_ptr->dfbSurface, rectArray.constData(), n);
+ d_ptr->primarySurface->FillRectangles(d_ptr->primarySurface, rectArray.constData(), n);
}
+#endif
}
void QDirectFBScreen::erase(const QRegion &region)
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
index 78765ac..3f9248e 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
@@ -50,6 +50,31 @@ QT_BEGIN_HEADER
QT_MODULE(Gui)
+#if !defined QT_NO_DIRECTFB_LAYER && !defined QT_DIRECTFB_LAYER
+#define QT_DIRECTFB_LAYER
+#endif
+#if !defined QT_NO_DIRECTFB_WM && !defined QT_DIRECTFB_WM
+#define QT_DIRECTFB_WM
+#endif
+#if !defined QT_DIRECTFB_IMAGECACHE && !defined QT_NO_DIRECTFB_IMAGECACHE
+#define QT_NO_DIRECTFB_IMAGECACHE
+#endif
+#if !defined QT_NO_DIRECTFB_PALETTE && !defined QT_DIRECTFB_PALETTE
+#define QT_DIRECTFB_PALETTE
+#endif
+#if !defined QT_NO_DIRECTFB_PREALLOCATED && !defined QT_DIRECTFB_PREALLOCATED
+#define QT_DIRECTFB_PREALLOCATED
+#endif
+#if !defined QT_NO_DIRECTFB_MOUSE && !defined QT_DIRECTFB_MOUSE
+#define QT_DIRECTFB_MOUSE
+#endif
+#if !defined QT_NO_DIRECTFB_KEYBOARD && !defined QT_DIRECTFB_KEYBOARD
+#define QT_DIRECTFB_KEYBOARD
+#endif
+#if !defined QT_NO_DIRECTFB_OPAQUE_DETECTION && !defined QT_DIRECTFB_OPAQUE_DETECTION
+#define QT_DIRECTFB_OPAQUE_DETECTION
+#endif
+
#define Q_DIRECTFB_VERSION ((DIRECTFB_MAJOR_VERSION << 16) | (DIRECTFB_MINOR_VERION << 8) | DIRECTFB_MICRO_VERSION)
#define DIRECTFB_DECLARE_OPERATORS_FOR_FLAGS(F) \
@@ -108,7 +133,9 @@ public:
}
IDirectFB *dfb();
- IDirectFBSurface *dfbSurface();
+#ifdef QT_NO_DIRECTFB_WM
+ IDirectFBSurface *primarySurface();
+#endif
#ifndef QT_NO_DIRECTFB_LAYER
IDirectFBDisplayLayer *dfbDisplayLayer();
#endif
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
index d837509..441bac9 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
@@ -54,15 +54,13 @@ QDirectFBWindowSurface::QDirectFBWindowSurface(DFBSurfaceFlipFlags flip, QDirect
: QDirectFBPaintDevice(scr)
#ifndef QT_NO_DIRECTFB_WM
, dfbWindow(0)
+ , sibling(0)
#endif
- , engineHeight(-1)
, flipFlags(flip)
, boundingRectFlip(scr->directFBFlags() & QDirectFBScreen::BoundingRectFlip)
{
#ifdef QT_NO_DIRECTFB_WM
mode = Offscreen;
-#else
- mode = Window;
#endif
setSurfaceFlags(Opaque | Buffered);
#ifdef QT_DIRECTFB_TIMING
@@ -75,22 +73,23 @@ QDirectFBWindowSurface::QDirectFBWindowSurface(DFBSurfaceFlipFlags flip, QDirect
: QWSWindowSurface(widget), QDirectFBPaintDevice(scr)
#ifndef QT_NO_DIRECTFB_WM
, dfbWindow(0)
+ , sibling(0)
#endif
- , engineHeight(-1)
, flipFlags(flip)
, boundingRectFlip(scr->directFBFlags() & QDirectFBScreen::BoundingRectFlip)
{
+#ifdef QT_NO_DIRECTFB_WM
if (widget && widget->testAttribute(Qt::WA_PaintOnScreen)) {
setSurfaceFlags(Opaque | RegionReserved);
mode = Primary;
} else {
-#ifdef QT_NO_DIRECTFB_WM
mode = Offscreen;
-#else
- mode = Window;
-#endif
setSurfaceFlags(Opaque | Buffered);
}
+#else
+ setSurfaceFlags(Opaque | Buffered);
+#endif
+
#ifdef QT_DIRECTFB_TIMING
frames = 0;
timer.start();
@@ -101,6 +100,17 @@ QDirectFBWindowSurface::~QDirectFBWindowSurface()
{
}
+#ifdef QT_DIRECTFB_WM
+void QDirectFBWindowSurface::raise()
+{
+ if (dfbWindow) {
+ dfbWindow->RaiseToTop(dfbWindow);
+ } else if (sibling && (!sibling->sibling || sibling->dfbWindow)) {
+ sibling->raise();
+ }
+}
+#endif
+
bool QDirectFBWindowSurface::isValid() const
{
return true;
@@ -129,6 +139,7 @@ void QDirectFBWindowSurface::createWindow()
description.surface_caps = DSCAPS_PREMULTIPLIED;
DFBResult result = layer->CreateWindow(layer, &description, &dfbWindow);
+
if (result != DFB_OK)
DirectFBErrorFatal("QDirectFBWindowSurface::createWindow", result);
@@ -172,8 +183,10 @@ static DFBResult setGeometry(IDirectFBWindow *dfbWindow, const QRect &old, const
void QDirectFBWindowSurface::setGeometry(const QRect &rect)
{
- IDirectFBSurface *primarySurface = screen->dfbSurface();
+#ifdef QT_NO_DIRECTFB_WM
+ IDirectFBSurface *primarySurface = screen->primarySurface();
Q_ASSERT(primarySurface);
+#endif
if (rect.isNull()) {
#ifndef QT_NO_DIRECTFB_WM
if (dfbWindow) {
@@ -182,9 +195,10 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect)
}
#endif
if (dfbSurface) {
- if (dfbSurface != primarySurface) {
+#ifdef QT_NO_DIRECTFB_WM
+ if (dfbSurface != primarySurface)
+#endif
dfbSurface->Release(dfbSurface);
- }
dfbSurface = 0;
}
} else if (rect != geometry()) {
@@ -192,8 +206,12 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect)
DFBResult result = DFB_OK;
// If we're in a resize, the surface shouldn't be locked
Q_ASSERT((lockedImage == 0) || (rect.size() == geometry().size()));
- switch (mode) {
- case Primary:
+#ifdef QT_DIRECTFB_WM
+ if (!dfbWindow)
+ createWindow();
+ ::setGeometry(dfbWindow, oldRect, rect);
+#else
+ if (mode == Primary) {
if (dfbSurface && dfbSurface != primarySurface)
dfbSurface->Release(dfbSurface);
if (rect == screen->region().boundingRect()) {
@@ -203,15 +221,7 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect)
rect.width(), rect.height() };
result = primarySurface->GetSubSurface(primarySurface, &r, &dfbSurface);
}
- break;
- case Window:
-#ifndef QT_NO_DIRECTFB_WM
- if (!dfbWindow)
- createWindow();
- ::setGeometry(dfbWindow, oldRect, rect);
-#endif
- break;
- case Offscreen: {
+ } else {
if (!dfbSurface || oldRect.size() != rect.size()) {
if (dfbSurface)
dfbSurface->Release(dfbSurface);
@@ -220,49 +230,40 @@ void QDirectFBWindowSurface::setGeometry(const QRect &rect)
const QRegion region = QRegion(oldRect.isEmpty() ? screen->region() : QRegion(oldRect)).subtracted(rect);
screen->erase(region);
screen->flipSurface(primarySurface, flipFlags, region, QPoint());
- break; }
+ }
+#endif
+ if (size() != geometry().size()) {
+ delete engine;
+ engine = 0;
}
if (result != DFB_OK)
DirectFBErrorFatal("QDirectFBWindowSurface::setGeometry()", result);
}
- if (engine) {
- delete engine;
- engine = 0;
- }
QWSWindowSurface::setGeometry(rect);
}
QByteArray QDirectFBWindowSurface::permanentState() const
{
- QByteArray array;
-#ifdef QT_NO_DIRECTFB_WM
- array.resize(sizeof(SurfaceFlags) + sizeof(IDirectFBSurface*));
-#else
- array.resize(sizeof(SurfaceFlags));
-#endif
- char *ptr = array.data();
-
- *reinterpret_cast<SurfaceFlags*>(ptr) = surfaceFlags();
- ptr += sizeof(SurfaceFlags);
-
-#ifdef QT_NO_DIRECTFB_WM
- *reinterpret_cast<IDirectFBSurface**>(ptr) = dfbSurface;
+ QByteArray state;
+#ifdef QT_DIRECTFB_WM
+ QDataStream ds(&state, QIODevice::WriteOnly);
+ ds << reinterpret_cast<quintptr>(this);
#endif
- return array;
+ return state;
}
void QDirectFBWindowSurface::setPermanentState(const QByteArray &state)
{
- SurfaceFlags flags;
- const char *ptr = state.constData();
-
- flags = *reinterpret_cast<const SurfaceFlags*>(ptr);
- setSurfaceFlags(flags);
-
-#ifdef QT_NO_DIRECTFB_WM
- ptr += sizeof(SurfaceFlags);
- dfbSurface = *reinterpret_cast<IDirectFBSurface* const*>(ptr);
+#ifdef QT_DIRECTFB_WM
+ if (state.size() == sizeof(quintptr)) {
+ QDataStream ds(state);
+ quintptr ptr;
+ ds >> ptr;
+ sibling = reinterpret_cast<QDirectFBWindowSurface*>(ptr);
+ }
+#else
+ Q_UNUSED(state);
#endif
}
@@ -349,7 +350,8 @@ void QDirectFBWindowSurface::flush(QWidget *, const QRegion &region,
}
const QRect windowGeometry = QDirectFBWindowSurface::geometry();
- IDirectFBSurface *primarySurface = screen->dfbSurface();
+#ifdef QT_NO_DIRECTFB_WM
+ IDirectFBSurface *primarySurface = screen->primarySurface();
if (mode == Offscreen) {
primarySurface->SetBlittingFlags(primarySurface, DSBLIT_NOFX);
const QRect windowRect(0, 0, windowGeometry.width(), windowGeometry.height());
@@ -401,9 +403,9 @@ void QDirectFBWindowSurface::flush(QWidget *, const QRegion &region,
}
if (mode == Offscreen) {
screen->flipSurface(primarySurface, flipFlags, region, offset + windowGeometry.topLeft());
- } else {
- screen->flipSurface(dfbSurface, flipFlags, region, offset);
- }
+ } else
+#endif
+ screen->flipSurface(dfbSurface, flipFlags, region, offset);
#ifdef QT_DIRECTFB_TIMING
enum { Secs = 3 };
@@ -419,12 +421,8 @@ void QDirectFBWindowSurface::flush(QWidget *, const QRegion &region,
void QDirectFBWindowSurface::beginPaint(const QRegion &)
{
- const int h = height();
- if (h > engineHeight) {
- engineHeight = h;
- delete engine;
+ if (!engine)
engine = new QDirectFBPaintEngine(this);
- }
}
void QDirectFBWindowSurface::endPaint(const QRegion &)
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h
index 0d6ebc0..2c4bcdf 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h
@@ -65,6 +65,9 @@ public:
QDirectFBWindowSurface(DFBSurfaceFlipFlags flipFlags, QDirectFBScreen *scr, QWidget *widget);
~QDirectFBWindowSurface();
+#ifdef QT_DIRECTFB_WM
+ void raise();
+#endif
bool isValid() const;
void setGeometry(const QRect &rect);
@@ -87,17 +90,18 @@ public:
QImage *buffer(const QWidget *widget);
private:
-#ifndef QT_NO_DIRECTFB_WM
+#ifdef QT_DIRECTFB_WM
void createWindow();
IDirectFBWindow *dfbWindow;
+ QDirectFBWindowSurface *sibling;
#endif
- int engineHeight;
+#ifdef QT_NO_DIRECTFB_WM
enum Mode {
Primary,
- Offscreen,
- Window
+ Offscreen
} mode;
+#endif
QList<QImage*> bufferImages;
DFBSurfaceFlipFlags flipFlags;
diff --git a/src/plugins/imageformats/tiff/qtiffhandler.cpp b/src/plugins/imageformats/tiff/qtiffhandler.cpp
index ec8a483..59edaf4 100644
--- a/src/plugins/imageformats/tiff/qtiffhandler.cpp
+++ b/src/plugins/imageformats/tiff/qtiffhandler.cpp
@@ -98,6 +98,43 @@ void qtiffUnmapProc(thandle_t /*fd*/, tdata_t /*base*/, toff_t /*size*/)
{
}
+// for 32 bits images
+inline void rotate_right_mirror_horizontal(QImage *const image)// rotate right->mirrored horizontal
+{
+ const int height = image->height();
+ const int width = image->width();
+ QImage generated(/* width = */ height, /* height = */ width, image->format());
+ const uint32 *originalPixel = reinterpret_cast<const uint32*>(image->bits());
+ uint32 *const generatedPixels = reinterpret_cast<uint32*>(generated.bits());
+ for (int row=0; row < height; ++row) {
+ for (int col=0; col < width; ++col) {
+ int idx = col * height + row;
+ generatedPixels[idx] = *originalPixel;
+ ++originalPixel;
+ }
+ }
+ *image = generated;
+}
+
+inline void rotate_right_mirror_vertical(QImage *const image) // rotate right->mirrored vertical
+{
+ const int height = image->height();
+ const int width = image->width();
+ QImage generated(/* width = */ height, /* height = */ width, image->format());
+ const int lastCol = width - 1;
+ const int lastRow = height - 1;
+ const uint32 *pixel = reinterpret_cast<const uint32*>(image->bits());
+ uint32 *const generatedBits = reinterpret_cast<uint32*>(generated.bits());
+ for (int row=0; row < height; ++row) {
+ for (int col=0; col < width; ++col) {
+ int idx = (lastCol - col) * height + (lastRow - row);
+ generatedBits[idx] = *pixel;
+ ++pixel;
+ }
+ }
+ *image = generated;
+}
+
QTiffHandler::QTiffHandler() : QImageIOHandler()
{
compression = NoCompression;
@@ -223,7 +260,8 @@ bool QTiffHandler::read(QImage *image)
if (image->size() != QSize(width, height) || image->format() != QImage::Format_ARGB32)
*image = QImage(width, height, QImage::Format_ARGB32);
if (!image->isNull()) {
- if (TIFFReadRGBAImageOriented(tiff, width, height, reinterpret_cast<uint32 *>(image->bits()), ORIENTATION_TOPLEFT, 0)) {
+ const int stopOnError = 1;
+ if (TIFFReadRGBAImageOriented(tiff, width, height, reinterpret_cast<uint32 *>(image->bits()), ORIENTATION_TOPLEFT, stopOnError)) {
for (uint32 y=0; y<height; ++y)
convert32BitOrder(image->scanLine(y), width);
} else {
@@ -262,6 +300,73 @@ bool QTiffHandler::read(QImage *image)
}
}
+ // rotate the image if the orientation is defined in the file
+ uint16 orientationTag;
+ if (TIFFGetField(tiff, TIFFTAG_ORIENTATION, &orientationTag)) {
+ if (image->format() == QImage::Format_ARGB32) {
+ // TIFFReadRGBAImageOriented() flip the image but does not rotate them
+ switch (orientationTag) {
+ case 5:
+ rotate_right_mirror_horizontal(image);
+ break;
+ case 6:
+ rotate_right_mirror_vertical(image);
+ break;
+ case 7:
+ rotate_right_mirror_horizontal(image);
+ break;
+ case 8:
+ rotate_right_mirror_vertical(image);
+ break;
+ }
+ } else {
+ switch (orientationTag) {
+ case 1: // default orientation
+ break;
+ case 2: // mirror horizontal
+ *image = image->mirrored(true, false);
+ break;
+ case 3: // mirror both
+ *image = image->mirrored(true, true);
+ break;
+ case 4: // mirror vertical
+ *image = image->mirrored(false, true);
+ break;
+ case 5: // rotate right mirror horizontal
+ {
+ QMatrix transformation;
+ transformation.rotate(90);
+ *image = image->transformed(transformation);
+ *image = image->mirrored(true, false);
+ break;
+ }
+ case 6: // rotate right
+ {
+ QMatrix transformation;
+ transformation.rotate(90);
+ *image = image->transformed(transformation);
+ break;
+ }
+ case 7: // rotate right, mirror vertical
+ {
+ QMatrix transformation;
+ transformation.rotate(90);
+ *image = image->transformed(transformation);
+ *image = image->mirrored(false, true);
+ break;
+ }
+ case 8: // rotate left
+ {
+ QMatrix transformation;
+ transformation.rotate(270);
+ *image = image->transformed(transformation);
+ break;
+ }
+ }
+ }
+ }
+
+
TIFFClose(tiff);
return true;
}
diff --git a/doc/src/classes/q3sqlfieldinfo.qdoc b/src/qt3support/sql/q3sqlfieldinfo.qdoc
index 6f6f359..6f6f359 100644
--- a/doc/src/classes/q3sqlfieldinfo.qdoc
+++ b/src/qt3support/sql/q3sqlfieldinfo.qdoc
diff --git a/doc/src/classes/q3sqlrecordinfo.qdoc b/src/qt3support/sql/q3sqlrecordinfo.qdoc
index ce60f6d..ce60f6d 100644
--- a/doc/src/classes/q3sqlrecordinfo.qdoc
+++ b/src/qt3support/sql/q3sqlrecordinfo.qdoc
diff --git a/doc/src/classes/q3asciicache.qdoc b/src/qt3support/tools/q3asciicache.qdoc
index b86113f..b86113f 100644
--- a/doc/src/classes/q3asciicache.qdoc
+++ b/src/qt3support/tools/q3asciicache.qdoc
diff --git a/doc/src/classes/q3asciidict.qdoc b/src/qt3support/tools/q3asciidict.qdoc
index 1262a37..1262a37 100644
--- a/doc/src/classes/q3asciidict.qdoc
+++ b/src/qt3support/tools/q3asciidict.qdoc
diff --git a/doc/src/classes/q3cache.qdoc b/src/qt3support/tools/q3cache.qdoc
index 20b777f..20b777f 100644
--- a/doc/src/classes/q3cache.qdoc
+++ b/src/qt3support/tools/q3cache.qdoc
diff --git a/doc/src/classes/q3dict.qdoc b/src/qt3support/tools/q3dict.qdoc
index 2234c2d..2234c2d 100644
--- a/doc/src/classes/q3dict.qdoc
+++ b/src/qt3support/tools/q3dict.qdoc
diff --git a/doc/src/classes/q3intcache.qdoc b/src/qt3support/tools/q3intcache.qdoc
index 770532e..770532e 100644
--- a/doc/src/classes/q3intcache.qdoc
+++ b/src/qt3support/tools/q3intcache.qdoc
diff --git a/doc/src/classes/q3intdict.qdoc b/src/qt3support/tools/q3intdict.qdoc
index 731050d..731050d 100644
--- a/doc/src/classes/q3intdict.qdoc
+++ b/src/qt3support/tools/q3intdict.qdoc
diff --git a/doc/src/classes/q3memarray.qdoc b/src/qt3support/tools/q3memarray.qdoc
index eb0648c..eb0648c 100644
--- a/doc/src/classes/q3memarray.qdoc
+++ b/src/qt3support/tools/q3memarray.qdoc
diff --git a/doc/src/classes/q3ptrdict.qdoc b/src/qt3support/tools/q3ptrdict.qdoc
index 531b085..531b085 100644
--- a/doc/src/classes/q3ptrdict.qdoc
+++ b/src/qt3support/tools/q3ptrdict.qdoc
diff --git a/doc/src/classes/q3ptrlist.qdoc b/src/qt3support/tools/q3ptrlist.qdoc
index b2b9c3f..b2b9c3f 100644
--- a/doc/src/classes/q3ptrlist.qdoc
+++ b/src/qt3support/tools/q3ptrlist.qdoc
diff --git a/doc/src/classes/q3ptrqueue.qdoc b/src/qt3support/tools/q3ptrqueue.qdoc
index c60193c..c60193c 100644
--- a/doc/src/classes/q3ptrqueue.qdoc
+++ b/src/qt3support/tools/q3ptrqueue.qdoc
diff --git a/doc/src/classes/q3ptrstack.qdoc b/src/qt3support/tools/q3ptrstack.qdoc
index 071fcd0..071fcd0 100644
--- a/doc/src/classes/q3ptrstack.qdoc
+++ b/src/qt3support/tools/q3ptrstack.qdoc
diff --git a/doc/src/classes/q3ptrvector.qdoc b/src/qt3support/tools/q3ptrvector.qdoc
index c734064..c734064 100644
--- a/doc/src/classes/q3ptrvector.qdoc
+++ b/src/qt3support/tools/q3ptrvector.qdoc
diff --git a/doc/src/classes/q3valuelist.qdoc b/src/qt3support/tools/q3valuelist.qdoc
index 062a9da..062a9da 100644
--- a/doc/src/classes/q3valuelist.qdoc
+++ b/src/qt3support/tools/q3valuelist.qdoc
diff --git a/doc/src/classes/q3valuestack.qdoc b/src/qt3support/tools/q3valuestack.qdoc
index bc44235..bc44235 100644
--- a/doc/src/classes/q3valuestack.qdoc
+++ b/src/qt3support/tools/q3valuestack.qdoc
diff --git a/doc/src/classes/q3valuevector.qdoc b/src/qt3support/tools/q3valuevector.qdoc
index 4ab8896..4ab8896 100644
--- a/doc/src/classes/q3valuevector.qdoc
+++ b/src/qt3support/tools/q3valuevector.qdoc
diff --git a/src/qt3support/widgets/q3popupmenu.cpp b/src/qt3support/widgets/q3popupmenu.cpp
index d2eaaa9..8912748 100644
--- a/src/qt3support/widgets/q3popupmenu.cpp
+++ b/src/qt3support/widgets/q3popupmenu.cpp
@@ -43,6 +43,43 @@
QT_BEGIN_NAMESPACE
/*!
+ \class Q3PopupMenu
+ \brief The Q3PopupMenu class is a thin compatibility wrapper around QMenu.
+ \compat
+
+ Use QMenu in new applications. Note that the menu's actions must
+ be \l {Q3Action}s.
+*/
+
+/*!
+ \fn Q3PopupMenu::Q3PopupMenu(QWidget *parent, const char *name)
+
+ Constructs a menu with the given \a parent and \a name.
+*/
+
+/*!
+ \fn int Q3PopupMenu::exec()
+
+ Pops up the menu and returns the ID of the action that was
+ selected.
+
+ \sa QMenu::exec()
+*/
+
+/*!
+ \fn int Q3PopupMenu::exec(const QPoint & pos, int indexAtPoint)
+
+ Pops up the menu at coordinate \a pos and returns the ID of the
+ action that was selected.
+
+ If \a indexAtPoint is specified, the menu will pop up with the
+ item at index \a indexAtPoint under the mouse cursor.
+
+ \sa QMenu::exec()
+*/
+
+
+/*!
\fn void Q3PopupMenu::setFrameRect(QRect)
\internal
*/
diff --git a/src/script/qscriptable.cpp b/src/script/qscriptable.cpp
index a84f839..97c0173 100644
--- a/src/script/qscriptable.cpp
+++ b/src/script/qscriptable.cpp
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
\brief The QScriptable class provides access to the Qt Script environment from Qt C++ member functions.
\ingroup script
- \mainclass
+
With QScriptEngine::newQObject(), you can expose the signals and
slots and properties of any QObject (or subclass) to script
diff --git a/src/script/qscriptclass.cpp b/src/script/qscriptclass.cpp
index 41e5649..1df57d0 100644
--- a/src/script/qscriptclass.cpp
+++ b/src/script/qscriptclass.cpp
@@ -69,7 +69,7 @@ QT_BEGIN_NAMESPACE
\brief The QScriptClass class provides an interface for defining custom behavior of (a class of) Qt Script objects.
\ingroup script
- \mainclass
+
The QScriptClass class defines an interface for handling various
aspects of interaction with the Qt Script objects associated with
diff --git a/src/script/qscriptcontext.cpp b/src/script/qscriptcontext.cpp
index fcaa960..aed69d3 100644
--- a/src/script/qscriptcontext.cpp
+++ b/src/script/qscriptcontext.cpp
@@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE
\brief The QScriptContext class represents a Qt Script function invocation.
\ingroup script
- \mainclass
+
A QScriptContext provides access to the `this' object and arguments
passed to a script function. You typically want to access this
diff --git a/src/script/qscriptcontextinfo.cpp b/src/script/qscriptcontextinfo.cpp
index 30b87ce..dd3dbab 100644
--- a/src/script/qscriptcontextinfo.cpp
+++ b/src/script/qscriptcontextinfo.cpp
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
\brief The QScriptContextInfo class provides additional information about a QScriptContext.
\ingroup script
- \mainclass
+
QScriptContextInfo is typically used for debugging purposes. It can
provide information about the code being executed, such as the type
diff --git a/src/script/qscriptengine.cpp b/src/script/qscriptengine.cpp
index cadad5e..59ce460 100644
--- a/src/script/qscriptengine.cpp
+++ b/src/script/qscriptengine.cpp
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
\brief The QScriptEngine class provides an environment for evaluating Qt Script code.
\ingroup script
- \mainclass
+
See the \l{QtScript} documentation for information about the Qt Script language,
and how to get started with scripting your C++ application.
@@ -1342,7 +1342,7 @@ QStringList QScriptEngine::importedExtensions() const
Additionally, the type of each element in the sequence should be suitable
for conversion to a QScriptValue.
- See \l{QtScript Module#Conversion Between QtScript and C++ Types}
+ See \l{Making Applications Scriptable#Conversion Between QtScript and C++ Types}
{Conversion Between QtScript and C++ Types} for more information about the
restrictions on types that can be used with QScriptValue.
@@ -1363,7 +1363,7 @@ QStringList QScriptEngine::importedExtensions() const
Additionally, the type of each element in the sequence must be suitable
for conversion to a C++ type from a QScriptValue.
- See \l{QtScript Module#Conversion Between QtScript and C++ Types}
+ See \l{Making Applications Scriptable#Conversion Between QtScript and C++ Types}
{Conversion Between QtScript and C++ Types} for more information about the
restrictions on types that can be used with QScriptValue.
@@ -1758,7 +1758,7 @@ QScriptValue QScriptEngine::objectById(qint64 id) const
\brief The QScriptSyntaxCheckResult class provides the result of a script syntax check.
\ingroup script
- \mainclass
+
QScriptSyntaxCheckResult is returned by QScriptEngine::checkSyntax() to
provide information about the syntactical (in)correctness of a script.
diff --git a/src/script/qscriptengineagent.cpp b/src/script/qscriptengineagent.cpp
index e71c97a..b4793ab 100644
--- a/src/script/qscriptengineagent.cpp
+++ b/src/script/qscriptengineagent.cpp
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
\brief The QScriptEngineAgent class provides an interface to report events pertaining to QScriptEngine execution.
\ingroup script
- \mainclass
+
The QScriptEngineAgent class is the basis of tools that monitor and/or control the execution of a
QScriptEngine, such as debuggers and profilers.
diff --git a/src/script/qscriptstring.cpp b/src/script/qscriptstring.cpp
index f8e1c82..7d8d4e9 100644
--- a/src/script/qscriptstring.cpp
+++ b/src/script/qscriptstring.cpp
@@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE
\brief The QScriptString class acts as a handle to "interned" strings in a QScriptEngine.
\ingroup script
- \mainclass
+
QScriptString can be used to achieve faster (repeated)
property getting/setting, and comparison of property names, of
diff --git a/src/script/qscriptvalue.cpp b/src/script/qscriptvalue.cpp
index da43fc2..b70afe5 100644
--- a/src/script/qscriptvalue.cpp
+++ b/src/script/qscriptvalue.cpp
@@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE
\brief The QScriptValue class acts as a container for the Qt Script data types.
\ingroup script
- \mainclass
+
QScriptValue supports the types defined in the \l{ECMA-262}
standard: The primitive types, which are Undefined, Null, Boolean,
diff --git a/src/script/qscriptvalueiterator.cpp b/src/script/qscriptvalueiterator.cpp
index 8bc668f..885f9c9 100644
--- a/src/script/qscriptvalueiterator.cpp
+++ b/src/script/qscriptvalueiterator.cpp
@@ -60,7 +60,7 @@ QT_BEGIN_NAMESPACE
\brief The QScriptValueIterator class provides a Java-style iterator for QScriptValue.
\ingroup script
- \mainclass
+
The QScriptValueIterator constructor takes a QScriptValue as
argument. After construction, the iterator is located at the very
diff --git a/src/scripttools/debugging/qscriptdebugger.cpp b/src/scripttools/debugging/qscriptdebugger.cpp
index 1ce9ab6..40f4d6c 100644
--- a/src/scripttools/debugging/qscriptdebugger.cpp
+++ b/src/scripttools/debugging/qscriptdebugger.cpp
@@ -136,8 +136,8 @@ static bool scriptDebuggerEventCallback(void **data)
\brief The QScriptDebugger class provides a Qt Script debugger.
- \ingroup scripttools
- \mainclass
+ \ingroup script
+
*/
class QScriptDebuggerPrivate
diff --git a/src/scripttools/debugging/qscriptenginedebugger.cpp b/src/scripttools/debugging/qscriptenginedebugger.cpp
index b8ed4ea..0588109 100644
--- a/src/scripttools/debugging/qscriptenginedebugger.cpp
+++ b/src/scripttools/debugging/qscriptenginedebugger.cpp
@@ -75,8 +75,8 @@ public:
\brief The QScriptEngineDebugger class provides a QScriptEngine debugger.
- \ingroup scripttools
- \mainclass
+ \ingroup script
+
The QScriptEngineDebugger class provides a debugger that can be
embedded into Qt applications that use Qt Script. The debugger
diff --git a/doc/src/qsql.qdoc b/src/sql/kernel/qsql.qdoc
index 601a629..8e6e321 100644
--- a/doc/src/qsql.qdoc
+++ b/src/sql/kernel/qsql.qdoc
@@ -47,7 +47,7 @@
\inheaderfile QtSql
\ingroup database
- \mainclass
+
\sa {QtSql Module}
*/
diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp
index e94c247..d155c03 100644
--- a/src/sql/kernel/qsqldatabase.cpp
+++ b/src/sql/kernel/qsqldatabase.cpp
@@ -363,7 +363,7 @@ void QSqlDatabasePrivate::disable()
a database.
\ingroup database
- \mainclass
+
\inmodule QtSql
The QSqlDatabase class provides an interface for accessing a
diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp
index 48ada28..e3944ac 100644
--- a/src/sql/kernel/qsqlquery.cpp
+++ b/src/sql/kernel/qsqlquery.cpp
@@ -101,7 +101,7 @@ QSqlQueryPrivate::~QSqlQueryPrivate()
\ingroup database
\ingroup shared
- \mainclass
+
\inmodule QtSql
QSqlQuery encapsulates the functionality involved in creating,
diff --git a/src/svg/qgraphicssvgitem.cpp b/src/svg/qgraphicssvgitem.cpp
index 3a01a41..a287baa 100644
--- a/src/svg/qgraphicssvgitem.cpp
+++ b/src/svg/qgraphicssvgitem.cpp
@@ -99,7 +99,6 @@ public:
/*!
\class QGraphicsSvgItem
- \ingroup multimedia
\ingroup graphicsview-api
\brief The QGraphicsSvgItem class is a QGraphicsItem that can be used to render
the contents of SVG files.
diff --git a/src/svg/qsvggenerator.cpp b/src/svg/qsvggenerator.cpp
index 3d9c444..ace4cb8 100644
--- a/src/svg/qsvggenerator.cpp
+++ b/src/svg/qsvggenerator.cpp
@@ -511,7 +511,7 @@ public:
/*!
\class QSvgGenerator
- \ingroup multimedia
+ \ingroup painting
\since 4.3
\brief The QSvgGenerator class provides a paint device that is used to create SVG drawings.
\reentrant
diff --git a/src/svg/qsvgrenderer.cpp b/src/svg/qsvgrenderer.cpp
index bb1f946..573b4a4 100644
--- a/src/svg/qsvgrenderer.cpp
+++ b/src/svg/qsvgrenderer.cpp
@@ -55,7 +55,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QSvgRenderer
- \ingroup multimedia
+ \ingroup painting
\brief The QSvgRenderer class is used to draw the contents of SVG files onto paint devices.
\since 4.1
diff --git a/src/svg/qsvgstyle.cpp b/src/svg/qsvgstyle.cpp
index 820f716..1ecf870 100644
--- a/src/svg/qsvgstyle.cpp
+++ b/src/svg/qsvgstyle.cpp
@@ -90,6 +90,7 @@ QSvgFillStyle::QSvgFillStyle(const QBrush &brush)
, m_fillRule(Qt::WindingFill)
, m_fillOpacitySet(false)
, m_fillOpacity(1.0)
+ , m_oldOpacity(0)
, m_gradientResolved(true)
, m_fillSet(true)
{
@@ -101,6 +102,7 @@ QSvgFillStyle::QSvgFillStyle(QSvgStyleProperty *style)
, m_fillRule(Qt::WindingFill)
, m_fillOpacitySet(false)
, m_fillOpacity(1.0)
+ , m_oldOpacity(0)
, m_gradientResolved(true)
, m_fillSet(style != 0)
{
@@ -858,7 +860,7 @@ QSvgStyleProperty::Type QSvgAnimateColor::type() const
}
QSvgOpacityStyle::QSvgOpacityStyle(qreal opacity)
- : m_opacity(opacity)
+ : m_opacity(opacity), m_oldOpacity(0)
{
}
diff --git a/src/svg/qsvgtinydocument.cpp b/src/svg/qsvgtinydocument.cpp
index 5ab2608..614494f 100644
--- a/src/svg/qsvgtinydocument.cpp
+++ b/src/svg/qsvgtinydocument.cpp
@@ -61,10 +61,12 @@
QT_BEGIN_NAMESPACE
QSvgTinyDocument::QSvgTinyDocument()
- : QSvgStructureNode(0),
- m_animated(false),
- m_animationDuration(0),
- m_fps(30)
+ : QSvgStructureNode(0)
+ , m_widthPercent(false)
+ , m_heightPercent(false)
+ , m_animated(false)
+ , m_animationDuration(0)
+ , m_fps(30)
{
}
diff --git a/src/svg/qsvgwidget.cpp b/src/svg/qsvgwidget.cpp
index f8e672a..b7b0ab0 100644
--- a/src/svg/qsvgwidget.cpp
+++ b/src/svg/qsvgwidget.cpp
@@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QSvgWidget
- \ingroup multimedia
+ \ingroup painting
\brief The QSvgWidget class provides a widget that is used to display the contents of
Scalable Vector Graphics (SVG) files.
diff --git a/doc/src/classes/qsignalspy.qdoc b/src/testlib/qsignalspy.qdoc
index 02cb771..02cb771 100644
--- a/doc/src/classes/qsignalspy.qdoc
+++ b/src/testlib/qsignalspy.qdoc
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index a144923..15c49e1 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -808,12 +808,12 @@ namespace QTest
{
static QObject *currentTestObject = 0;
- struct TestFunction {
+ static struct TestFunction {
TestFunction():function(0), data(0) {}
~TestFunction() { delete [] data; }
int function;
char *data;
- } testFuncs[512];
+ } *testFuncs;
/**
* Contains the count of test functions that was supplied
@@ -1120,6 +1120,11 @@ static void qParseArgs(int argc, char *argv[])
exit(1);
}
++QTest::lastTestFuncIdx;
+ if (!QTest::testFuncs) {
+ struct Cleanup { ~Cleanup() { delete[] QTest::testFuncs; } };
+ static Cleanup cleanup;
+ QTest::testFuncs = new TestFunction[512];
+ }
QTest::testFuncs[QTest::lastTestFuncIdx].function = idx;
QTest::testFuncs[QTest::lastTestFuncIdx].data = data;
QTEST_ASSERT(QTest::lastTestFuncIdx < 512);
diff --git a/src/testlib/qtestevent.h b/src/testlib/qtestevent.h
index a8376ee..dfbba33 100644
--- a/src/testlib/qtestevent.h
+++ b/src/testlib/qtestevent.h
@@ -71,6 +71,7 @@ public:
virtual ~QTestEvent() {}
};
+#ifdef QT_GUI_LIB
class QTestKeyEvent: public QTestEvent
{
public:
@@ -135,6 +136,8 @@ private:
QPoint _pos;
int _delay;
};
+#endif //QT_GUI_LIB
+
class QTestDelayEvent: public QTestEvent
{
@@ -159,6 +162,7 @@ public:
inline void clear()
{ qDeleteAll(*this); QList<QTestEvent *>::clear(); }
+#ifdef QT_GUI_LIB
inline void addKeyClick(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
{ addKeyEvent(QTest::Click, qtKey, modifiers, msecs); }
inline void addKeyPress(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
@@ -194,6 +198,7 @@ public:
{ append(new QTestMouseEvent(QTest::MouseDClick, button, stateKey, pos, delay)); }
inline void addMouseMove(QPoint pos = QPoint(), int delay=-1)
{ append(new QTestMouseEvent(QTest::MouseMove, Qt::NoButton, 0, pos, delay)); }
+#endif //QT_GUI_LIB
inline void addDelay(int msecs)
{ append(new QTestDelayEvent(msecs)); }
diff --git a/doc/src/classes/qtestevent.qdoc b/src/testlib/qtestevent.qdoc
index 7c67d95..7c67d95 100644
--- a/doc/src/classes/qtestevent.qdoc
+++ b/src/testlib/qtestevent.qdoc
diff --git a/src/testlib/qtestkeyboard.h b/src/testlib/qtestkeyboard.h
index 2e475b2..af81075 100644
--- a/src/testlib/qtestkeyboard.h
+++ b/src/testlib/qtestkeyboard.h
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#ifndef QTESTKEYBOARD_H
+#if !defined(QTESTKEYBOARD_H) && defined(QT_GUI_LIB)
#define QTESTKEYBOARD_H
#if 0
diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h
index 2825c58..7ea927c 100644
--- a/src/testlib/qtestmouse.h
+++ b/src/testlib/qtestmouse.h
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#ifndef QTESTMOUSE_H
+#if !defined(QTESTMOUSE_H) && defined(QT_GUI_LIB)
#define QTESTMOUSE_H
#if 0
diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index 396e9ae..1f81a6c 100644
--- a/src/tools/bootstrap/bootstrap.pro
+++ b/src/tools/bootstrap/bootstrap.pro
@@ -69,7 +69,7 @@ SOURCES += \
../../corelib/tools/qbytearraymatcher.cpp \
../../corelib/tools/qdatetime.cpp \
../../corelib/tools/qhash.cpp \
- ../../corelib/tools/qlistdata.cpp \
+ ../../corelib/tools/qlist.cpp \
../../corelib/tools/qlocale.cpp \
../../corelib/tools/qmap.cpp \
../../corelib/tools/qregexp.cpp \
diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp
index 85a31c7..f079851 100644
--- a/src/xml/dom/qdom.cpp
+++ b/src/xml/dom/qdom.cpp
@@ -1938,7 +1938,7 @@ void QDomNodePrivate::setLocation(int lineNumber, int columnNumber)
\inmodule QtXml
\ingroup xml-tools
- \mainclass
+
Many functions in the DOM return a QDomNode.
@@ -6522,7 +6522,7 @@ void QDomDocumentPrivate::saveDocument(QTextStream& s, const int indent, QDomNod
\brief The QDomDocument class represents an XML document.
\inmodule QtXml
- \mainclass
+
\ingroup xml-tools
The QDomDocument class represents the entire XML document.
diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp
index 0f17231..b8af8d1 100644
--- a/src/xml/sax/qxml.cpp
+++ b/src/xml/sax/qxml.cpp
@@ -2986,7 +2986,7 @@ void QXmlSimpleReaderPrivate::initIncrementalParsing()
\inmodule QtXml
\ingroup xml-tools
- \mainclass
+
This XML reader is suitable for a wide range of applications. It
is able to parse well-formed XML and can report the namespaces of
diff --git a/src/xmlpatterns/api/qabstractxmlnodemodel.cpp b/src/xmlpatterns/api/qabstractxmlnodemodel.cpp
index 307174e..489774e 100644
--- a/src/xmlpatterns/api/qabstractxmlnodemodel.cpp
+++ b/src/xmlpatterns/api/qabstractxmlnodemodel.cpp
@@ -190,8 +190,7 @@ bool QAbstractXmlNodeModel::isIgnorableInDeepEqual(const QXmlNodeModelIndex &n)
Because the node model can be accessed concurrently by threads in
the QtXmlPatterns module, subclasses of QAbstractXmlNodeModel must
- be written to be \l{Thread Support in Qt#Reentrancy and Thread-Safety}
- {thread-safe}.
+ be written to be \l{Reentrancy and Thread-Safety}{thread-safe}.
Classes that simplify implementing thread-safety include QReadLocker
and QWriteLocker.
diff --git a/src/xmlpatterns/api/qxmlquery.cpp b/src/xmlpatterns/api/qxmlquery.cpp
index b5b5244..9f9b136 100644
--- a/src/xmlpatterns/api/qxmlquery.cpp
+++ b/src/xmlpatterns/api/qxmlquery.cpp
@@ -151,7 +151,7 @@ QT_BEGIN_NAMESPACE
\endcode
\note For the current release, XSLT support should be considered
- experimental. See section \l{QtXmlPatterns Module#XSLT
+ experimental. See section \l{Using XML technologies#XSLT
2.0}{XSLT conformance} for details.
Stylesheet parameters are bound using bindVariable().
@@ -291,7 +291,7 @@ QXmlQuery::QXmlQuery(const QXmlNamePool &np) : d(new QXmlQueryPrivate(np))
create instances of QXmlQuery for running XQueries.
\note The XSL-T support in this release is considered experimental.
- See the \l{QtXmlPatterns Module#XSLT 2.0}{XSLT conformance} for
+ See the \l{Using XML technologies#XSLT 2.0}{XSLT conformance} for
details.
\since 4.5
diff --git a/src/xmlpatterns/utils/qautoptr.cpp b/src/xmlpatterns/utils/qautoptr.cpp
index 619423b..5ab691d 100644
--- a/src/xmlpatterns/utils/qautoptr.cpp
+++ b/src/xmlpatterns/utils/qautoptr.cpp
@@ -44,7 +44,5 @@
\brief A smart pointer very similar to std::auto_ptr.
\internal
\since 4.4
- \ingroup misc
-
*/
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index c78c3ba..c36594e 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -11,8 +11,6 @@ SUBDIRS += \
compilerwarnings \
exceptionsafety \
linguist \
- macgui \
- macplist \
mediaobject \
# mediaobject_wince_ds9 \ This is Windows CE only (we test the second phonon backend ds9 here)
moc \
@@ -74,7 +72,6 @@ SUBDIRS += \
qabstractspinbox \
qabstracttextdocumentlayout \
qaccessibility \
- qaccessibility_mac \
qaction \
qactiongroup \
qalgorithms \
@@ -97,7 +94,6 @@ SUBDIRS += \
qcombobox \
qcompleter \
qcomplextext \
- qcopchannel \
qcoreapplication \
qcryptographichash \
qcssparser \
@@ -113,7 +109,6 @@ SUBDIRS += \
qdialog \
qdialogbuttonbox \
qdir \
- qdirectpainter \
qdirmodel \
qdockwidget \
qdom \
@@ -201,6 +196,7 @@ SUBDIRS += \
qmainwindow \
qmake \
qmap \
+ qmatrixnxn \
qmdiarea \
qmdisubwindow \
qmenu \
@@ -211,7 +207,6 @@ SUBDIRS += \
qmouseevent \
qmouseevent_modal \
qmovie \
- qmultiscreen \
qmutex \
qmutexlocker \
qnativesocketengine \
@@ -248,6 +243,7 @@ SUBDIRS += \
qprogressdialog \
qpropertyanimation \
qpushbutton \
+ qquaternion \
qqueue \
qradiobutton \
qreadlocker \
@@ -351,7 +347,6 @@ SUBDIRS += \
qtextlayout \
qtextlist \
qtextobject \
- qtextpiecetable \
qtextscriptengine \
qtextstream \
qtexttable \
@@ -381,6 +376,7 @@ SUBDIRS += \
qvariant \
qvarlengtharray \
qvector \
+ qvectornd \
qwaitcondition \
qwidget \
qwidgetaction \
@@ -406,6 +402,19 @@ SUBDIRS += \
utf8
contains(QT_CONFIG, OdfWriter):SUBDIRS += qzip qtextodfwriter
+mac: {
+ SUBDIRS += macgui \
+ macplist \
+ qaccessibility_mac
+}
+embedded: {
+ SUBDIRS += qcopchannel \
+ qdirectpainter \
+ qmultiscreen
+}
+!win32: {
+ SUBDIRS += qtextpiecetable
+}
# Enable the tests specific to QtXmlPatterns. If you add a test, remember to
# update runQtXmlPatternsTests.sh too. Remember that this file, auto.pro, is
@@ -472,5 +481,3 @@ contains(QT_CONFIG, webkit): SUBDIRS += \
qwebhistoryinterface \
qwebelement \
qwebhistory
-
-SUBDIRS += math3d
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/finddialog.cpp b/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/finddialog.cpp
index 7958055..7215ebe 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/finddialog.cpp
+++ b/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/finddialog.cpp
@@ -1,44 +1,3 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the autotests 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$
-**
-****************************************************************************/
-
#include "finddialog.h"
#include "mainwindow.h"
#include "tabbedbrowser.h"
@@ -51,83 +10,18 @@
#include <QDateTime>
#include <QGridLayout>
-CaseSensitiveModel::CaseSensitiveModel(int rows, int columns, QObject *parent)
- : QStandardItemModel(rows, columns, parent)
-{}
-QModelIndexList CaseSensitiveModel::match(const QModelIndex &start, int role, const QVariant &value,
- int hits, Qt::MatchFlags flags) const
-{
- if (flags == Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap))
- flags |= Qt::MatchCaseSensitive;
-
- return QStandardItemModel::match(start, role, value, hits, flags);
-}
-
FindDialog::FindDialog(MainWindow *parent)
: QDialog(parent)
{
- contentsWidget = new QWidget(this);
- ui.setupUi(contentsWidget);
- ui.comboFind->setModel(new CaseSensitiveModel(0, 1, ui.comboFind));
-
- QVBoxLayout *l = new QVBoxLayout(this);
- l->setMargin(0);
- l->setSpacing(0);
- l->addWidget(contentsWidget);
-
- lastBrowser = 0;
- onceFound = false;
- findExpr.clear();
-
sb = new QStatusBar(this);
l->addWidget(sb);
sb->showMessage(tr("Enter the text you want to find."));
- connect(ui.findButton, SIGNAL(clicked()), this, SLOT(findButtonClicked()));
- connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(reject()));
-}
-
-FindDialog::~FindDialog()
-{
-}
-
-void FindDialog::findButtonClicked()
-{
- doFind(ui.radioForward->isChecked());
}
void FindDialog::doFind(bool forward)
{
- QTextBrowser *browser = static_cast<QTextBrowser*>(mainWindow()->browsers()->currentBrowser());
- sb->clearMessage();
-
- if (ui.comboFind->currentText() != findExpr || lastBrowser != browser)
- onceFound = false;
- findExpr = ui.comboFind->currentText();
-
- QTextDocument::FindFlags flags = 0;
-
- if (ui.checkCase->isChecked())
- flags |= QTextDocument::FindCaseSensitively;
-
- if (ui.checkWords->isChecked())
- flags |= QTextDocument::FindWholeWords;
-
- QTextCursor c = browser->textCursor();
- if (!c.hasSelection()) {
- if (forward)
- c.movePosition(QTextCursor::Start);
- else
- c.movePosition(QTextCursor::End);
-
- browser->setTextCursor(c);
- }
-
- QTextDocument::FindFlags options;
- if (forward == false)
- flags |= QTextDocument::FindBackward;
-
QTextCursor found = browser->document()->find(findExpr, c, flags);
if (found.isNull()) {
if (onceFound) {
@@ -141,8 +35,6 @@ void FindDialog::doFind(bool forward)
} else {
browser->setTextCursor(found);
}
- onceFound |= !found.isNull();
- lastBrowser = browser;
}
bool FindDialog::hasFindExpression() const
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.ts.result
index 21d1ca0..de2c45a 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.ts.result
@@ -4,22 +4,22 @@
<context>
<name>FindDialog</name>
<message>
- <location filename="finddialog.cpp" line="57"/>
+ <location filename="finddialog.cpp" line="19"/>
<source>Enter the text you want to find.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="107"/>
+ <location filename="finddialog.cpp" line="29"/>
<source>Search reached end of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="109"/>
+ <location filename="finddialog.cpp" line="31"/>
<source>Search reached start of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="111"/>
+ <location filename="finddialog.cpp" line="33"/>
<source>Text not found</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/finddialog.cpp b/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/finddialog.cpp
index 045fab1..756c9a3 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/finddialog.cpp
+++ b/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/finddialog.cpp
@@ -1,44 +1,3 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the autotests 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$
-**
-****************************************************************************/
-
#include "finddialog.h"
#include "mainwindow.h"
#include "tabbedbrowser.h"
@@ -51,86 +10,17 @@
#include <QDateTime>
#include <QGridLayout>
-CaseSensitiveModel::CaseSensitiveModel(int rows, int columns, QObject *parent)
- : QStandardItemModel(rows, columns, parent)
-{}
-QModelIndexList CaseSensitiveModel::match(const QModelIndex &start, int role, const QVariant &value,
- int hits, Qt::MatchFlags flags) const
-{
- if (flags == Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap))
- flags |= Qt::MatchCaseSensitive;
-
- return QStandardItemModel::match(start, role, value, hits, flags);
-}
-
FindDialog::FindDialog(MainWindow *parent)
: QDialog(parent)
{
- contentsWidget = new QWidget(this);
- ui.setupUi(contentsWidget);
- ui.comboFind->setModel(new CaseSensitiveModel(0, 1, ui.comboFind));
-
- QVBoxLayout *l = new QVBoxLayout(this);
- l->setMargin(0);
- l->setSpacing(0);
- l->addWidget(contentsWidget);
-
- lastBrowser = 0;
- onceFound = false;
- findExpr.clear();
-
- sb = new QStatusBar(this);
- l->addWidget(sb);
-
-
// Move it to another line and change the text,
// then lupdate should add this one as a new one, and mark the old one as obsolete.
sb->showMessage(tr("Enter the text you want to find."));
- connect(ui.findButton, SIGNAL(clicked()), this, SLOT(findButtonClicked()));
- connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(reject()));
-}
-
-FindDialog::~FindDialog()
-{
-}
-
-void FindDialog::findButtonClicked()
-{
- doFind(ui.radioForward->isChecked());
}
void FindDialog::doFind(bool forward)
{
- QTextBrowser *browser = static_cast<QTextBrowser*>(mainWindow()->browsers()->currentBrowser());
- sb->clearMessage();
-
- if (ui.comboFind->currentText() != findExpr || lastBrowser != browser)
- onceFound = false;
- findExpr = ui.comboFind->currentText();
-
- QTextDocument::FindFlags flags = 0;
-
- if (ui.checkCase->isChecked())
- flags |= QTextDocument::FindCaseSensitively;
-
- if (ui.checkWords->isChecked())
- flags |= QTextDocument::FindWholeWords;
-
- QTextCursor c = browser->textCursor();
- if (!c.hasSelection()) {
- if (forward)
- c.movePosition(QTextCursor::Start);
- else
- c.movePosition(QTextCursor::End);
-
- browser->setTextCursor(c);
- }
-
- QTextDocument::FindFlags options;
- if (forward == false)
- flags |= QTextDocument::FindBackward;
-
QTextCursor found = browser->document()->find(findExpr, c, flags);
if (found.isNull()) {
if (onceFound) {
@@ -144,31 +34,4 @@ void FindDialog::doFind(bool forward)
} else {
browser->setTextCursor(found);
}
- onceFound |= !found.isNull();
- lastBrowser = browser;
-}
-
-bool FindDialog::hasFindExpression() const
-{
- return !findExpr.isEmpty();
-}
-
-void FindDialog::statusMessage(const QString &message)
-{
- if (isVisible())
- sb->showMessage(message);
- else
- static_cast<MainWindow*>(parent())->statusBar()->showMessage(message, 2000);
-}
-
-MainWindow *FindDialog::mainWindow() const
-{
- return static_cast<MainWindow*>(parentWidget());
-}
-
-void FindDialog::reset()
-{
- ui.comboFind->setFocus();
- ui.comboFind->lineEdit()->setSelection(
- 0, ui.comboFind->lineEdit()->text().length());
}
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.ts.result
index b7074fe..4012182 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.ts.result
@@ -8,22 +8,22 @@
<translation type="obsolete">Skriv inn teksten du soker etter</translation>
</message>
<message>
- <location filename="finddialog.cpp" line="60"/>
+ <location filename="finddialog.cpp" line="18"/>
<source>Enter the text you want to find.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="110"/>
+ <location filename="finddialog.cpp" line="28"/>
<source>Search reached end of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="112"/>
+ <location filename="finddialog.cpp" line="30"/>
<source>Search reached start of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="114"/>
+ <location filename="finddialog.cpp" line="32"/>
<source>Text not found</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.before b/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.before
index 076520a..1ad6ec8 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.before
+++ b/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.before
@@ -3,18 +3,18 @@
<context>
<name>FindDialog</name>
<message>
- <location filename="project.ui" line="27"/>
+ <location filename="project.ui" line="15"/>
<source>Qt Assistant - Find text</source>
<!--should be changed to unfinished, since we are changing the sourcetext in the UI file-->
<translation>Qt Assistant - Finn tekst</translation>
</message>
<message>
- <location filename="project.ui" line="30"/>
+ <location filename="project.ui" line="18"/>
<source>300px</source>
<translation>300px</translation>
</message>
<message>
- <location filename="project.ui" line="33"/>
+ <location filename="project.ui" line="21"/>
<source>400px</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.result
index b21f583..4c5f74d 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.result
@@ -4,18 +4,18 @@
<context>
<name>FindDialog</name>
<message>
- <location filename="project.ui" line="27"/>
+ <location filename="project.ui" line="15"/>
<source>Qt Assistant - Find Text</source>
<oldsource>Qt Assistant - Find text</oldsource>
<translation type="unfinished">Qt Assistant - Finn tekst</translation>
</message>
<message>
- <location filename="project.ui" line="30"/>
+ <location filename="project.ui" line="18"/>
<source>300px</source>
<translation>300px</translation>
</message>
<message>
- <location filename="project.ui" line="33"/>
+ <location filename="project.ui" line="21"/>
<source>401 pixels</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ui b/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ui
index 2a0bb70..d332eeb 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ui
+++ b/tests/auto/linguist/lupdate/testdata/good/mergeui/project.ui
@@ -1,45 +1,5 @@
<ui version="4.0" >
<author></author>
- <comment>*********************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the autotests 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$
-**
-*********************************************************************</comment>
<exportmacro></exportmacro>
<class>FindDialog</class>
<widget class="QWidget" name="FindDialog" >
diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result
index 97d3bce..8c48245 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result
@@ -79,27 +79,27 @@ backslashed \ stuff.</source>
<context>
<name>FindDialog</name>
<message>
- <location filename="finddialog.cpp" line="57"/>
+ <location filename="finddialog.cpp" line="85"/>
<source>Enter the text you are looking for.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="107"/>
+ <location filename="finddialog.cpp" line="135"/>
<source>Search reached end of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="109"/>
+ <location filename="finddialog.cpp" line="137"/>
<source>Search reached start of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="111"/>
+ <location filename="finddialog.cpp" line="139"/>
<source>Text not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="147"/>
+ <location filename="finddialog.cpp" line="175"/>
<source>null comment</source>
<translation type="unfinished"></translation>
</message>
@@ -107,7 +107,7 @@ backslashed \ stuff.</source>
<context>
<name>KÃ¥ntekst</name>
<message utf8="true">
- <location filename="finddialog.cpp" line="152"/>
+ <location filename="finddialog.cpp" line="180"/>
<source>encoding, using QApplication</source>
<translation type="unfinished"></translation>
</message>
@@ -151,28 +151,28 @@ backslashed \ stuff.</source>
<context>
<name>QCoreApplication</name>
<message>
- <location filename="finddialog.cpp" line="144"/>
+ <location filename="finddialog.cpp" line="172"/>
<source>with comment</source>
<comment>comment</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="145"/>
+ <location filename="finddialog.cpp" line="173"/>
<source>empty comment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="146"/>
+ <location filename="finddialog.cpp" line="174"/>
<source>null comment</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="149"/>
+ <location filename="finddialog.cpp" line="177"/>
<source>encoding, using QCoreApplication</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="finddialog.cpp" line="150"/>
+ <location filename="finddialog.cpp" line="178"/>
<source>encoding, using QApplication</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tests/auto/linguist/lupdate/testdata/good/parseui/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/parseui/project.ts.result
index ddf58c3..7f665f4 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parseui/project.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/good/parseui/project.ts.result
@@ -4,12 +4,12 @@
<context>
<name>FindDialog</name>
<message>
- <location filename="project.ui" line="27"/>
+ <location filename="project.ui" line="15"/>
<source>Qt Assistant - Finn text</source>
<translation type="unfinished"></translation>
</message>
<message utf8="true">
- <location filename="project.ui" line="30"/>
+ <location filename="project.ui" line="18"/>
<source>Finn tekst - Der Bjørn möchte auch mal.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tests/auto/linguist/lupdate/testdata/good/parseui/project.ui b/tests/auto/linguist/lupdate/testdata/good/parseui/project.ui
index 9beb8d5..65a00c7 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parseui/project.ui
+++ b/tests/auto/linguist/lupdate/testdata/good/parseui/project.ui
@@ -1,45 +1,5 @@
<ui version="4.0" >
<author></author>
- <comment>*********************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the autotests 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$
-**
-*********************************************************************</comment>
<exportmacro></exportmacro>
<class>FindDialog</class>
<widget class="QWidget" name="FindDialog" >
diff --git a/tests/auto/linguist/lupdate/testdata/recursivescan/bar.ts.result b/tests/auto/linguist/lupdate/testdata/recursivescan/bar.ts.result
index e132342..f6415bf 100644
--- a/tests/auto/linguist/lupdate/testdata/recursivescan/bar.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/recursivescan/bar.ts.result
@@ -4,22 +4,22 @@
<context>
<name>FindDialog</name>
<message>
- <location filename="sub/finddialog.cpp" line="57"/>
+ <location filename="sub/finddialog.cpp" line="16"/>
<source>Enter the text you want to find.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sub/finddialog.cpp" line="107"/>
+ <location filename="sub/finddialog.cpp" line="25"/>
<source>Search reached end of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sub/finddialog.cpp" line="109"/>
+ <location filename="sub/finddialog.cpp" line="27"/>
<source>Search reached start of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sub/finddialog.cpp" line="111"/>
+ <location filename="sub/finddialog.cpp" line="29"/>
<source>Text not found</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tests/auto/linguist/lupdate/testdata/recursivescan/foo.ts.result b/tests/auto/linguist/lupdate/testdata/recursivescan/foo.ts.result
index 6646014..581e4b6 100644
--- a/tests/auto/linguist/lupdate/testdata/recursivescan/foo.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/recursivescan/foo.ts.result
@@ -4,32 +4,32 @@
<context>
<name>FindDialog</name>
<message>
- <location filename="project.ui" line="27"/>
+ <location filename="project.ui" line="15"/>
<source>Qt Assistant - Finn text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="project.ui" line="30"/>
+ <location filename="project.ui" line="18"/>
<source>Finn tekst</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sub/finddialog.cpp" line="57"/>
+ <location filename="sub/finddialog.cpp" line="16"/>
<source>Enter the text you want to find.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sub/finddialog.cpp" line="107"/>
+ <location filename="sub/finddialog.cpp" line="25"/>
<source>Search reached end of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sub/finddialog.cpp" line="109"/>
+ <location filename="sub/finddialog.cpp" line="27"/>
<source>Search reached start of the document</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sub/finddialog.cpp" line="111"/>
+ <location filename="sub/finddialog.cpp" line="29"/>
<source>Text not found</source>
<translation type="unfinished"></translation>
</message>
diff --git a/tests/auto/linguist/lupdate/testdata/recursivescan/project.ui b/tests/auto/linguist/lupdate/testdata/recursivescan/project.ui
index 97553db..8dea10b 100644
--- a/tests/auto/linguist/lupdate/testdata/recursivescan/project.ui
+++ b/tests/auto/linguist/lupdate/testdata/recursivescan/project.ui
@@ -1,45 +1,5 @@
<ui version="4.0" >
<author></author>
- <comment>*********************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the autotests 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$
-**
-*********************************************************************</comment>
<exportmacro></exportmacro>
<class>FindDialog</class>
<widget class="QWidget" name="FindDialog" >
diff --git a/tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp b/tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp
index 3800ee7..3875473 100644
--- a/tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp
+++ b/tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp
@@ -1,44 +1,3 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the autotests 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$
-**
-****************************************************************************/
-
#include "finddialog.h"
#include "mainwindow.h"
#include "tabbedbrowser.h"
@@ -51,83 +10,14 @@
#include <QDateTime>
#include <QGridLayout>
-CaseSensitiveModel::CaseSensitiveModel(int rows, int columns, QObject *parent)
- : QStandardItemModel(rows, columns, parent)
-{}
-QModelIndexList CaseSensitiveModel::match(const QModelIndex &start, int role, const QVariant &value,
- int hits, Qt::MatchFlags flags) const
-{
- if (flags == Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap))
- flags |= Qt::MatchCaseSensitive;
-
- return QStandardItemModel::match(start, role, value, hits, flags);
-}
-
FindDialog::FindDialog(MainWindow *parent)
: QDialog(parent)
{
- contentsWidget = new QWidget(this);
- ui.setupUi(contentsWidget);
- ui.comboFind->setModel(new CaseSensitiveModel(0, 1, ui.comboFind));
-
- QVBoxLayout *l = new QVBoxLayout(this);
- l->setMargin(0);
- l->setSpacing(0);
- l->addWidget(contentsWidget);
-
- lastBrowser = 0;
- onceFound = false;
- findExpr.clear();
-
- sb = new QStatusBar(this);
- l->addWidget(sb);
-
sb->showMessage(tr("Enter the text you want to find."));
-
- connect(ui.findButton, SIGNAL(clicked()), this, SLOT(findButtonClicked()));
- connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(reject()));
-}
-
-FindDialog::~FindDialog()
-{
-}
-
-void FindDialog::findButtonClicked()
-{
- doFind(ui.radioForward->isChecked());
}
void FindDialog::doFind(bool forward)
{
- QTextBrowser *browser = static_cast<QTextBrowser*>(mainWindow()->browsers()->currentBrowser());
- sb->clearMessage();
-
- if (ui.comboFind->currentText() != findExpr || lastBrowser != browser)
- onceFound = false;
- findExpr = ui.comboFind->currentText();
-
- QTextDocument::FindFlags flags = 0;
-
- if (ui.checkCase->isChecked())
- flags |= QTextDocument::FindCaseSensitively;
-
- if (ui.checkWords->isChecked())
- flags |= QTextDocument::FindWholeWords;
-
- QTextCursor c = browser->textCursor();
- if (!c.hasSelection()) {
- if (forward)
- c.movePosition(QTextCursor::Start);
- else
- c.movePosition(QTextCursor::End);
-
- browser->setTextCursor(c);
- }
-
- QTextDocument::FindFlags options;
- if (forward == false)
- flags |= QTextDocument::FindBackward;
-
QTextCursor found = browser->document()->find(findExpr, c, flags);
if (found.isNull()) {
if (onceFound) {
@@ -138,34 +28,5 @@ void FindDialog::doFind(bool forward)
} else {
statusMessage(tr( "Text not found" ));
}
- } else {
- browser->setTextCursor(found);
}
- onceFound |= !found.isNull();
- lastBrowser = browser;
-}
-
-bool FindDialog::hasFindExpression() const
-{
- return !findExpr.isEmpty();
-}
-
-void FindDialog::statusMessage(const QString &message)
-{
- if (isVisible())
- sb->showMessage(message);
- else
- static_cast<MainWindow*>(parent())->statusBar()->showMessage(message, 2000);
-}
-
-MainWindow *FindDialog::mainWindow() const
-{
- return static_cast<MainWindow*>(parentWidget());
-}
-
-void FindDialog::reset()
-{
- ui.comboFind->setFocus();
- ui.comboFind->lineEdit()->setSelection(
- 0, ui.comboFind->lineEdit()->text().length());
}
diff --git a/tests/auto/math3d/math3d.pro b/tests/auto/math3d/math3d.pro
deleted file mode 100644
index d6189ef..0000000
--- a/tests/auto/math3d/math3d.pro
+++ /dev/null
@@ -1,2 +0,0 @@
-TEMPLATE = subdirs
-SUBDIRS = qmatrixnxn qquaternion qvectornd
diff --git a/tests/auto/math3d/qmatrixnxn/qmatrixnxn.pro b/tests/auto/math3d/qmatrixnxn/qmatrixnxn.pro
deleted file mode 100644
index 40c6cc0..0000000
--- a/tests/auto/math3d/qmatrixnxn/qmatrixnxn.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-VPATH += ../shared
-INCLUDEPATH += ../shared
-HEADERS += math3dincludes.h
-SOURCES += tst_qmatrixnxn.cpp
diff --git a/tests/auto/math3d/qquaternion/qquaternion.pro b/tests/auto/math3d/qquaternion/qquaternion.pro
deleted file mode 100644
index eea84f0..0000000
--- a/tests/auto/math3d/qquaternion/qquaternion.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-VPATH += ../shared
-INCLUDEPATH += ../shared
-HEADERS += math3dincludes.h
-SOURCES += tst_qquaternion.cpp
diff --git a/tests/auto/math3d/qvectornd/qvectornd.pro b/tests/auto/math3d/qvectornd/qvectornd.pro
deleted file mode 100644
index 0981637..0000000
--- a/tests/auto/math3d/qvectornd/qvectornd.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-VPATH += ../shared
-INCLUDEPATH += ../shared
-HEADERS += math3dincludes.h
-SOURCES += tst_qvectornd.cpp
diff --git a/tests/auto/math3d/shared/math3dincludes.h b/tests/auto/math3d/shared/math3dincludes.h
deleted file mode 100644
index 243c5a5..0000000
--- a/tests/auto/math3d/shared/math3dincludes.h
+++ /dev/null
@@ -1,52 +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 test suite 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$
-**
-****************************************************************************/
-
-#ifndef MATH3DINCLUDES_H
-#define MATH3DINCLUDES_H
-
-#include <QtGui/qmatrix4x4.h>
-#include <QtGui/qgenericmatrix.h>
-#include <QtGui/qvector2d.h>
-#include <QtGui/qvector3d.h>
-#include <QtGui/qvector4d.h>
-#include <QtGui/qquaternion.h>
-
-#endif
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 88ea4b8..976f57d 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -284,6 +284,7 @@ private slots:
void subFocus();
void reverseCreateAutoFocusProxy();
void focusProxyDeletion();
+ void negativeZStacksBehindParent();
// task specific tests below me
void task141694_textItemEnsureVisible();
@@ -7682,5 +7683,30 @@ void tst_QGraphicsItem::focusProxyDeletion()
delete scene; // don't crash
}
+void tst_QGraphicsItem::negativeZStacksBehindParent()
+{
+ QGraphicsRectItem rect;
+ QCOMPARE(rect.zValue(), qreal(0.0));
+ QVERIFY(!(rect.flags() & QGraphicsItem::ItemNegativeZStacksBehindParent));
+ QVERIFY(!(rect.flags() & QGraphicsItem::ItemStacksBehindParent));
+ rect.setZValue(-1);
+ QCOMPARE(rect.zValue(), qreal(-1.0));
+ QVERIFY(!(rect.flags() & QGraphicsItem::ItemStacksBehindParent));
+ rect.setZValue(0);
+ rect.setFlag(QGraphicsItem::ItemNegativeZStacksBehindParent);
+ QVERIFY(rect.flags() & QGraphicsItem::ItemNegativeZStacksBehindParent);
+ QVERIFY(!(rect.flags() & QGraphicsItem::ItemStacksBehindParent));
+ rect.setZValue(-1);
+ QVERIFY(rect.flags() & QGraphicsItem::ItemStacksBehindParent);
+ rect.setZValue(0);
+ QVERIFY(!(rect.flags() & QGraphicsItem::ItemStacksBehindParent));
+ rect.setFlag(QGraphicsItem::ItemNegativeZStacksBehindParent, false);
+ rect.setZValue(-1);
+ rect.setFlag(QGraphicsItem::ItemNegativeZStacksBehindParent, true);
+ QVERIFY(rect.flags() & QGraphicsItem::ItemStacksBehindParent);
+ rect.setFlag(QGraphicsItem::ItemNegativeZStacksBehindParent, false);
+ QVERIFY(rect.flags() & QGraphicsItem::ItemStacksBehindParent);
+}
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index c12fb11..2506e70 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -3637,18 +3637,18 @@ void tst_QGraphicsView::task255529_transformationAnchorMouseAndViewportMargins()
VpGraphicsView view(&scene);
view.show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&view);
+#endif
QPoint mouseViewPos(20, 20);
sendMouseMove(view.viewport(), mouseViewPos);
- QTest::qWait(125);
QPointF mouseScenePos = view.mapToScene(mouseViewPos);
- view.setTransform(QTransform().scale(5, 5));
- QTest::qWait(125);
- view.setTransform(QTransform().rotate(5, Qt::ZAxis), true);
- QTest::qWait(125);
+ view.setTransform(QTransform().scale(5, 5).rotate(5, Qt::ZAxis), true);
QPointF newMouseScenePos = view.mapToScene(mouseViewPos);
- qreal slack = 3;
+
+ qreal slack = 1;
QVERIFY(qAbs(newMouseScenePos.x() - mouseScenePos.x()) < slack);
QVERIFY(qAbs(newMouseScenePos.y() - mouseScenePos.y()) < slack);
}
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff
new file mode 100644
index 0000000..3fcb8a9
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff
new file mode 100644
index 0000000..6f3e9d5
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff
new file mode 100644
index 0000000..aab9cf2
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff
new file mode 100644
index 0000000..aad96ff
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff
new file mode 100644
index 0000000..05d23dc
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff
new file mode 100644
index 0000000..9ffe7fc
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff
new file mode 100644
index 0000000..eeeb019
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff
new file mode 100644
index 0000000..87cf2fd
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_1.tiff b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_1.tiff
new file mode 100644
index 0000000..3b589b2
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_1.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_2.tiff b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_2.tiff
new file mode 100644
index 0000000..9a66223
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_2.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_3.tiff b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_3.tiff
new file mode 100644
index 0000000..eed2423
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_3.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_4.tiff b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_4.tiff
new file mode 100644
index 0000000..055480e
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_4.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_5.tiff b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_5.tiff
new file mode 100644
index 0000000..b4d0974
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_5.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_6.tiff b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_6.tiff
new file mode 100644
index 0000000..3b1e02a
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_6.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_7.tiff b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_7.tiff
new file mode 100644
index 0000000..b752c74
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_7.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_8.tiff b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_8.tiff
new file mode 100644
index 0000000..e228d05
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/mono_orientation_8.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/original_indexed.tiff b/tests/auto/qimagereader/images/tiff_oriented/original_indexed.tiff
new file mode 100644
index 0000000..7507e52
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/original_indexed.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/original_mono.tiff b/tests/auto/qimagereader/images/tiff_oriented/original_mono.tiff
new file mode 100644
index 0000000..8ff9db8
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/original_mono.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/original_rgb.tiff b/tests/auto/qimagereader/images/tiff_oriented/original_rgb.tiff
new file mode 100644
index 0000000..321ea3e
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/original_rgb.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff
new file mode 100644
index 0000000..2756a82
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff
new file mode 100644
index 0000000..ae9af09
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff
new file mode 100644
index 0000000..a2f4325
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff
new file mode 100644
index 0000000..f35bfc4
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff
new file mode 100644
index 0000000..70e5478
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff
new file mode 100644
index 0000000..b2635fe
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff
new file mode 100644
index 0000000..1fb0cd9
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff
new file mode 100644
index 0000000..666b1b4
--- /dev/null
+++ b/tests/auto/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff
Binary files differ
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
index dad771b..ba3d83e 100644
--- a/tests/auto/qimagereader/tst_qimagereader.cpp
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp
@@ -149,6 +149,9 @@ private slots:
void tiffCompression_data();
void tiffCompression();
void tiffEndianness();
+
+ void tiffOrientation_data();
+ void tiffOrientation();
#endif
void autoDetectImageFormat();
@@ -1308,6 +1311,48 @@ void tst_QImageReader::tiffEndianness()
QCOMPARE(littleEndian, bigEndian);
}
+void tst_QImageReader::tiffOrientation_data()
+{
+ QTest::addColumn<QString>("expected");
+ QTest::addColumn<QString>("oriented");
+ QTest::newRow("Indexed TIFF, orientation1") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_1.tiff";
+ QTest::newRow("Indexed TIFF, orientation2") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_2.tiff";
+ QTest::newRow("Indexed TIFF, orientation3") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_3.tiff";
+ QTest::newRow("Indexed TIFF, orientation4") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_4.tiff";
+ QTest::newRow("Indexed TIFF, orientation5") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_5.tiff";
+ QTest::newRow("Indexed TIFF, orientation6") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_6.tiff";
+ QTest::newRow("Indexed TIFF, orientation7") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_7.tiff";
+ QTest::newRow("Indexed TIFF, orientation8") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_8.tiff";
+
+ QTest::newRow("Mono TIFF, orientation1") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_1.tiff";
+ QTest::newRow("Mono TIFF, orientation2") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_2.tiff";
+ QTest::newRow("Mono TIFF, orientation3") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_3.tiff";
+ QTest::newRow("Mono TIFF, orientation4") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_4.tiff";
+ QTest::newRow("Mono TIFF, orientation5") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_5.tiff";
+ QTest::newRow("Mono TIFF, orientation6") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_6.tiff";
+ QTest::newRow("Mono TIFF, orientation7") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_7.tiff";
+ QTest::newRow("Mono TIFF, orientation8") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_8.tiff";
+
+ QTest::newRow("RGB TIFF, orientation1") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_1.tiff";
+ QTest::newRow("RGB TIFF, orientation2") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_2.tiff";
+ QTest::newRow("RGB TIFF, orientation3") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_3.tiff";
+ QTest::newRow("RGB TIFF, orientation4") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_4.tiff";
+ QTest::newRow("RGB TIFF, orientation5") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_5.tiff";
+ QTest::newRow("RGB TIFF, orientation6") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_6.tiff";
+ QTest::newRow("RGB TIFF, orientation7") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_7.tiff";
+ QTest::newRow("RGB TIFF, orientation8") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_8.tiff";
+}
+
+void tst_QImageReader::tiffOrientation()
+{
+ QFETCH(QString, expected);
+ QFETCH(QString, oriented);
+
+ QImage expectedImage(prefix + expected);
+ QImage orientedImage(prefix + oriented);
+ QCOMPARE(expectedImage, orientedImage);
+}
+
#endif
void tst_QImageReader::dotsPerMeter_data()
diff --git a/tests/auto/qmatrixnxn/qmatrixnxn.pro b/tests/auto/qmatrixnxn/qmatrixnxn.pro
new file mode 100644
index 0000000..cf6e4a1
--- /dev/null
+++ b/tests/auto/qmatrixnxn/qmatrixnxn.pro
@@ -0,0 +1,2 @@
+load(qttest_p4)
+SOURCES += tst_qmatrixnxn.cpp
diff --git a/tests/auto/math3d/qmatrixnxn/tst_qmatrixnxn.cpp b/tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp
index 5541162..b8c04c0 100644
--- a/tests/auto/math3d/qmatrixnxn/tst_qmatrixnxn.cpp
+++ b/tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp
@@ -41,7 +41,7 @@
#include <QtTest/QtTest>
#include <QtCore/qmath.h>
-#include "math3dincludes.h"
+#include <QtGui/qmatrix4x4.h>
class tst_QMatrixNxN : public QObject
{
diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp
index b06b247..90b9a2a 100644
--- a/tests/auto/qmenu/tst_qmenu.cpp
+++ b/tests/auto/qmenu/tst_qmenu.cpp
@@ -710,7 +710,6 @@ void tst_QMenu::task250673_activeMultiColumnSubMenuPosition()
uint i = 2;
while (main.columnCount() < 2) {
main.addAction(QString("Item %1").arg(i));
- qDebug() << "adding action" << i;
++i;
Q_ASSERT(i<1000);
}
diff --git a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp b/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
index 5519dee..abd1660 100644
--- a/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
+++ b/tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp
@@ -234,17 +234,17 @@ void tst_QNetworkCookie::parseSingleCookie_data()
QTest::newRow("path-with-utf8-2") << "a=b;path=/R%C3%A9sum%C3%A9" << cookie;
cookie.setPath(QString());
- cookie.setDomain(".trolltech.com");
- QTest::newRow("plain-domain1") << "a=b;domain=trolltech.com" << cookie;
- QTest::newRow("plain-domain2") << "a=b; domain=trolltech.com " << cookie;
- QTest::newRow("plain-domain3") << "a=b;domain=TROLLTECH.COM" << cookie;
- QTest::newRow("plain-domain4") << "a=b;DOMAIN = TROLLTECH.COM" << cookie;
-
- cookie.setDomain(".trolltech.com");
- QTest::newRow("dot-domain1") << "a=b;domain=.trolltech.com" << cookie;
- QTest::newRow("dot-domain2") << "a=b; domain=.trolltech.com" << cookie;
- QTest::newRow("dot-domain3") << "a=b; domain=.TROLLTECH.COM" << cookie;
- QTest::newRow("dot-domain4") << "a=b; Domain = .TROLLTECH.COM" << cookie;
+ cookie.setDomain(".qt.nokia.com");
+ QTest::newRow("plain-domain1") << "a=b;domain=qt.nokia.com" << cookie;
+ QTest::newRow("plain-domain2") << "a=b; domain=qt.nokia.com " << cookie;
+ QTest::newRow("plain-domain3") << "a=b;domain=QT.NOKIA.COM" << cookie;
+ QTest::newRow("plain-domain4") << "a=b;DOMAIN = QT.NOKIA.COM" << cookie;
+
+ cookie.setDomain(".qt.nokia.com");
+ QTest::newRow("dot-domain1") << "a=b;domain=.qt.nokia.com" << cookie;
+ QTest::newRow("dot-domain2") << "a=b; domain=.qt.nokia.com" << cookie;
+ QTest::newRow("dot-domain3") << "a=b; domain=.QT.NOKIA.COM" << cookie;
+ QTest::newRow("dot-domain4") << "a=b; Domain = .QT.NOKIA.COM" << cookie;
cookie.setDomain(QString::fromUtf8(".d\303\270gn\303\245pent.troll.no"));
QTest::newRow("idn-domain1") << "a=b;domain=xn--dgnpent-gxa2o.troll.no" << cookie;
@@ -259,20 +259,20 @@ void tst_QNetworkCookie::parseSingleCookie_data()
QTest::newRow("dot-idn-domain3") << "a=b;domain=.XN--DGNPENT-GXA2O.TROLL.NO" << cookie;
QTest::newRow("dot-idn-domain4") << "a=b;domain=.D\303\230GN\303\205PENT.troll.NO" << cookie;
- cookie.setDomain(".trolltech.com");
+ cookie.setDomain(".qt.nokia.com");
cookie.setPath("/");
- QTest::newRow("two-fields") << "a=b;domain=trolltech.com;path=/" << cookie;
- QTest::newRow("two-fields2") << "a=b; domain=trolltech.com; path=/" << cookie;
- QTest::newRow("two-fields3") << "a=b; domain=trolltech.com ; path=/ " << cookie;
- QTest::newRow("two-fields4") << "a=b;path=/; domain=trolltech.com" << cookie;
- QTest::newRow("two-fields5") << "a=b; path=/ ; domain=trolltech.com" << cookie;
- QTest::newRow("two-fields6") << "a=b; path= / ; domain =trolltech.com" << cookie;
+ QTest::newRow("two-fields") << "a=b;domain=qt.nokia.com;path=/" << cookie;
+ QTest::newRow("two-fields2") << "a=b; domain=qt.nokia.com; path=/" << cookie;
+ QTest::newRow("two-fields3") << "a=b; domain=qt.nokia.com ; path=/ " << cookie;
+ QTest::newRow("two-fields4") << "a=b;path=/; domain=qt.nokia.com" << cookie;
+ QTest::newRow("two-fields5") << "a=b; path=/ ; domain=qt.nokia.com" << cookie;
+ QTest::newRow("two-fields6") << "a=b; path= / ; domain =qt.nokia.com" << cookie;
cookie.setSecure(true);
- QTest::newRow("three-fields") << "a=b;domain=trolltech.com;path=/;secure" << cookie;
- QTest::newRow("three-fields2") << "a=b;secure;path=/;domain=trolltech.com" << cookie;
- QTest::newRow("three-fields3") << "a=b;secure;domain=trolltech.com; path=/" << cookie;
- QTest::newRow("three-fields4") << "a = b;secure;domain=trolltech.com; path=/" << cookie;
+ QTest::newRow("three-fields") << "a=b;domain=qt.nokia.com;path=/;secure" << cookie;
+ QTest::newRow("three-fields2") << "a=b;secure;path=/;domain=qt.nokia.com" << cookie;
+ QTest::newRow("three-fields3") << "a=b;secure;domain=qt.nokia.com; path=/" << cookie;
+ QTest::newRow("three-fields4") << "a = b;secure;domain=qt.nokia.com; path=/" << cookie;
cookie = QNetworkCookie();
cookie.setName("a");
@@ -560,9 +560,9 @@ void tst_QNetworkCookie::parseSingleCookie_data()
QTest::newRow("expires+path") << "a=b; expires=Wed, 09-Nov-1999 23:12:40 GMT; path=/" << cookie;
QTest::newRow("path+expires") << "a=b; path=/;expires=Wed, 09-Nov-1999 23:12:40 GMT " << cookie;
- cookie.setDomain(".trolltech.com");
- QTest::newRow("full") << "a=b; domain=.trolltech.com;expires=Wed, 09-Nov-1999 23:12:40 GMT;path=/" << cookie;
- QTest::newRow("full2") << "a=b;path=/; expires=Wed, 09-Nov-1999 23:12:40 GMT ;domain=.trolltech.com" << cookie;
+ cookie.setDomain(".qt.nokia.com");
+ QTest::newRow("full") << "a=b; domain=.qt.nokia.com;expires=Wed, 09-Nov-1999 23:12:40 GMT;path=/" << cookie;
+ QTest::newRow("full2") << "a=b;path=/; expires=Wed, 09-Nov-1999 23:12:40 GMT ;domain=.qt.nokia.com" << cookie;
// cookies obtained from the network:
cookie = QNetworkCookie("__siteid", "1");
@@ -662,9 +662,9 @@ void tst_QNetworkCookie::parseMultipleCookies_data()
QTest::newRow("complex-1") << "c=d, a=, foo=bar; path=/" << list;
cookie.setName("baz");
- cookie.setDomain(".trolltech.com");
+ cookie.setDomain(".qt.nokia.com");
list.prepend(cookie);
- QTest::newRow("complex-2") << "baz=bar; path=/; domain=trolltech.com, c=d,a=,foo=bar; path=/" << list;
+ QTest::newRow("complex-2") << "baz=bar; path=/; domain=qt.nokia.com, c=d,a=,foo=bar; path=/" << list;
// cookies obtained from the network:
cookie = QNetworkCookie("id", "51706646077999719");
diff --git a/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
index 92b7ae5..67b6d08 100644
--- a/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
+++ b/tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
@@ -220,21 +220,21 @@ void tst_QNetworkCookieJar::cookiesForUrl_data()
QNetworkCookie cookie;
cookie.setName("a");
cookie.setPath("/web");
- cookie.setDomain(".trolltech.com");
+ cookie.setDomain(".nokia.com");
allCookies += cookie;
QTest::newRow("no-match-1") << allCookies << "http://foo.bar/" << result;
QTest::newRow("no-match-2") << allCookies << "http://foo.bar/web" << result;
QTest::newRow("no-match-3") << allCookies << "http://foo.bar/web/wiki" << result;
- QTest::newRow("no-match-4") << allCookies << "http://trolltech.com" << result;
+ QTest::newRow("no-match-4") << allCookies << "http://nokia.com" << result;
QTest::newRow("no-match-5") << allCookies << "http://qt.nokia.com" << result;
- QTest::newRow("no-match-6") << allCookies << "http://trolltech.com/webinar" << result;
+ QTest::newRow("no-match-6") << allCookies << "http://nokia.com/webinar" << result;
QTest::newRow("no-match-7") << allCookies << "http://qt.nokia.com/webinar" << result;
result = allCookies;
- QTest::newRow("match-1") << allCookies << "http://trolltech.com/web" << result;
- QTest::newRow("match-2") << allCookies << "http://trolltech.com/web/" << result;
- QTest::newRow("match-3") << allCookies << "http://trolltech.com/web/content" << result;
+ QTest::newRow("match-1") << allCookies << "http://nokia.com/web" << result;
+ QTest::newRow("match-2") << allCookies << "http://nokia.com/web/" << result;
+ QTest::newRow("match-3") << allCookies << "http://nokia.com/web/content" << result;
QTest::newRow("match-4") << allCookies << "http://qt.nokia.com/web" << result;
QTest::newRow("match-4") << allCookies << "http://qt.nokia.com/web/" << result;
QTest::newRow("match-6") << allCookies << "http://qt.nokia.com/web/content" << result;
@@ -243,21 +243,21 @@ void tst_QNetworkCookieJar::cookiesForUrl_data()
allCookies += cookie;
// exact same results as before:
- QTest::newRow("one-match-1") << allCookies << "http://trolltech.com/web" << result;
- QTest::newRow("one-match-2") << allCookies << "http://trolltech.com/web/" << result;
- QTest::newRow("one-match-3") << allCookies << "http://trolltech.com/web/content" << result;
+ QTest::newRow("one-match-1") << allCookies << "http://nokia.com/web" << result;
+ QTest::newRow("one-match-2") << allCookies << "http://nokia.com/web/" << result;
+ QTest::newRow("one-match-3") << allCookies << "http://nokia.com/web/content" << result;
QTest::newRow("one-match-4") << allCookies << "http://qt.nokia.com/web" << result;
QTest::newRow("one-match-4") << allCookies << "http://qt.nokia.com/web/" << result;
QTest::newRow("one-match-6") << allCookies << "http://qt.nokia.com/web/content" << result;
result.prepend(cookie); // longer path, it must match first
- QTest::newRow("two-matches-1") << allCookies << "http://trolltech.com/web/wiki" << result;
+ QTest::newRow("two-matches-1") << allCookies << "http://nokia.com/web/wiki" << result;
QTest::newRow("two-matches-2") << allCookies << "http://qt.nokia.com/web/wiki" << result;
// invert the order;
allCookies.clear();
allCookies << result.at(1) << result.at(0);
- QTest::newRow("two-matches-3") << allCookies << "http://trolltech.com/web/wiki" << result;
+ QTest::newRow("two-matches-3") << allCookies << "http://nokia.com/web/wiki" << result;
QTest::newRow("two-matches-4") << allCookies << "http://qt.nokia.com/web/wiki" << result;
// expired cookie
@@ -265,9 +265,9 @@ void tst_QNetworkCookieJar::cookiesForUrl_data()
cookie.setExpirationDate(QDateTime::fromString("09-Nov-1999", "dd-MMM-yyyy"));
allCookies += cookie;
result.clear();
- QTest::newRow("exp-match-1") << allCookies << "http://trolltech.com/web" << result;
- QTest::newRow("exp-match-2") << allCookies << "http://trolltech.com/web/" << result;
- QTest::newRow("exp-match-3") << allCookies << "http://trolltech.com/web/content" << result;
+ QTest::newRow("exp-match-1") << allCookies << "http://nokia.com/web" << result;
+ QTest::newRow("exp-match-2") << allCookies << "http://nokia.com/web/" << result;
+ QTest::newRow("exp-match-3") << allCookies << "http://nokia.com/web/content" << result;
QTest::newRow("exp-match-4") << allCookies << "http://qt.nokia.com/web" << result;
QTest::newRow("exp-match-4") << allCookies << "http://qt.nokia.com/web/" << result;
QTest::newRow("exp-match-6") << allCookies << "http://qt.nokia.com/web/content" << result;
diff --git a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp b/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp
index 5af6f39..3ff177a 100644
--- a/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp
+++ b/tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp
@@ -113,6 +113,7 @@ private slots:
void oneKeyValue();
void updateOnSetKeyValues();
void restart();
+ void valueChanged();
};
tst_QPropertyAnimation::tst_QPropertyAnimation()
@@ -1052,6 +1053,33 @@ void tst_QPropertyAnimation::restart()
anim.start();
}
+void tst_QPropertyAnimation::valueChanged()
+{
+ qRegisterMetaType<QVariant>("QVariant");
+
+ //we check that we receive the valueChanged signal
+ MyErrorObject o;
+ o.setOle(0);
+ QCOMPARE(o.property("ole").toInt(), 0);
+ QPropertyAnimation anim(&o, "ole");
+ anim.setEndValue(5);
+ anim.setDuration(1000);
+ QSignalSpy spy(&anim, SIGNAL(valueChanged(QVariant)));
+ anim.start();
+
+ QTest::qWait(anim.duration() + 50);
+
+ QCOMPARE(anim.state(), QAbstractAnimation::Stopped);
+ QCOMPARE(anim.currentTime(), anim.duration());
+
+ //let's check that the values go forward
+ QCOMPARE(spy.count(), 6); //we should have got everything from 0 to 5
+ for (int i = 0; i < spy.count(); ++i) {
+ QCOMPARE(qvariant_cast<QVariant>(spy.at(i).first()).toInt(), i);
+ }
+}
+
+
QTEST_MAIN(tst_QPropertyAnimation)
#include "tst_qpropertyanimation.moc"
diff --git a/tests/auto/qquaternion/qquaternion.pro b/tests/auto/qquaternion/qquaternion.pro
new file mode 100644
index 0000000..6f740cf
--- /dev/null
+++ b/tests/auto/qquaternion/qquaternion.pro
@@ -0,0 +1,2 @@
+load(qttest_p4)
+SOURCES += tst_qquaternion.cpp
diff --git a/tests/auto/math3d/qquaternion/tst_qquaternion.cpp b/tests/auto/qquaternion/tst_qquaternion.cpp
index 899c5c2..ba546f1 100644
--- a/tests/auto/math3d/qquaternion/tst_qquaternion.cpp
+++ b/tests/auto/qquaternion/tst_qquaternion.cpp
@@ -41,7 +41,7 @@
#include <QtTest/QtTest>
#include <QtCore/qmath.h>
-#include "math3dincludes.h"
+#include <QtGui/qquaternion.h>
class tst_QQuaternion : public QObject
{
diff --git a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
index ab75c91..c9b2325 100644
--- a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
@@ -761,17 +761,46 @@ void tst_QSharedPointer::differentPointers()
{
DiffPtrDerivedData *aData = new DiffPtrDerivedData;
Data *aBase = aData;
- Q_ASSERT(aData == aBase);
- Q_ASSERT(*reinterpret_cast<quintptr *>(&aData) != *reinterpret_cast<quintptr *>(&aBase));
+
+ // ensure that this compiler isn't broken
+ if (*reinterpret_cast<quintptr *>(&aData) == *reinterpret_cast<quintptr *>(&aBase))
+ qFatal("Something went very wrong -- we couldn't create two different pointers to the same object");
+ if (aData != aBase)
+ QSKIP("Broken compiler", SkipAll);
+ if (aBase != aData)
+ QSKIP("Broken compiler", SkipAll);
QSharedPointer<DiffPtrDerivedData> ptr = QSharedPointer<DiffPtrDerivedData>(aData);
QSharedPointer<Data> baseptr = qSharedPointerCast<Data>(ptr);
- QVERIFY(ptr == baseptr);
+ qDebug("naked: orig: %p; base: %p (%s) -- QSharedPointer: orig: %p; base %p (%s) -- result: %s",
+ aData, aBase, aData == aBase ? "equal" : "not equal",
+ ptr.data(), baseptr.data(), ptr.data() == baseptr.data() ? "equal" : "not equal",
+ baseptr.data() == aData ? "equal" : "not equal");
+
QVERIFY(ptr.data() == baseptr.data());
+ QVERIFY(baseptr.data() == ptr.data());
+ QVERIFY(ptr == baseptr);
+ QVERIFY(baseptr == ptr);
+
+ QVERIFY(ptr.data() == aBase);
+ QVERIFY(aBase == ptr.data());
+ QVERIFY(ptr.data() == aData);
+ QVERIFY(aData == ptr.data());
+
QVERIFY(ptr == aBase);
+ QVERIFY(aBase == ptr);
QVERIFY(ptr == aData);
- QVERIFY(baseptr == aData);
+ QVERIFY(aData == ptr);
+
+ QVERIFY(baseptr.data() == aBase);
+ QVERIFY(aBase == baseptr.data());
QVERIFY(baseptr == aBase);
+ QVERIFY(aBase == baseptr);
+
+ QVERIFY(baseptr.data() == aData);
+ QVERIFY(aData == baseptr.data());
+ QVERIFY(baseptr == aData);
+ QVERIFY(aData == baseptr);
}
check();
diff --git a/tests/auto/qtableview/tst_qtableview.cpp b/tests/auto/qtableview/tst_qtableview.cpp
index 2f41d77..e650dc8 100644
--- a/tests/auto/qtableview/tst_qtableview.cpp
+++ b/tests/auto/qtableview/tst_qtableview.cpp
@@ -3270,6 +3270,7 @@ void tst_QTableView::task259308_scrollVerticalHeaderSwappedSections()
tv.setModel(&model);
tv.show();
tv.verticalHeader()->swapSections(0, model.rowCount() - 1);
+ tv.setCurrentIndex(model.index(model.rowCount() - 1, 0));
QTest::qWait(60);
QTest::keyClick(&tv, Qt::Key_PageUp); // PageUp won't scroll when at top
diff --git a/tests/auto/qtoolbutton/tst_qtoolbutton.cpp b/tests/auto/qtoolbutton/tst_qtoolbutton.cpp
index 6376c5d..aca9a20 100644
--- a/tests/auto/qtoolbutton/tst_qtoolbutton.cpp
+++ b/tests/auto/qtoolbutton/tst_qtoolbutton.cpp
@@ -222,8 +222,10 @@ void tst_QToolButton::task176137_autoRepeatOfAction()
tb.setAutoRepeat (true);
QSignalSpy repeatSpy(&action,SIGNAL(triggered())); // new spy
QTest::mousePress ( &tb, Qt::LeftButton);
- QTest::mouseRelease ( &tb, Qt::LeftButton, 0, QPoint (), 2000);
- QCOMPARE (repeatSpy.count(), (2000 - tb.autoRepeatDelay()) / tb.autoRepeatInterval() + 1);
+ QTest::mouseRelease ( &tb, Qt::LeftButton, 0, QPoint (), 3000);
+ qreal expected = (3000 - tb.autoRepeatDelay()) / tb.autoRepeatInterval() + 1;
+ //we check that the difference is less than 10% (on some systems timers are not super accurate)
+ QVERIFY ( qAbs( (expected - repeatSpy.count()) / expected) < 0.1);
}
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index 5d909d8..fea48ea 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -2047,7 +2047,7 @@ void tst_QUrl::compat_decode_data()
QTest::newRow("NormalStringEncoded") << QByteArray("file%20name") << QString("file name");
QTest::newRow("JustEncoded") << QByteArray("%20") << QString(" ");
QTest::newRow("HTTPUrl") << QByteArray("http://qt.nokia.com") << QString("http://qt.nokia.com");
- QTest::newRow("HTTPUrlEncoded") << QByteArray("http://www%20trolltech%20com") << QString("http://qt.nokia.com");
+ QTest::newRow("HTTPUrlEncoded") << QByteArray("http://qt%20nokia%20com") << QString("http://qt nokia com");
QTest::newRow("EmptyString") << QByteArray("") << QString("");
QTest::newRow("Task27166") << QByteArray("Fran%C3%A7aise") << QString("Française");
}
@@ -2069,7 +2069,7 @@ void tst_QUrl::compat_encode_data()
QTest::newRow("NormalStringEncoded") << QString("file name") << QByteArray("file%20name");
QTest::newRow("JustEncoded") << QString(" ") << QByteArray("%20");
QTest::newRow("HTTPUrl") << QString("http://qt.nokia.com") << QByteArray("http%3A//qt.nokia.com");
- QTest::newRow("HTTPUrlEncoded") << QString("http://qt.nokia.com") << QByteArray("http%3A//www%20trolltech%20com");
+ QTest::newRow("HTTPUrlEncoded") << QString("http://qt nokia com") << QByteArray("http%3A//qt%20nokia%20com");
QTest::newRow("EmptyString") << QString("") << QByteArray("");
QTest::newRow("Task27166") << QString::fromLatin1("Française") << QByteArray("Fran%C3%A7aise");
}
diff --git a/tests/auto/qvectornd/qvectornd.pro b/tests/auto/qvectornd/qvectornd.pro
new file mode 100644
index 0000000..6346199
--- /dev/null
+++ b/tests/auto/qvectornd/qvectornd.pro
@@ -0,0 +1,2 @@
+load(qttest_p4)
+SOURCES += tst_qvectornd.cpp
diff --git a/tests/auto/math3d/qvectornd/tst_qvectornd.cpp b/tests/auto/qvectornd/tst_qvectornd.cpp
index cfcce8e..22f0ce1 100644
--- a/tests/auto/math3d/qvectornd/tst_qvectornd.cpp
+++ b/tests/auto/qvectornd/tst_qvectornd.cpp
@@ -41,7 +41,9 @@
#include <QtTest/QtTest>
#include <QtCore/qmath.h>
-#include "math3dincludes.h"
+#include <QtGui/qvector2d.h>
+#include <QtGui/qvector3d.h>
+#include <QtGui/qvector4d.h>
class tst_QVector : public QObject
{
diff --git a/tests/auto/qxmlstream/tst_qxmlstream.cpp b/tests/auto/qxmlstream/tst_qxmlstream.cpp
index 375528c..04f990f 100644
--- a/tests/auto/qxmlstream/tst_qxmlstream.cpp
+++ b/tests/auto/qxmlstream/tst_qxmlstream.cpp
@@ -55,6 +55,8 @@
//TESTED_CLASS=QXmlStreamReader QXmlStreamWriter
//TESTED_FILES=corelib/xml/stream/qxmlutils.cpp corelib/xml/stream/qxmlstream.cpp corelib/xml/stream/qxmlstream_p.h
+Q_DECLARE_METATYPE(QXmlStreamReader::ReadElementTextBehaviour)
+
static const char *const catalogFile = "XML-Test-Suite/xmlconf/finalCatalog.xml";
static const int expectedRunCount = 1646;
static const int expectedSkipCount = 532;
@@ -550,6 +552,9 @@ private slots:
void setEntityResolver();
void readFromQBuffer() const;
void readFromQBufferInvalid() const;
+ void readNextStartElement() const;
+ void readElementText() const;
+ void readElementText_data() const;
void crashInUTF16Codec() const;
void hasAttributeSignature() const;
void hasAttribute() const;
@@ -1107,6 +1112,71 @@ void tst_QXmlStream::readFromQBufferInvalid() const
QVERIFY(reader.hasError());
}
+void tst_QXmlStream::readNextStartElement() const
+{
+ QLatin1String in("<?xml version=\"1.0\"?><A><!-- blah --><B><C/></B><B attr=\"value\"/>text</A>");
+ QXmlStreamReader reader(in);
+
+ QVERIFY(reader.readNextStartElement());
+ QVERIFY(reader.isStartElement() && reader.name() == "A");
+
+ int amountOfB = 0;
+ while (reader.readNextStartElement()) {
+ QVERIFY(reader.isStartElement() && reader.name() == "B");
+ ++amountOfB;
+ reader.skipCurrentElement();
+ }
+
+ QCOMPARE(amountOfB, 2);
+}
+
+void tst_QXmlStream::readElementText() const
+{
+ QFETCH(QXmlStreamReader::ReadElementTextBehaviour, behaviour);
+ QFETCH(QString, input);
+ QFETCH(QString, expected);
+
+ QXmlStreamReader reader(input);
+
+ QVERIFY(reader.readNextStartElement());
+ QCOMPARE(reader.readElementText(behaviour), expected);
+}
+
+void tst_QXmlStream::readElementText_data() const
+{
+ QTest::addColumn<QXmlStreamReader::ReadElementTextBehaviour>("behaviour");
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QString>("expected");
+
+ QString validInput("<p>He was <em>never</em> going to admit<!-- TODO: rephrase --> his mistake.</p>");
+ QString invalidInput("<p>invalid...<p>");
+ QString invalidOutput("invalid...");
+
+ QTest::newRow("ErrorOnUnexpectedElement")
+ << QXmlStreamReader::ErrorOnUnexpectedElement
+ << validInput << QString("He was ");
+
+ QTest::newRow("IncludeChildElements")
+ << QXmlStreamReader::IncludeChildElements
+ << validInput << QString("He was never going to admit his mistake.");
+
+ QTest::newRow("SkipChildElements")
+ << QXmlStreamReader::SkipChildElements
+ << validInput << QString("He was going to admit his mistake.");
+
+ QTest::newRow("ErrorOnUnexpectedElement Invalid")
+ << QXmlStreamReader::ErrorOnUnexpectedElement
+ << invalidInput << invalidOutput;
+
+ QTest::newRow("IncludeChildElements Invalid")
+ << QXmlStreamReader::IncludeChildElements
+ << invalidInput << invalidOutput;
+
+ QTest::newRow("SkipChildElements Invalid")
+ << QXmlStreamReader::SkipChildElements
+ << invalidInput << invalidOutput;
+}
+
void tst_QXmlStream::crashInUTF16Codec() const
{
QEventLoop eventLoop;
diff --git a/tests/auto/symbols/tst_symbols.cpp b/tests/auto/symbols/tst_symbols.cpp
index 784c979..fea3380 100644
--- a/tests/auto/symbols/tst_symbols.cpp
+++ b/tests/auto/symbols/tst_symbols.cpp
@@ -111,11 +111,19 @@ void tst_Symbols::globalObjects()
bool isFailed = false;
- QDir dir(qgetenv("QTDIR") + "/lib", "*.so");
+ QDir dir(QLibraryInfo::location(QLibraryInfo::LibrariesPath), "*.so");
QStringList files = dir.entryList();
QVERIFY(!files.isEmpty());
foreach (QString lib, files) {
+ if (lib == "libQtCLucene.so") {
+ // skip this library, it's 3rd-party C++
+ continue;
+ }
+ if (lib == "libQt3Support.so") {
+ // we're not going to fix these issues anyway, so skip this library
+ continue;
+ }
QProcess proc;
proc.start("nm",
diff --git a/tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui.h b/tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui.h
index 166dc60..efbeb97 100644
--- a/tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui.h
+++ b/tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'Dialog_with_Buttons_Bottom.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui.h b/tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui.h
index cbb3cc4..0f23ee3 100644
--- a/tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui.h
+++ b/tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'Dialog_with_Buttons_Right.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/Dialog_without_Buttons.ui.h b/tests/auto/uic/baseline/Dialog_without_Buttons.ui.h
index bb06a54..ff88063 100644
--- a/tests/auto/uic/baseline/Dialog_without_Buttons.ui.h
+++ b/tests/auto/uic/baseline/Dialog_without_Buttons.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'Dialog_without_Buttons.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/Main_Window.ui.h b/tests/auto/uic/baseline/Main_Window.ui.h
index 07a8389..4fbc750 100644
--- a/tests/auto/uic/baseline/Main_Window.ui.h
+++ b/tests/auto/uic/baseline/Main_Window.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'Main_Window.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/Widget.ui.h b/tests/auto/uic/baseline/Widget.ui.h
index bba9fd9..e49646e 100644
--- a/tests/auto/uic/baseline/Widget.ui.h
+++ b/tests/auto/uic/baseline/Widget.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'Widget.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/addlinkdialog.ui.h b/tests/auto/uic/baseline/addlinkdialog.ui.h
index 920a8f7..1b174ad 100644
--- a/tests/auto/uic/baseline/addlinkdialog.ui.h
+++ b/tests/auto/uic/baseline/addlinkdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'addlinkdialog.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/addtorrentform.ui.h b/tests/auto/uic/baseline/addtorrentform.ui.h
index 185ce2e..a454da9 100644
--- a/tests/auto/uic/baseline/addtorrentform.ui.h
+++ b/tests/auto/uic/baseline/addtorrentform.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'addtorrentform.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/authenticationdialog.ui.h b/tests/auto/uic/baseline/authenticationdialog.ui.h
index b46c05d..dd27f5c 100644
--- a/tests/auto/uic/baseline/authenticationdialog.ui.h
+++ b/tests/auto/uic/baseline/authenticationdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'authenticationdialog.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/backside.ui.h b/tests/auto/uic/baseline/backside.ui.h
index 6fdab4b..1660846 100644
--- a/tests/auto/uic/baseline/backside.ui.h
+++ b/tests/auto/uic/baseline/backside.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'backside.ui'
**
-** Created: Tue Jun 17 09:18:47 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/batchtranslation.ui.h b/tests/auto/uic/baseline/batchtranslation.ui.h
index d781c34..2285e1b 100644
--- a/tests/auto/uic/baseline/batchtranslation.ui.h
+++ b/tests/auto/uic/baseline/batchtranslation.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'batchtranslation.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/bookmarkdialog.ui.h b/tests/auto/uic/baseline/bookmarkdialog.ui.h
index 1db7dca..0c7764f 100644
--- a/tests/auto/uic/baseline/bookmarkdialog.ui.h
+++ b/tests/auto/uic/baseline/bookmarkdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'bookmarkdialog.ui'
**
-** Created: Mon Jun 16 18:01:55 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/bookwindow.ui.h b/tests/auto/uic/baseline/bookwindow.ui.h
index 776f9e9..92639ec 100644
--- a/tests/auto/uic/baseline/bookwindow.ui.h
+++ b/tests/auto/uic/baseline/bookwindow.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'bookwindow.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/browserwidget.ui.h b/tests/auto/uic/baseline/browserwidget.ui.h
index c1ca60f..1a3a282 100644
--- a/tests/auto/uic/baseline/browserwidget.ui.h
+++ b/tests/auto/uic/baseline/browserwidget.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'browserwidget.ui'
**
-** Created: Mon Jun 16 18:01:09 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/calculator.ui.h b/tests/auto/uic/baseline/calculator.ui.h
index f476d9b..ace5f44 100644
--- a/tests/auto/uic/baseline/calculator.ui.h
+++ b/tests/auto/uic/baseline/calculator.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'calculator.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/calculatorform.ui.h b/tests/auto/uic/baseline/calculatorform.ui.h
index 1c575e8..2a369c7 100644
--- a/tests/auto/uic/baseline/calculatorform.ui.h
+++ b/tests/auto/uic/baseline/calculatorform.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'calculatorform.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/certificateinfo.ui.h b/tests/auto/uic/baseline/certificateinfo.ui.h
index 548bec5..6d13787 100644
--- a/tests/auto/uic/baseline/certificateinfo.ui.h
+++ b/tests/auto/uic/baseline/certificateinfo.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'certificateinfo.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/chatdialog.ui.h b/tests/auto/uic/baseline/chatdialog.ui.h
index c9f2693..ba1b99f 100644
--- a/tests/auto/uic/baseline/chatdialog.ui.h
+++ b/tests/auto/uic/baseline/chatdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'chatdialog.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/chatmainwindow.ui.h b/tests/auto/uic/baseline/chatmainwindow.ui.h
index 87ac882..d4d4996 100644
--- a/tests/auto/uic/baseline/chatmainwindow.ui.h
+++ b/tests/auto/uic/baseline/chatmainwindow.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'chatmainwindow.ui'
**
-** Created: Mon Sep 1 09:31:02 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/chatsetnickname.ui.h b/tests/auto/uic/baseline/chatsetnickname.ui.h
index 54f48e7..4b081b6 100644
--- a/tests/auto/uic/baseline/chatsetnickname.ui.h
+++ b/tests/auto/uic/baseline/chatsetnickname.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'chatsetnickname.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/config.ui.h b/tests/auto/uic/baseline/config.ui.h
index a14d7c8..f708f6b 100644
--- a/tests/auto/uic/baseline/config.ui.h
+++ b/tests/auto/uic/baseline/config.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'config.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/connectdialog.ui.h b/tests/auto/uic/baseline/connectdialog.ui.h
index d7e0eaf..880653e 100644
--- a/tests/auto/uic/baseline/connectdialog.ui.h
+++ b/tests/auto/uic/baseline/connectdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'connectdialog.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/controller.ui.h b/tests/auto/uic/baseline/controller.ui.h
index c5cd1fe..609c32c 100644
--- a/tests/auto/uic/baseline/controller.ui.h
+++ b/tests/auto/uic/baseline/controller.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'controller.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/cookies.ui.h b/tests/auto/uic/baseline/cookies.ui.h
index 0b4d88a..5e0bf88 100644
--- a/tests/auto/uic/baseline/cookies.ui.h
+++ b/tests/auto/uic/baseline/cookies.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'cookies.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/cookiesexceptions.ui.h b/tests/auto/uic/baseline/cookiesexceptions.ui.h
index 12e80d8..9eaf01c 100644
--- a/tests/auto/uic/baseline/cookiesexceptions.ui.h
+++ b/tests/auto/uic/baseline/cookiesexceptions.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'cookiesexceptions.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/default.ui.h b/tests/auto/uic/baseline/default.ui.h
index f68a93e..093e7b4 100644
--- a/tests/auto/uic/baseline/default.ui.h
+++ b/tests/auto/uic/baseline/default.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'default.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/dialog.ui.h b/tests/auto/uic/baseline/dialog.ui.h
index d65c10a..95fa40b 100644
--- a/tests/auto/uic/baseline/dialog.ui.h
+++ b/tests/auto/uic/baseline/dialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'dialog.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/downloaditem.ui.h b/tests/auto/uic/baseline/downloaditem.ui.h
index 341fdd2..c211fa0 100644
--- a/tests/auto/uic/baseline/downloaditem.ui.h
+++ b/tests/auto/uic/baseline/downloaditem.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'downloaditem.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/downloads.ui.h b/tests/auto/uic/baseline/downloads.ui.h
index 70a038a..f5028c8 100644
--- a/tests/auto/uic/baseline/downloads.ui.h
+++ b/tests/auto/uic/baseline/downloads.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'downloads.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/embeddeddialog.ui.h b/tests/auto/uic/baseline/embeddeddialog.ui.h
index 3dd36a6..050f0ab 100644
--- a/tests/auto/uic/baseline/embeddeddialog.ui.h
+++ b/tests/auto/uic/baseline/embeddeddialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'embeddeddialog.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/filespage.ui.h b/tests/auto/uic/baseline/filespage.ui.h
index 15a0f5b..3b4c156 100644
--- a/tests/auto/uic/baseline/filespage.ui.h
+++ b/tests/auto/uic/baseline/filespage.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'filespage.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/filternamedialog.ui.h b/tests/auto/uic/baseline/filternamedialog.ui.h
index ad435c1..64713b4d 100644
--- a/tests/auto/uic/baseline/filternamedialog.ui.h
+++ b/tests/auto/uic/baseline/filternamedialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'filternamedialog.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/filterpage.ui.h b/tests/auto/uic/baseline/filterpage.ui.h
index e7fb7fb..57beb6b 100644
--- a/tests/auto/uic/baseline/filterpage.ui.h
+++ b/tests/auto/uic/baseline/filterpage.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'filterpage.ui'
**
-** Created: Mon Jun 16 17:58:59 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/finddialog.ui.h b/tests/auto/uic/baseline/finddialog.ui.h
index 7cd2b69..809657a 100644
--- a/tests/auto/uic/baseline/finddialog.ui.h
+++ b/tests/auto/uic/baseline/finddialog.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'finddialog.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/form.ui.h b/tests/auto/uic/baseline/form.ui.h
index 60f5a14..4edbc42 100644
--- a/tests/auto/uic/baseline/form.ui.h
+++ b/tests/auto/uic/baseline/form.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'form.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/formwindowsettings.ui.h b/tests/auto/uic/baseline/formwindowsettings.ui.h
index 99bb61c..71e6c6d 100644
--- a/tests/auto/uic/baseline/formwindowsettings.ui.h
+++ b/tests/auto/uic/baseline/formwindowsettings.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'formwindowsettings.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/generalpage.ui.h b/tests/auto/uic/baseline/generalpage.ui.h
index 0dcc6ec..ed72265 100644
--- a/tests/auto/uic/baseline/generalpage.ui.h
+++ b/tests/auto/uic/baseline/generalpage.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'generalpage.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/gridpanel.ui.h b/tests/auto/uic/baseline/gridpanel.ui.h
index 1bc2f04..b722753 100644
--- a/tests/auto/uic/baseline/gridpanel.ui.h
+++ b/tests/auto/uic/baseline/gridpanel.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'gridpanel.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/helpdialog.ui.h b/tests/auto/uic/baseline/helpdialog.ui.h
index 269f5b8..b64e251 100644
--- a/tests/auto/uic/baseline/helpdialog.ui.h
+++ b/tests/auto/uic/baseline/helpdialog.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'helpdialog.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/history.ui.h b/tests/auto/uic/baseline/history.ui.h
index 16553df..f151e53 100644
--- a/tests/auto/uic/baseline/history.ui.h
+++ b/tests/auto/uic/baseline/history.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'history.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/identifierpage.ui.h b/tests/auto/uic/baseline/identifierpage.ui.h
index 24aecf8..e60c277 100644
--- a/tests/auto/uic/baseline/identifierpage.ui.h
+++ b/tests/auto/uic/baseline/identifierpage.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'identifierpage.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/imagedialog.ui.h b/tests/auto/uic/baseline/imagedialog.ui.h
index 2f51b65..a22a85e 100644
--- a/tests/auto/uic/baseline/imagedialog.ui.h
+++ b/tests/auto/uic/baseline/imagedialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'imagedialog.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/inputpage.ui.h b/tests/auto/uic/baseline/inputpage.ui.h
index 23f2a0b..938eacb 100644
--- a/tests/auto/uic/baseline/inputpage.ui.h
+++ b/tests/auto/uic/baseline/inputpage.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'inputpage.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/installdialog.ui.h b/tests/auto/uic/baseline/installdialog.ui.h
index e6180f7..1a7166d 100644
--- a/tests/auto/uic/baseline/installdialog.ui.h
+++ b/tests/auto/uic/baseline/installdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'installdialog.ui'
**
-** Created: Thu Jul 10 09:47:34 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/languagesdialog.ui.h b/tests/auto/uic/baseline/languagesdialog.ui.h
index ff837c1..ffdc9c0 100644
--- a/tests/auto/uic/baseline/languagesdialog.ui.h
+++ b/tests/auto/uic/baseline/languagesdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'languagesdialog.ui'
**
-** Created: Fri May 15 16:58:03 2009
-** by: Qt User Interface Compiler version 4.5.2
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/listwidgeteditor.ui.h b/tests/auto/uic/baseline/listwidgeteditor.ui.h
index ac9f801..e848252 100644
--- a/tests/auto/uic/baseline/listwidgeteditor.ui.h
+++ b/tests/auto/uic/baseline/listwidgeteditor.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'listwidgeteditor.ui'
**
-** Created: Mon Jun 16 17:54:30 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/mainwindow.ui.h b/tests/auto/uic/baseline/mainwindow.ui.h
index 11b0196..6a84b18 100644
--- a/tests/auto/uic/baseline/mainwindow.ui.h
+++ b/tests/auto/uic/baseline/mainwindow.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'mainwindow.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/mainwindowbase.ui.h b/tests/auto/uic/baseline/mainwindowbase.ui.h
index 10b028f..ce03ae9 100644
--- a/tests/auto/uic/baseline/mainwindowbase.ui.h
+++ b/tests/auto/uic/baseline/mainwindowbase.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'mainwindowbase.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/mydialog.ui.h b/tests/auto/uic/baseline/mydialog.ui.h
index ac7b458..d3da712 100644
--- a/tests/auto/uic/baseline/mydialog.ui.h
+++ b/tests/auto/uic/baseline/mydialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'mydialog.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/myform.ui.h b/tests/auto/uic/baseline/myform.ui.h
index 74c83f5..45ed883 100644
--- a/tests/auto/uic/baseline/myform.ui.h
+++ b/tests/auto/uic/baseline/myform.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'myform.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/newactiondialog.ui.h b/tests/auto/uic/baseline/newactiondialog.ui.h
index 3fecddb..fc13fbc 100644
--- a/tests/auto/uic/baseline/newactiondialog.ui.h
+++ b/tests/auto/uic/baseline/newactiondialog.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'newactiondialog.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/newdynamicpropertydialog.ui.h b/tests/auto/uic/baseline/newdynamicpropertydialog.ui.h
index f8e5b51..4ee3d98 100644
--- a/tests/auto/uic/baseline/newdynamicpropertydialog.ui.h
+++ b/tests/auto/uic/baseline/newdynamicpropertydialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'newdynamicpropertydialog.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/newform.ui.h b/tests/auto/uic/baseline/newform.ui.h
index 13b5572..2af4836 100644
--- a/tests/auto/uic/baseline/newform.ui.h
+++ b/tests/auto/uic/baseline/newform.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'newform.ui'
**
-** Created: Mon Jun 16 17:56:52 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/orderdialog.ui.h b/tests/auto/uic/baseline/orderdialog.ui.h
index 12d551f..6d6efa7 100644
--- a/tests/auto/uic/baseline/orderdialog.ui.h
+++ b/tests/auto/uic/baseline/orderdialog.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'orderdialog.ui'
**
-** Created: Mon Jun 16 17:55:54 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/outputpage.ui.h b/tests/auto/uic/baseline/outputpage.ui.h
index 0b68cb9..9f071f0 100644
--- a/tests/auto/uic/baseline/outputpage.ui.h
+++ b/tests/auto/uic/baseline/outputpage.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'outputpage.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/pagefold.ui.h b/tests/auto/uic/baseline/pagefold.ui.h
index 5cc5836..d713985 100644
--- a/tests/auto/uic/baseline/pagefold.ui.h
+++ b/tests/auto/uic/baseline/pagefold.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'pagefold.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/paletteeditor.ui.h b/tests/auto/uic/baseline/paletteeditor.ui.h
index ad34964..3b62872 100644
--- a/tests/auto/uic/baseline/paletteeditor.ui.h
+++ b/tests/auto/uic/baseline/paletteeditor.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'paletteeditor.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h b/tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h
index 7072b6b..44d03be 100644
--- a/tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h
+++ b/tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'paletteeditoradvancedbase.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/passworddialog.ui.h b/tests/auto/uic/baseline/passworddialog.ui.h
index be80298..83beeac 100644
--- a/tests/auto/uic/baseline/passworddialog.ui.h
+++ b/tests/auto/uic/baseline/passworddialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'passworddialog.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/pathpage.ui.h b/tests/auto/uic/baseline/pathpage.ui.h
index 257c191..7c39073 100644
--- a/tests/auto/uic/baseline/pathpage.ui.h
+++ b/tests/auto/uic/baseline/pathpage.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'pathpage.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/phrasebookbox.ui.h b/tests/auto/uic/baseline/phrasebookbox.ui.h
index aa132b3..4826676 100644
--- a/tests/auto/uic/baseline/phrasebookbox.ui.h
+++ b/tests/auto/uic/baseline/phrasebookbox.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'phrasebookbox.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/plugindialog.ui.h b/tests/auto/uic/baseline/plugindialog.ui.h
index e4f58c1..4b99b6e 100644
--- a/tests/auto/uic/baseline/plugindialog.ui.h
+++ b/tests/auto/uic/baseline/plugindialog.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'plugindialog.ui'
**
-** Created: Mon Jun 16 17:52:32 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:31 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/preferencesdialog.ui.h b/tests/auto/uic/baseline/preferencesdialog.ui.h
index a1f5ac2..56c5926 100644
--- a/tests/auto/uic/baseline/preferencesdialog.ui.h
+++ b/tests/auto/uic/baseline/preferencesdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'preferencesdialog.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/previewconfigurationwidget.ui.h b/tests/auto/uic/baseline/previewconfigurationwidget.ui.h
index 4a7b694..cc56b4c 100644
--- a/tests/auto/uic/baseline/previewconfigurationwidget.ui.h
+++ b/tests/auto/uic/baseline/previewconfigurationwidget.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'previewconfigurationwidget.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/previewdialogbase.ui.h b/tests/auto/uic/baseline/previewdialogbase.ui.h
index 822990c..4bb2980 100644
--- a/tests/auto/uic/baseline/previewdialogbase.ui.h
+++ b/tests/auto/uic/baseline/previewdialogbase.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'previewdialogbase.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/previewwidget.ui.h b/tests/auto/uic/baseline/previewwidget.ui.h
index 4832430..8076958 100644
--- a/tests/auto/uic/baseline/previewwidget.ui.h
+++ b/tests/auto/uic/baseline/previewwidget.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'previewwidget.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/previewwidgetbase.ui.h b/tests/auto/uic/baseline/previewwidgetbase.ui.h
index 6a5551e..b8d55c8 100644
--- a/tests/auto/uic/baseline/previewwidgetbase.ui.h
+++ b/tests/auto/uic/baseline/previewwidgetbase.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'previewwidgetbase.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/proxy.ui.h b/tests/auto/uic/baseline/proxy.ui.h
index d22edef..3542966 100644
--- a/tests/auto/uic/baseline/proxy.ui.h
+++ b/tests/auto/uic/baseline/proxy.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'proxy.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qfiledialog.ui.h b/tests/auto/uic/baseline/qfiledialog.ui.h
index 396e0d0..356183e 100644
--- a/tests/auto/uic/baseline/qfiledialog.ui.h
+++ b/tests/auto/uic/baseline/qfiledialog.ui.h
@@ -1,9 +1,10 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the QtGui module of the Qt Toolkit.
+** This file is part of the autotests of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'qfiledialog.ui'
**
-** Created: Mon Jun 16 17:51:48 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qpagesetupwidget.ui.h b/tests/auto/uic/baseline/qpagesetupwidget.ui.h
index 4694409..93f5eb4 100644
--- a/tests/auto/uic/baseline/qpagesetupwidget.ui.h
+++ b/tests/auto/uic/baseline/qpagesetupwidget.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'qpagesetupwidget.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qprintpropertieswidget.ui.h b/tests/auto/uic/baseline/qprintpropertieswidget.ui.h
index 626fee7..a2c2e1f 100644
--- a/tests/auto/uic/baseline/qprintpropertieswidget.ui.h
+++ b/tests/auto/uic/baseline/qprintpropertieswidget.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'qprintpropertieswidget.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qprintsettingsoutput.ui.h b/tests/auto/uic/baseline/qprintsettingsoutput.ui.h
index a6360ee..bb00a36 100644
--- a/tests/auto/uic/baseline/qprintsettingsoutput.ui.h
+++ b/tests/auto/uic/baseline/qprintsettingsoutput.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'qprintsettingsoutput.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qprintwidget.ui.h b/tests/auto/uic/baseline/qprintwidget.ui.h
index 99d6486..2600268 100644
--- a/tests/auto/uic/baseline/qprintwidget.ui.h
+++ b/tests/auto/uic/baseline/qprintwidget.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'qprintwidget.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qsqlconnectiondialog.ui.h b/tests/auto/uic/baseline/qsqlconnectiondialog.ui.h
index 165c7d7..37297bf 100644
--- a/tests/auto/uic/baseline/qsqlconnectiondialog.ui.h
+++ b/tests/auto/uic/baseline/qsqlconnectiondialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'qsqlconnectiondialog.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qtgradientdialog.ui.h b/tests/auto/uic/baseline/qtgradientdialog.ui.h
index 26ed776..43521e9 100644
--- a/tests/auto/uic/baseline/qtgradientdialog.ui.h
+++ b/tests/auto/uic/baseline/qtgradientdialog.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'qtgradientdialog.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qtgradienteditor.ui.h b/tests/auto/uic/baseline/qtgradienteditor.ui.h
index 00a72bd..e1365e4 100644
--- a/tests/auto/uic/baseline/qtgradienteditor.ui.h
+++ b/tests/auto/uic/baseline/qtgradienteditor.ui.h
@@ -1,49 +1,50 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the autotests of the Qt Toolkit.
+** This file is part of the tools applications 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.
+** This file may be used under the terms of the GNU General Public
+** License versions 2.0 or 3.0 as published by the Free Software
+** Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Alternatively you may (at
+** your option) use any later version of the GNU General Public
+** License if such license has been publicly approved by Nokia Corporation and/or its subsidiary(-ies)
+** (or its successors, if any) and the KDE Free Qt Foundation. In
+** addition, as a special exception, Trolltech gives you certain
+** additional rights. These rights are described in the Trolltech GPL
+** Exception version 1.2, which can be found at
+** http://qt.nokia.com/products/qt/gplexception/ and in the file
+** GPL_EXCEPTION.txt in this package.
**
-** 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.
+** Please review the following information to ensure GNU General
+** Public Licensing requirements will be met:
+** http://trolltech.com/products/qt/licenses/licensing/opensource/. If
+** you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
+** or contact the sales department at sales@trolltech.com.
**
-** 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.
+** In addition, as a special exception, Trolltech, as the sole
+** copyright holder for Qt Designer, grants users of the Qt/Eclipse
+** Integration plug-in the right for the Qt/Eclipse Integration to
+** link to functionality provided by Qt Designer and its related
+** libraries.
**
-** 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.
+** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE. Trolltech reserves all rights not expressly
+** granted herein.
**
-** 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$
-**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'qtgradienteditor.ui'
**
-** Created: Mon Jun 16 17:50:21 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qtgradientview.ui.h b/tests/auto/uic/baseline/qtgradientview.ui.h
index 809cf5b..d929d6f 100644
--- a/tests/auto/uic/baseline/qtgradientview.ui.h
+++ b/tests/auto/uic/baseline/qtgradientview.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'qtgradientview.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qtgradientviewdialog.ui.h b/tests/auto/uic/baseline/qtgradientviewdialog.ui.h
index 1f34727..8ace8b7 100644
--- a/tests/auto/uic/baseline/qtgradientviewdialog.ui.h
+++ b/tests/auto/uic/baseline/qtgradientviewdialog.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'qtgradientviewdialog.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qtresourceeditordialog.ui.h b/tests/auto/uic/baseline/qtresourceeditordialog.ui.h
index a08a16c..de52a62 100644
--- a/tests/auto/uic/baseline/qtresourceeditordialog.ui.h
+++ b/tests/auto/uic/baseline/qtresourceeditordialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'qtresourceeditordialog.ui'
**
-** Created: Mon Jun 16 17:45:38 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/qttoolbardialog.ui.h b/tests/auto/uic/baseline/qttoolbardialog.ui.h
index 9099553..5651abc 100644
--- a/tests/auto/uic/baseline/qttoolbardialog.ui.h
+++ b/tests/auto/uic/baseline/qttoolbardialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'qttoolbardialog.ui'
**
-** Created: Mon Jun 16 17:42:37 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/querywidget.ui.h b/tests/auto/uic/baseline/querywidget.ui.h
index 8afcf54..e078ed4 100644
--- a/tests/auto/uic/baseline/querywidget.ui.h
+++ b/tests/auto/uic/baseline/querywidget.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'querywidget.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/remotecontrol.ui.h b/tests/auto/uic/baseline/remotecontrol.ui.h
index 3d183f7..eb7adc9 100644
--- a/tests/auto/uic/baseline/remotecontrol.ui.h
+++ b/tests/auto/uic/baseline/remotecontrol.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'remotecontrol.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/saveformastemplate.ui.h b/tests/auto/uic/baseline/saveformastemplate.ui.h
index c46b5e6..ef709df 100644
--- a/tests/auto/uic/baseline/saveformastemplate.ui.h
+++ b/tests/auto/uic/baseline/saveformastemplate.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'saveformastemplate.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/settings.ui.h b/tests/auto/uic/baseline/settings.ui.h
index 98cb6ee..7df5c77 100644
--- a/tests/auto/uic/baseline/settings.ui.h
+++ b/tests/auto/uic/baseline/settings.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'settings.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/signalslotdialog.ui.h b/tests/auto/uic/baseline/signalslotdialog.ui.h
index f3ce8bc..f7e9820 100644
--- a/tests/auto/uic/baseline/signalslotdialog.ui.h
+++ b/tests/auto/uic/baseline/signalslotdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'signalslotdialog.ui'
**
-** Created: Mon Jun 16 16:18:52 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/sslclient.ui.h b/tests/auto/uic/baseline/sslclient.ui.h
index aee0224..bf4014d 100644
--- a/tests/auto/uic/baseline/sslclient.ui.h
+++ b/tests/auto/uic/baseline/sslclient.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'sslclient.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/sslerrors.ui.h b/tests/auto/uic/baseline/sslerrors.ui.h
index f999be0..3131a21 100644
--- a/tests/auto/uic/baseline/sslerrors.ui.h
+++ b/tests/auto/uic/baseline/sslerrors.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'sslerrors.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/statistics.ui.h b/tests/auto/uic/baseline/statistics.ui.h
index 41c31fd..ea9ab00 100644
--- a/tests/auto/uic/baseline/statistics.ui.h
+++ b/tests/auto/uic/baseline/statistics.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'statistics.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/stringlisteditor.ui.h b/tests/auto/uic/baseline/stringlisteditor.ui.h
index 29f2e28..8f0ba8e 100644
--- a/tests/auto/uic/baseline/stringlisteditor.ui.h
+++ b/tests/auto/uic/baseline/stringlisteditor.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'stringlisteditor.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/stylesheeteditor.ui.h b/tests/auto/uic/baseline/stylesheeteditor.ui.h
index a99f274..697fbe0 100644
--- a/tests/auto/uic/baseline/stylesheeteditor.ui.h
+++ b/tests/auto/uic/baseline/stylesheeteditor.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'stylesheeteditor.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/tabbedbrowser.ui.h b/tests/auto/uic/baseline/tabbedbrowser.ui.h
index bebbc59..f347740 100644
--- a/tests/auto/uic/baseline/tabbedbrowser.ui.h
+++ b/tests/auto/uic/baseline/tabbedbrowser.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'tabbedbrowser.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/tablewidgeteditor.ui.h b/tests/auto/uic/baseline/tablewidgeteditor.ui.h
index 5cb0341..7e1a39f 100644
--- a/tests/auto/uic/baseline/tablewidgeteditor.ui.h
+++ b/tests/auto/uic/baseline/tablewidgeteditor.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'tablewidgeteditor.ui'
**
-** Created: Mon Jun 16 17:48:45 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/tetrixwindow.ui.h b/tests/auto/uic/baseline/tetrixwindow.ui.h
index 50ed416..b6b048b 100644
--- a/tests/auto/uic/baseline/tetrixwindow.ui.h
+++ b/tests/auto/uic/baseline/tetrixwindow.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'tetrixwindow.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/textfinder.ui.h b/tests/auto/uic/baseline/textfinder.ui.h
index 546ff17..62c2447 100644
--- a/tests/auto/uic/baseline/textfinder.ui.h
+++ b/tests/auto/uic/baseline/textfinder.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'textfinder.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/topicchooser.ui.h b/tests/auto/uic/baseline/topicchooser.ui.h
index 65cf205..9c4cdf0 100644
--- a/tests/auto/uic/baseline/topicchooser.ui.h
+++ b/tests/auto/uic/baseline/topicchooser.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'topicchooser.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/translatedialog.ui.h b/tests/auto/uic/baseline/translatedialog.ui.h
index ab9604c..14b7c1b 100644
--- a/tests/auto/uic/baseline/translatedialog.ui.h
+++ b/tests/auto/uic/baseline/translatedialog.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'translatedialog.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/translationsettings.ui.h b/tests/auto/uic/baseline/translationsettings.ui.h
index e36545e..d0f5257 100644
--- a/tests/auto/uic/baseline/translationsettings.ui.h
+++ b/tests/auto/uic/baseline/translationsettings.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'translationsettings.ui'
**
-** Created: Mon Sep 1 09:31:03 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/treewidgeteditor.ui.h b/tests/auto/uic/baseline/treewidgeteditor.ui.h
index 43b1fcd..e018974 100644
--- a/tests/auto/uic/baseline/treewidgeteditor.ui.h
+++ b/tests/auto/uic/baseline/treewidgeteditor.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'treewidgeteditor.ui'
**
-** Created: Mon Jun 16 17:47:26 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/trpreviewtool.ui.h b/tests/auto/uic/baseline/trpreviewtool.ui.h
index 1d8bf5e..cd37fb6 100644
--- a/tests/auto/uic/baseline/trpreviewtool.ui.h
+++ b/tests/auto/uic/baseline/trpreviewtool.ui.h
@@ -1,4 +1,5 @@
-/****************************************************************************
+/*
+*********************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Nokia Corporation (qt-info@nokia.com)
@@ -37,13 +38,14 @@
** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
-****************************************************************************/
+*********************************************************************
+*/
/********************************************************************************
** Form generated from reading UI file 'trpreviewtool.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/validators.ui.h b/tests/auto/uic/baseline/validators.ui.h
index 07e114a..c82cac5 100644
--- a/tests/auto/uic/baseline/validators.ui.h
+++ b/tests/auto/uic/baseline/validators.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'validators.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/uic/baseline/wateringconfigdialog.ui.h b/tests/auto/uic/baseline/wateringconfigdialog.ui.h
index 43120a5..0bac30d 100644
--- a/tests/auto/uic/baseline/wateringconfigdialog.ui.h
+++ b/tests/auto/uic/baseline/wateringconfigdialog.ui.h
@@ -1,8 +1,8 @@
/********************************************************************************
** Form generated from reading UI file 'wateringconfigdialog.ui'
**
-** Created: Thu Jul 10 09:47:35 2008
-** by: Qt User Interface Compiler version 4.5.0
+** Created: Tue Aug 18 19:03:32 2009
+** by: Qt User Interface Compiler version 4.6.0
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
diff --git a/tests/auto/utf8/tst_utf8.cpp b/tests/auto/utf8/tst_utf8.cpp
index 0d754b0..f255e6e 100644
--- a/tests/auto/utf8/tst_utf8.cpp
+++ b/tests/auto/utf8/tst_utf8.cpp
@@ -299,10 +299,19 @@ void tst_Utf8::invalidUtf8_data()
void tst_Utf8::invalidUtf8()
{
QFETCH(QByteArray, utf8);
+ QFETCH_GLOBAL(bool, useLocale);
QSharedPointer<QTextDecoder> decoder = QSharedPointer<QTextDecoder>(codec->makeDecoder());
QString decoded = decoder->toUnicode(utf8);
- QVERIFY(decoder->hasFailure());
+
+ // Only enforce correctness on our UTF-8 decoder
+ // The system's UTF-8 codec is sometimes buggy
+ // GNU libc's iconv is known to accept U+FFFF and U+FFFE encoded as UTF-8
+ // OS X's iconv is known to accept those, plus surrogates and codepoints above U+10FFFF
+ if (!useLocale)
+ QVERIFY(decoder->hasFailure());
+ else if (!decoder->hasFailure())
+ qWarning("System codec does not report failure when it should. Should report bug upstream.");
}
QTEST_MAIN(tst_Utf8)
diff --git a/tools/assistant/compat/lib/qassistantclient.cpp b/tools/assistant/compat/lib/qassistantclient.cpp
index 7aa9b1a..50e8597 100644
--- a/tools/assistant/compat/lib/qassistantclient.cpp
+++ b/tools/assistant/compat/lib/qassistantclient.cpp
@@ -75,7 +75,6 @@ static QAssistantClientPrivate *data( const QAssistantClient *client, bool creat
\brief The QAssistantClient class provides a means of using Qt
Assistant as an application's help tool.
- \inmodule QtAssistant
\ingroup helpsystem
\bold{Note:} \e{This class is obsolete and only required when using
diff --git a/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp b/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp
index 6f7c035..4651d2e 100644
--- a/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp
+++ b/tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp
@@ -590,15 +590,24 @@ void QHelpSearchIndexWriter::updateIndex(const QString &collectionFile,
void QHelpSearchIndexWriter::optimizeIndex()
{
- if (QCLuceneIndexReader::indexExists(m_indexFilesFolder)) {
- if (QCLuceneIndexReader::isLocked(m_indexFilesFolder))
- return;
-
- QCLuceneStandardAnalyzer analyzer;
- QCLuceneIndexWriter writer(m_indexFilesFolder, analyzer, false);
- writer.optimize();
- writer.close();
+#if !defined(QT_NO_EXCEPTIONS)
+ try {
+#endif
+ if (QCLuceneIndexReader::indexExists(m_indexFilesFolder)) {
+ if (QCLuceneIndexReader::isLocked(m_indexFilesFolder))
+ return;
+
+ QCLuceneStandardAnalyzer analyzer;
+ QCLuceneIndexWriter writer(m_indexFilesFolder, analyzer, false);
+ writer.optimize();
+ writer.close();
+ }
+#if !defined(QT_NO_EXCEPTIONS)
+ } catch (...) {
+ qWarning("Full Text Search, could not optimize index.");
+ return;
}
+#endif
}
void QHelpSearchIndexWriter::run()
@@ -720,21 +729,30 @@ void QHelpSearchIndexWriter::run()
}
#if !defined(QT_NO_EXCEPTIONS)
} catch (...) {
- qWarning("Full Text Search, could not create index writer in '%s'.", qPrintable(indexPath));
+ qWarning("Full Text Search, could not create index writer in '%s'.",
+ qPrintable(indexPath));
return;
}
#endif
- writer->setMergeFactor(100);
- writer->setMinMergeDocs(1000);
- writer->setMaxFieldLength(QCLuceneIndexWriter::DEFAULT_MAX_FIELD_LENGTH);
+#if !defined(QT_NO_EXCEPTIONS)
+ try {
+#endif
+ writer->setMergeFactor(100);
+ writer->setMinMergeDocs(1000);
+ writer->setMaxFieldLength(QCLuceneIndexWriter::DEFAULT_MAX_FIELD_LENGTH);
+#if !defined(QT_NO_EXCEPTIONS)
+ } catch (...) {
+ qWarning("Full Text Search, could not set writer properties.");
+ return;
+ }
+#endif
QStringList namespaces;
foreach(const QString &namespaceName, registeredDocs) {
mutexLocker.relock();
if (m_cancel) {
- writer->close();
- delete writer;
+ closeIndexWriter(writer);
emit indexingFinished();
return;
}
@@ -777,8 +795,7 @@ void QHelpSearchIndexWriter::run()
mutexLocker.unlock();
}
- writer->close();
- delete writer;
+ closeIndexWriter(writer);
mutexLocker.relock();
if (!m_cancel) {
@@ -813,15 +830,23 @@ bool QHelpSearchIndexWriter::addDocuments(const QList<QUrl> docFiles,
foreach(const QUrl &url, docFiles) {
QCLuceneDocument document;
DocumentHelper helper(url.toString(), engine.fileData(url));
- if (helper.addFieldsToDocument(&document, namespaceName, attrList))
- writer->addDocument(document, analyzer);
-
+ if (helper.addFieldsToDocument(&document, namespaceName, attrList)) {
+#if !defined(QT_NO_EXCEPTIONS)
+ try {
+#endif
+ writer->addDocument(document, analyzer);
+#if !defined(QT_NO_EXCEPTIONS)
+ } catch (...) {
+ qWarning("Full Text Search, could not properly add documents.");
+ return false;
+ }
+#endif
+ }
locker.relock();
if (m_cancel)
return false;
locker.unlock();
}
-
return true;
}
@@ -861,6 +886,19 @@ QList<QUrl> QHelpSearchIndexWriter::indexableFiles(QHelpEngineCore *helpEngine,
return docFiles;
}
+void QHelpSearchIndexWriter::closeIndexWriter(QCLuceneIndexWriter *writer)
+{
+#if !defined(QT_NO_EXCEPTIONS)
+ try {
+#endif
+ writer->close();
+ delete writer;
+#if !defined(QT_NO_EXCEPTIONS)
+ } catch (...) {
+ qWarning("Full Text Search, could not properly close index writer.");
+ }
+#endif
+}
} // namespace clucene
} // namespace fulltextsearch
diff --git a/tools/assistant/lib/qhelpsearchindexwriter_clucene_p.h b/tools/assistant/lib/qhelpsearchindexwriter_clucene_p.h
index e9a917b..d4bb755 100644
--- a/tools/assistant/lib/qhelpsearchindexwriter_clucene_p.h
+++ b/tools/assistant/lib/qhelpsearchindexwriter_clucene_p.h
@@ -104,6 +104,8 @@ private:
QList<QUrl> indexableFiles(QHelpEngineCore *helpEngine,
const QString &namespaceName, const QStringList &attributes) const;
+ void closeIndexWriter(QCLuceneIndexWriter *writer);
+
private:
QMutex mutex;
QWaitCondition waitCondition;
diff --git a/tools/configure/configure.pro b/tools/configure/configure.pro
index eeec62a..06e9fe0 100644
--- a/tools/configure/configure.pro
+++ b/tools/configure/configure.pro
@@ -62,7 +62,7 @@ SOURCES = main.cpp configureapp.cpp environment.cpp tools.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qbytearraymatcher.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qchar.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qhash.cpp \
- $$QT_SOURCE_TREE/src/corelib/tools/qlistdata.cpp \
+ $$QT_SOURCE_TREE/src/corelib/tools/qlist.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qlocale.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qvector.cpp \
$$QT_SOURCE_TREE/src/corelib/codecs/qutfcodec.cpp \
diff --git a/tools/designer/src/lib/sdk/abstractdnditem.qdoc b/tools/designer/src/lib/sdk/abstractdnditem.qdoc
new file mode 100644
index 0000000..ee7dee3
--- /dev/null
+++ b/tools/designer/src/lib/sdk/abstractdnditem.qdoc
@@ -0,0 +1,112 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QDesignerDnDItemInterface
+ \brief The QDesignerDnDItemInterface class provides an interface that is used to manage items
+ during a drag and drop operation.
+ \inmodule QtDesigner
+ \internal
+*/
+
+/*!
+ \enum QDesignerDnDItemInterface::DropType
+
+ This enum describes the result of a drag and drop operation.
+
+ \value MoveDrop The item was moved.
+ \value CopyDrop The item was copied.
+*/
+
+/*!
+ \fn QDesignerDnDItemInterface::QDesignerDnDItemInterface()
+
+ Constructs a new interface to a drag and drop item.
+*/
+
+/*!
+ \fn QDesignerDnDItemInterface::~QDesignerDnDItemInterface()
+
+ Destroys the interface to the item.
+*/
+
+/*!
+ \fn DomUI *QDesignerDnDItemInterface::domUi() const
+
+ Returns a user interface object for the item.
+*/
+
+/*!
+ \fn QWidget *QDesignerDnDItemInterface::widget() const
+
+ Returns the widget being copied or moved in the drag and drop operation.
+
+ \sa source()
+*/
+
+/*!
+ \fn QWidget *QDesignerDnDItemInterface::decoration() const
+
+ Returns the widget used to represent the item.
+*/
+
+/*!
+ \fn QPoint QDesignerDnDItemInterface::hotSpot() const
+
+ Returns the cursor's hotspot.
+
+ \sa QDrag::hotSpot()
+*/
+
+/*!
+ \fn DropType QDesignerDnDItemInterface::type() const
+
+ Returns the type of drag and drop operation in progress.
+*/
+
+/*!
+ \fn QWidget *QDesignerDnDItemInterface::source() const
+
+ Returns the widget that is the source of the drag and drop operation; i.e. the original
+ container of the widget being dragged.
+
+ \sa widget()
+*/
diff --git a/tools/designer/src/lib/sdk/abstracticoncache.qdoc b/tools/designer/src/lib/sdk/abstracticoncache.qdoc
new file mode 100644
index 0000000..64b3926
--- /dev/null
+++ b/tools/designer/src/lib/sdk/abstracticoncache.qdoc
@@ -0,0 +1,130 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QDesignerIconCacheInterface
+ \brief The QDesignerIconCacheInterface class provides an interface to \QD's icon cache.
+ \inmodule QtDesigner
+ \internal
+*/
+
+/*!
+ \fn QDesignerIconCacheInterface::QDesignerIconCacheInterface(QObject *parent)
+
+ Constructs a new interface with the given \a parent.
+*/
+
+/*!
+ \fn QIcon QDesignerIconCacheInterface::nameToIcon(const QString &filePath, const QString &qrcPath)
+
+ Returns the icon associated with the name specified by \a filePath in the resource
+ file specified by \a qrcPath.
+
+ If \a qrcPath refers to a valid resource file, the name used for the file path is a path
+ within those resources; otherwise the file path refers to a local file.
+
+ \sa {The Qt Resource System}, nameToPixmap()
+*/
+
+/*!
+ \fn QPixmap QDesignerIconCacheInterface::nameToPixmap(const QString &filePath, const QString &qrcPath)
+
+ Returns the pixmap associated with the name specified by \a filePath in the resource
+ file specified by \a qrcPath.
+
+ If \a qrcPath refers to a valid resource file, the name used for the file path is a path
+ within those resources; otherwise the file path refers to a local file.
+
+ \sa {The Qt Resource System}, nameToIcon()
+*/
+
+/*!
+ \fn QString QDesignerIconCacheInterface::iconToFilePath(const QIcon &icon) const
+
+ Returns the file path associated with the given \a icon. The file path is a path within
+ an application resources.
+*/
+
+/*!
+ \fn QString QDesignerIconCacheInterface::iconToQrcPath(const QIcon &icon) const
+
+ Returns the path to the resource file that refers to the specified \a icon. The resource
+ path refers to a local file.
+*/
+
+/*!
+ \fn QString QDesignerIconCacheInterface::pixmapToFilePath(const QPixmap &pixmap) const
+
+ Returns the file path associated with the given \a pixmap. The file path is a path within
+ an application resources.
+*/
+
+/*!
+ \fn QString QDesignerIconCacheInterface::pixmapToQrcPath(const QPixmap &pixmap) const
+
+ Returns the path to the resource file that refers to the specified \a pixmap. The resource
+ path refers to a local file.
+*/
+
+/*!
+ \fn QList<QPixmap> QDesignerIconCacheInterface::pixmapList() const
+
+ Returns a list of pixmaps for the icons provided by the icon cache.
+*/
+
+/*!
+ \fn QList<QIcon> QDesignerIconCacheInterface::iconList() const
+
+ Returns a list of icons provided by the icon cache.
+*/
+
+/*!
+ \fn QString QDesignerIconCacheInterface::resolveQrcPath(const QString &filePath, const QString &qrcPath, const QString &workingDirectory) const
+
+ Returns a path to a resource specified by the \a filePath within
+ the resource file located at \a qrcPath. If \a workingDirectory is
+ a valid path to a directory, the path returned will be relative to
+ that directory; otherwise an absolute path is returned.
+
+ \omit
+ ### Needs checking
+ \endomit
+*/
diff --git a/tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc b/tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc
new file mode 100644
index 0000000..8a40254
--- /dev/null
+++ b/tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QDesignerDynamicPropertySheetExtension
+
+ \brief The QDesignerDynamicPropertySheetExtension class allows you to
+ manipulate a widget's dynamic properties in Qt Designer's property editor.
+
+ \sa QDesignerPropertySheetExtension, {QObject#Dynamic Properties}{Dynamic Properties}
+
+ \inmodule QtDesigner
+ \since 4.3
+*/
+
+/*!
+ \fn QDesignerDynamicPropertySheetExtension::~QDesignerDynamicPropertySheetExtension()
+
+ Destroys the dynamic property sheet extension.
+*/
+
+/*!
+ \fn bool QDesignerDynamicPropertySheetExtension::dynamicPropertiesAllowed() const
+
+ Returns true if the widget supports dynamic properties; otherwise returns false.
+*/
+
+/*!
+ \fn int QDesignerDynamicPropertySheetExtension::addDynamicProperty(const QString &propertyName, const QVariant &value)
+
+ Adds a dynamic property named \a propertyName and sets its value to \a value.
+ Returns the index of the property if it was added successfully; otherwise returns -1 to
+ indicate failure.
+*/
+
+/*!
+ \fn bool QDesignerDynamicPropertySheetExtension::removeDynamicProperty(int index)
+
+ Removes the dynamic property at the given \a index.
+ Returns true if the operation succeeds; otherwise returns false.
+*/
+
+/*!
+ \fn bool QDesignerDynamicPropertySheetExtension::isDynamicProperty(int index) const
+
+ Returns true if the property at the given \a index is a dynamic property; otherwise
+ returns false.
+*/
+
+/*!
+ \fn bool QDesignerDynamicPropertySheetExtension::canAddDynamicProperty(const QString &propertyName) const
+
+ Returns true if \a propertyName is a valid, unique name for a dynamic
+ property; otherwise returns false.
+
+*/
diff --git a/tools/designer/src/lib/sdk/layoutdecoration.qdoc b/tools/designer/src/lib/sdk/layoutdecoration.qdoc
new file mode 100644
index 0000000..9fe87d3
--- /dev/null
+++ b/tools/designer/src/lib/sdk/layoutdecoration.qdoc
@@ -0,0 +1,163 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QDesignerLayoutDecorationExtension
+ \brief The QDesignerLayoutDecorationExtension class provides an extension to a layout in \QD.
+ \inmodule QtDesigner
+ \internal
+*/
+
+/*!
+ \enum QDesignerLayoutDecorationExtension::InsertMode
+
+ This enum describes the modes that are used to insert items into a layout.
+
+ \value InsertWidgetMode Widgets are inserted into empty cells in a layout.
+ \value InsertRowMode Whole rows are inserted into a vertical or grid layout.
+ \value InsertColumnMode Whole columns are inserted into a horizontal or grid layout.
+*/
+
+/*!
+ \fn virtual QDesignerLayoutDecorationExtension::~QDesignerLayoutDecorationExtension()
+
+ Destroys the extension.
+*/
+
+/*!
+ \fn virtual QList<QWidget*> QDesignerLayoutDecorationExtension::widgets(QLayout *layout) const
+
+ Returns the widgets that are managed by the given \a layout.
+
+ \sa insertWidget(), removeWidget()
+*/
+
+/*!
+ \fn QRect QDesignerLayoutDecorationExtension::itemInfo(int index) const
+
+ Returns the rectangle covered by the item at the given \a index in the layout.
+*/
+
+/*!
+ \fn int QDesignerLayoutDecorationExtension::indexOf(QWidget *widget) const
+
+ Returns the index of the specified \a widget in the layout.
+*/
+
+/*!
+ \fn int QDesignerLayoutDecorationExtension::indexOf(QLayoutItem *item) const
+
+ Returns the index of the specified layout \a item.
+*/
+
+/*!
+ \fn QDesignerLayoutDecorationExtension::InsertMode QDesignerLayoutDecorationExtension::currentInsertMode() const
+
+ Returns the current insertion mode.
+*/
+
+/*!
+ \fn int QDesignerLayoutDecorationExtension::currentIndex() const
+
+ Returns the current index in the layout.
+*/
+
+/*!
+ \fn QPair<int, int> QDesignerLayoutDecorationExtension::currentCell() const
+
+ Returns a pair containing the row and column of the current cell in the layout.
+*/
+
+/*!
+ \fn void QDesignerLayoutDecorationExtension::insertWidget(QWidget *widget, const QPair<int, int> &cell)
+
+ Inserts the given \a widget into the specified \a cell in the layout.
+
+ \sa removeWidget()
+*/
+
+/*!
+ \fn void QDesignerLayoutDecorationExtension::removeWidget(QWidget *widget)
+
+ Removes the specified \a widget from the layout.
+
+ \sa insertWidget()
+*/
+
+/*!
+ \fn void QDesignerLayoutDecorationExtension::insertRow(int row)
+
+ Inserts a new row into the form at the position specified by \a row.
+*/
+
+/*!
+ \fn void QDesignerLayoutDecorationExtension::insertColumn(int column)
+
+ Inserts a new column into the form at the position specified by \a column.
+*/
+
+/*!
+ \fn void QDesignerLayoutDecorationExtension::simplify()
+
+ Simplifies the layout by removing unnecessary empty rows and columns, and by changing the
+ number of rows or columns spanned by widgets.
+*/
+
+/*!
+ \fn int QDesignerLayoutDecorationExtension::findItemAt(const QPoint &position) const
+
+ Returns the index of the item in the layout that covers the given \a position.
+*/
+
+/*!
+ \fn int QDesignerLayoutDecorationExtension::findItemAt(int row, int column) const
+
+ Returns the item in the layout that occupies the specified \a row and \a column in the layout.
+
+ Currently, this only applies to grid layouts.
+*/
+
+/*!
+ \fn void QDesignerLayoutDecorationExtension::adjustIndicator(const QPoint &position, int index)
+
+ Adjusts the indicator for the item specified by \a index so that
+ it lies at the given \a position on the form.
+*/
diff --git a/tools/designer/src/lib/sdk/membersheet.qdoc b/tools/designer/src/lib/sdk/membersheet.qdoc
new file mode 100644
index 0000000..441a503
--- /dev/null
+++ b/tools/designer/src/lib/sdk/membersheet.qdoc
@@ -0,0 +1,263 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QDesignerMemberSheetExtension
+
+ \brief The QDesignerMemberSheetExtension class allows you to
+ manipulate a widget's member functions which is displayed when
+ configuring connections using Qt Designer's mode for editing
+ signals and slots.
+
+ \inmodule QtDesigner
+
+ QDesignerMemberSheetExtension is a collection of functions that is
+ typically used to query a widget's member functions, and to
+ manipulate the member functions' appearance in \QD's signals and
+ slots editing mode. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 2
+
+ When implementing a custom widget plugin, a pointer to \QD's
+ current QDesignerFormEditorInterface object (\c formEditor in the
+ example above) is provided by the
+ QDesignerCustomWidgetInterface::initialize() function's parameter.
+
+ The member sheet (and any other extension), can be retrieved by
+ querying \QD's extension manager using the qt_extension()
+ function. When you want to release the extension, you only need to
+ delete the pointer.
+
+ All widgets have a default member sheet used in \QD's signals and
+ slots editing mode with the widget's member functions. But
+ QDesignerMemberSheetExtension also provides an interface for
+ creating custom member sheet extensions.
+
+ \warning \QD uses the QDesignerMemberSheetExtension to facilitate
+ the signal and slot editing mode. Whenever a connection between
+ two widgets is requested, \QD will query for the widgets' member
+ sheet extensions. If a widget has an implemented member sheet
+ extension, this extension will override the default member sheet.
+
+ To create a member sheet extension, your extension class must
+ inherit from both QObject and QDesignerMemberSheetExtension. Then,
+ since we are implementing an interface, we must ensure that it's
+ made known to the meta object system using the Q_INTERFACES()
+ macro:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 3
+
+ This enables \QD to use qobject_cast() to query for
+ supported interfaces using nothing but a QObject pointer.
+
+ In \QD the extensions are not created until they are
+ required. For that reason, when implementing a member sheet
+ extension, you must also create a QExtensionFactory, i.e a class
+ that is able to make an instance of your extension, and register
+ it using \QD's \l {QExtensionManager}{extension manager}.
+
+ When a widget's member sheet extension is required, \QD's \l
+ {QExtensionManager}{extension manager} will run through all its
+ registered factories calling QExtensionFactory::createExtension()
+ for each until the first one that is able to create a member sheet
+ extension for that widget, is found. This factory will then make
+ an instance of the extension. If no such factory is found, \QD
+ will use the default member sheet.
+
+ There are four available types of extensions in \QD:
+ QDesignerContainerExtension, QDesignerMemberSheetExtension,
+ QDesignerPropertySheetExtension and
+ QDesignerTaskMenuExtension. \QD's behavior is the same whether the
+ requested extension is associated with a multi page container, a
+ member sheet, a property sheet or a task menu.
+
+ The QExtensionFactory class provides a standard extension
+ factory, and can also be used as an interface for custom
+ extension factories. You can either create a new
+ QExtensionFactory and reimplement the
+ QExtensionFactory::createExtension() function. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 4
+
+ Or you can use an existing factory, expanding the
+ QExtensionFactory::createExtension() function to make the factory
+ able to create a member sheet extension as well. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 5
+
+ For a complete example using an extension class, see \l
+ {designer/taskmenuextension}{Task Menu Extension example}. The
+ example shows how to create a custom widget plugin for Qt
+ Designer, and how to to use the QDesignerTaskMenuExtension class
+ to add custom items to \QD's task menu.
+
+ \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
+ Extensions}
+*/
+
+/*!
+ \fn QDesignerMemberSheetExtension::~QDesignerMemberSheetExtension()
+
+ Destroys the member sheet extension.
+*/
+
+/*!
+ \fn int QDesignerMemberSheetExtension::count() const
+
+ Returns the extension's number of member functions.
+*/
+
+/*!
+ \fn int QDesignerMemberSheetExtension::indexOf(const QString &name) const
+
+ Returns the index of the member function specified by the given \a
+ name.
+
+ \sa memberName()
+*/
+
+/*!
+ \fn QString QDesignerMemberSheetExtension::memberName(int index) const
+
+ Returns the name of the member function with the given \a index.
+
+ \sa indexOf()
+*/
+
+/*!
+ \fn QString QDesignerMemberSheetExtension::memberGroup(int index) const
+
+ Returns the name of the member group specified for the function
+ with the given \a index.
+
+ \sa indexOf(), setMemberGroup()
+*/
+
+/*!
+ \fn void QDesignerMemberSheetExtension::setMemberGroup(int index, const QString &group)
+
+ Sets the member group of the member function with the given \a
+ index, to \a group.
+
+ \sa indexOf(), memberGroup()
+*/
+
+/*!
+ \fn bool QDesignerMemberSheetExtension::isVisible(int index) const
+
+ Returns true if the member function with the given \a index is
+ visible in \QD's signal and slot editor, otherwise false.
+
+ \sa indexOf(), setVisible()
+*/
+
+/*!
+ \fn void QDesignerMemberSheetExtension::setVisible(int index, bool visible)
+
+ If \a visible is true, the member function with the given \a index
+ is visible in \QD's signals and slots editing mode; otherwise the
+ member function is hidden.
+
+ \sa indexOf(), isVisible()
+*/
+
+/*!
+ \fn virtual bool QDesignerMemberSheetExtension::isSignal(int index) const
+
+ Returns true if the member function with the given \a index is a
+ signal, otherwise false.
+
+ \sa indexOf()
+*/
+
+/*!
+ \fn bool QDesignerMemberSheetExtension::isSlot(int index) const
+
+ Returns true if the member function with the given \a index is a
+ slot, otherwise false.
+
+ \sa indexOf()
+*/
+
+/*!
+ \fn bool QDesignerMemberSheetExtension::inheritedFromWidget(int index) const
+
+ Returns true if the member function with the given \a index is
+ inherited from QWidget, otherwise false.
+
+ \sa indexOf()
+*/
+
+/*!
+ \fn QString QDesignerMemberSheetExtension::declaredInClass(int index) const
+
+ Returns the name of the class in which the member function with
+ the given \a index is declared.
+
+ \sa indexOf()
+*/
+
+/*!
+ \fn QString QDesignerMemberSheetExtension::signature(int index) const
+
+ Returns the signature of the member function with the given \a
+ index.
+
+ \sa indexOf()
+*/
+
+/*!
+ \fn QList<QByteArray> QDesignerMemberSheetExtension::parameterTypes(int index) const
+
+ Returns the parameter types of the member function with the given
+ \a index, as a QByteArray list.
+
+ \sa indexOf(), parameterNames()
+*/
+
+/*!
+ \fn QList<QByteArray> QDesignerMemberSheetExtension::parameterNames(int index) const
+
+ Returns the parameter names of the member function with the given
+ \a index, as a QByteArray list.
+
+ \sa indexOf(), parameterTypes()
+*/
diff --git a/tools/designer/src/lib/sdk/propertysheet.qdoc b/tools/designer/src/lib/sdk/propertysheet.qdoc
new file mode 100644
index 0000000..d0389db
--- /dev/null
+++ b/tools/designer/src/lib/sdk/propertysheet.qdoc
@@ -0,0 +1,302 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QDesignerPropertySheetExtension
+
+ \brief The QDesignerPropertySheetExtension class allows you to
+ manipulate a widget's properties which is displayed in Qt
+ Designer's property editor.
+
+ \sa QDesignerDynamicPropertySheetExtension
+
+ \inmodule QtDesigner
+
+ QDesignerPropertySheetExtension provides a collection of functions that
+ are typically used to query a widget's properties, and to
+ manipulate the properties' appearance in the property editor. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 15
+
+ Note that if you change the value of a property using the
+ QDesignerPropertySheetExtension::setProperty() function, the undo
+ stack is not updated. To ensure that a property's value can be
+ reverted using the undo stack, you must use the
+ QDesignerFormWindowCursorInterface::setProperty() function, or its
+ buddy \l
+ {QDesignerFormWindowCursorInterface::setWidgetProperty()}{setWidgetProperty()},
+ instead.
+
+ When implementing a custom widget plugin, a pointer to \QD's
+ current QDesignerFormEditorInterface object (\c formEditor in the
+ example above) is provided by the
+ QDesignerCustomWidgetInterface::initialize() function's parameter.
+
+ The property sheet, or any other extension, can be retrieved by
+ querying \QD's extension manager using the qt_extension()
+ function. When you want to release the extension, you only need to
+ delete the pointer.
+
+ All widgets have a default property sheet which populates \QD's
+ property editor with the widget's properties (i.e the ones defined
+ with the Q_PROPERTY() macro). But QDesignerPropertySheetExtension
+ also provides an interface for creating custom property sheet
+ extensions.
+
+ \warning \QD uses the QDesignerPropertySheetExtension to feed its
+ property editor. Whenever a widget is selected in its workspace,
+ \QD will query for the widget's property sheet extension. If the
+ selected widget has an implemented property sheet extension, this
+ extension will override the default property sheet.
+
+ To create a property sheet extension, your extension class must
+ inherit from both QObject and
+ QDesignerPropertySheetExtension. Then, since we are implementing
+ an interface, we must ensure that it's made known to the meta
+ object system using the Q_INTERFACES() macro:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 16
+
+ This enables \QD to use qobject_cast() to query for supported
+ interfaces using nothing but a QObject pointer.
+
+ In \QD the extensions are not created until they are
+ required. For that reason, when implementing a property sheet
+ extension, you must also create a QExtensionFactory, i.e a class
+ that is able to make an instance of your extension, and register
+ it using \QD's \l {QExtensionManager}{extension manager}.
+
+ When a property sheet extension is required, \QD's \l
+ {QExtensionManager}{extension manager} will run through all its
+ registered factories calling QExtensionFactory::createExtension()
+ for each until the first one that is able to create a property
+ sheet extension for the selected widget, is found. This factory
+ will then make an instance of the extension. If no such factory
+ can be found, \QD will use the default property sheet.
+
+ There are four available types of extensions in \QD:
+ QDesignerContainerExtension, QDesignerMemberSheetExtension,
+ QDesignerPropertySheetExtension and QDesignerTaskMenuExtension. Qt
+ Designer's behavior is the same whether the requested extension is
+ associated with a multi page container, a member sheet, a property
+ sheet or a task menu.
+
+ The QExtensionFactory class provides a standard extension factory,
+ and can also be used as an interface for custom extension
+ factories. You can either create a new QExtensionFactory and
+ reimplement the QExtensionFactory::createExtension() function. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 17
+
+ Or you can use an existing factory, expanding the
+ QExtensionFactory::createExtension() function to make the factory
+ able to create a property sheet extension extension as well. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 18
+
+ For a complete example using an extension class, see the \l
+ {designer/taskmenuextension}{Task Menu Extension example}. The
+ example shows how to create a custom widget plugin for Qt
+ Designer, and how to to use the QDesignerTaskMenuExtension class
+ to add custom items to \QD's task menu.
+
+ \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
+ Extensions}
+*/
+
+/*!
+ \fn QDesignerPropertySheetExtension::~QDesignerPropertySheetExtension()
+
+ Destroys the property sheet extension.
+*/
+
+/*!
+ \fn int QDesignerPropertySheetExtension::count() const
+
+ Returns the selected widget's number of properties.
+*/
+
+/*!
+ \fn int QDesignerPropertySheetExtension::indexOf(const QString &name) const
+
+ Returns the index for a given property \a name.
+
+ \sa propertyName()
+*/
+
+/*!
+ \fn QString QDesignerPropertySheetExtension::propertyName(int index) const
+
+ Returns the name of the property at the given \a index.
+
+ \sa indexOf()
+*/
+
+/*!
+ \fn QString QDesignerPropertySheetExtension::propertyGroup(int index) const
+
+ Returns the property group for the property at the given \a index.
+
+ \QD's property editor supports property groups, i.e. sections of
+ related properties. A property can be related to a group using the
+ setPropertyGroup() function. The default group of any property is
+ the name of the class that defines it. For example, the
+ QObject::objectName property appears within the QObject property
+ group.
+
+ \sa indexOf(), setPropertyGroup()
+*/
+
+/*!
+ \fn void QDesignerPropertySheetExtension::setPropertyGroup(int index, const QString &group)
+
+ Sets the property group for the property at the given \a index to
+ \a group.
+
+ Relating a property to a group makes it appear within that group's
+ section in the property editor. The default property group of any
+ property is the name of the class that defines it. For example,
+ the QObject::objectName property appears within the QObject
+ property group.
+
+ \sa indexOf(), property(), propertyGroup()
+*/
+
+/*!
+ \fn bool QDesignerPropertySheetExtension::hasReset(int index) const
+
+ Returns true if the property at the given \a index has a reset
+ button in \QD's property editor, otherwise false.
+
+ \sa indexOf(), reset()
+*/
+
+/*!
+ \fn bool QDesignerPropertySheetExtension::reset(int index)
+
+ Resets the value of the property at the given \a index, to the
+ default value. Returns true if a default value could be found, otherwise false.
+
+ \sa indexOf(), hasReset(), isChanged()
+*/
+
+/*!
+ \fn bool QDesignerPropertySheetExtension::isVisible(int index) const
+
+ Returns true if the property at the given \a index is visible in
+ \QD's property editor, otherwise false.
+
+ \sa indexOf(), setVisible()
+*/
+
+/*!
+ \fn void QDesignerPropertySheetExtension::setVisible(int index, bool visible)
+
+ If \a visible is true, the property at the given \a index is
+ visible in \QD's property editor; otherwise the property is
+ hidden.
+
+ \sa indexOf(), isVisible()
+*/
+
+/*!
+ \fn bool QDesignerPropertySheetExtension::isAttribute(int index) const
+
+ Returns true if the property at the given \a index is an attribute,
+ which will be \e excluded from the UI file, otherwise false.
+
+ \sa indexOf(), setAttribute()
+*/
+
+/*!
+ \fn void QDesignerPropertySheetExtension::setAttribute(int index, bool attribute)
+
+ If \a attribute is true, the property at the given \a index is
+ made an attribute which will be \e excluded from the UI file;
+ otherwise it will be included.
+
+ \sa indexOf(), isAttribute()
+*/
+
+/*!
+ \fn QVariant QDesignerPropertySheetExtension::property(int index) const
+
+ Returns the value of the property at the given \a index.
+
+ \sa indexOf(), setProperty(), propertyGroup()
+*/
+
+/*!
+ \fn void QDesignerPropertySheetExtension::setProperty(int index, const QVariant &value)
+
+ Sets the \a value of the property at the given \a index.
+
+ \warning If you change the value of a property using this
+ function, the undo stack is not updated. To ensure that a
+ property's value can be reverted using the undo stack, you must
+ use the QDesignerFormWindowCursorInterface::setProperty()
+ function, or its buddy \l
+ {QDesignerFormWindowCursorInterface::setWidgetProperty()}{setWidgetProperty()},
+ instead.
+
+ \sa indexOf(), property(), propertyGroup()
+*/
+
+/*!
+ \fn bool QDesignerPropertySheetExtension::isChanged(int index) const
+
+ Returns true if the value of the property at the given \a index
+ differs from the property's default value, otherwise false.
+
+ \sa indexOf(), setChanged(), reset()
+*/
+
+/*!
+ \fn void QDesignerPropertySheetExtension::setChanged(int index, bool changed)
+
+ Sets whether the property at the given \a index is different from
+ its default value, or not, depending on the \a changed parameter.
+
+ \sa indexOf(), isChanged()
+*/
diff --git a/tools/designer/src/lib/sdk/taskmenu.qdoc b/tools/designer/src/lib/sdk/taskmenu.qdoc
new file mode 100644
index 0000000..698b339
--- /dev/null
+++ b/tools/designer/src/lib/sdk/taskmenu.qdoc
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QDesignerTaskMenuExtension
+ \brief The QDesignerTaskMenuExtension class allows you to add custom
+ menu entries to Qt Designer's task menu.
+ \inmodule QtDesigner
+
+ QDesignerTaskMenuExtension provides an interface for creating
+ custom task menu extensions. It is typically used to create task
+ menu entries that are specific to a plugin in \QD.
+
+ \QD uses the QDesignerTaskMenuExtension to feed its task
+ menu. Whenever a task menu is requested, \QD will query
+ for the selected widget's task menu extension.
+
+ \image taskmenuextension-example-faded.png
+
+ A task menu extension is a collection of QActions. The actions
+ appear as entries in the task menu when the plugin with the
+ specified extension is selected. The image above shows the custom
+ \gui {Edit State...} action which appears in addition to \QD's
+ default task menu entries: \gui Cut, \gui Copy, \gui Paste etc.
+
+ To create a custom task menu extension, your extension class must
+ inherit from both QObject and QDesignerTaskMenuExtension. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 9
+
+ Since we are implementing an interface, we must ensure that it
+ is made known to the meta-object system using the Q_INTERFACES()
+ macro. This enables \QD to use the qobject_cast() function to
+ query for supported interfaces using nothing but a QObject
+ pointer.
+
+ You must reimplement the taskActions() function to return a list
+ of actions that will be included in \QD task menu. Optionally, you
+ can reimplement the preferredEditAction() function to set the
+ action that is invoked when selecting your plugin and pressing
+ \key F2. The preferred edit action must be one of the actions
+ returned by taskActions() and, if it's not defined, pressing the
+ \key F2 key will simply be ignored.
+
+ In \QD, extensions are not created until they are required. A
+ task menu extension, for example, is created when you click the
+ right mouse button over a widget in \QD's workspace. For that
+ reason you must also construct an extension factory, using either
+ QExtensionFactory or a subclass, and register it using \QD's
+ \l {QExtensionManager}{extension manager}.
+
+ When a task menu extension is required, \QD's \l
+ {QExtensionManager}{extension manager} will run through all its
+ registered factories calling QExtensionFactory::createExtension()
+ for each until it finds one that is able to create a task menu
+ extension for the selected widget. This factory will then make an
+ instance of the extension.
+
+ There are four available types of extensions in \QD:
+ QDesignerContainerExtension, QDesignerMemberSheetExtension,
+ QDesignerPropertySheetExtension, and QDesignerTaskMenuExtension.
+ \QD's behavior is the same whether the requested extension is
+ associated with a container, a member sheet, a property sheet or a
+ task menu.
+
+ The QExtensionFactory class provides a standard extension factory,
+ and can also be used as an interface for custom extension
+ factories. You can either create a new QExtensionFactory and
+ reimplement the QExtensionFactory::createExtension() function. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 10
+
+ Or you can use an existing factory, expanding the
+ QExtensionFactory::createExtension() function to make the factory
+ able to create a task menu extension as well. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 11
+
+ For a complete example using the QDesignerTaskMenuExtension class,
+ see the \l {designer/taskmenuextension}{Task Menu Extension
+ example}. The example shows how to create a custom widget plugin
+ for \QD, and how to to use the QDesignerTaskMenuExtension
+ class to add custom items to \QD's task menu.
+
+ \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
+ Extensions}
+*/
+
+/*!
+ \fn QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()
+
+ Destroys the task menu extension.
+*/
+
+/*!
+ \fn QAction *QDesignerTaskMenuExtension::preferredEditAction() const
+
+ Returns the action that is invoked when selecting a plugin with
+ the specified extension and pressing \key F2.
+
+ The action must be one of the actions returned by taskActions().
+*/
+
+/*!
+ \fn QList<QAction*> QDesignerTaskMenuExtension::taskActions() const
+
+ Returns the task menu extension as a list of actions which will be
+ included in \QD's task menu when a plugin with the specified
+ extension is selected.
+
+ The function must be reimplemented to add actions to the list.
+*/
diff --git a/tools/designer/src/lib/uilib/container.qdoc b/tools/designer/src/lib/uilib/container.qdoc
new file mode 100644
index 0000000..93c51ea
--- /dev/null
+++ b/tools/designer/src/lib/uilib/container.qdoc
@@ -0,0 +1,186 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QDesignerContainerExtension
+ \brief The QDesignerContainerExtension class allows you to add pages to
+ a custom multi-page container in Qt Designer's workspace.
+ \inmodule QtDesigner
+
+ QDesignerContainerExtension provide an interface for creating
+ custom container extensions. A container extension consists of a
+ collection of functions that \QD needs to manage a multi-page
+ container plugin, and a list of the container's pages.
+
+ \image containerextension-example.png
+
+ \warning This is \e not an extension for container plugins in
+ general, only custom \e multi-page containers.
+
+ To create a container extension, your extension class must inherit
+ from both QObject and QDesignerContainerExtension. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 6
+
+ Since we are implementing an interface, we must ensure that it's
+ made known to the meta object system using the Q_INTERFACES()
+ macro. This enables \QD to use the qobject_cast() function to
+ query for supported interfaces using nothing but a QObject
+ pointer.
+
+ You must reimplement several functions to enable \QD to manage a
+ custom multi-page container widget: \QD uses count() to keep track
+ of the number pages in your container, widget() to return the page
+ at a given index in the list of the container's pages, and
+ currentIndex() to return the list index of the selected page. \QD
+ uses the addWidget() function to add a given page to the
+ container, expecting it to be appended to the list of pages, while
+ it expects the insertWidget() function to add a given page to the
+ container by inserting it at a given index.
+
+ In \QD the extensions are not created until they are
+ required. For that reason you must also create a
+ QExtensionFactory, i.e a class that is able to make an instance of
+ your extension, and register it using \QD's \l
+ {QExtensionManager}{extension manager}.
+
+ When a container extension is required, \QD's \l
+ {QExtensionManager}{extension manager} will run through all its
+ registered factories calling QExtensionFactory::createExtension()
+ for each until the first one that is able to create a container
+ extension, is found. This factory will then create the extension
+ for the plugin.
+
+ There are four available types of extensions in \QD:
+ QDesignerContainerExtension , QDesignerMemberSheetExtension,
+ QDesignerPropertySheetExtension and QDesignerTaskMenuExtension.
+ \QD's behavior is the same whether the requested extension is
+ associated with a multi page container, a member sheet, a property
+ sheet or a task menu.
+
+ The QExtensionFactory class provides a standard extension factory,
+ and can also be used as an interface for custom extension
+ factories. You can either create a new QExtensionFactory and
+ reimplement the QExtensionFactory::createExtension() function. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 7
+
+ Or you can use an existing factory, expanding the
+ QExtensionFactory::createExtension() function to make the factory
+ able to create a container extension as well. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 8
+
+ For a complete example using the QDesignerContainerExtension
+ class, see the \l {designer/containerextension}{Container
+ Extension example}. The example shows how to create a custom
+ multi-page plugin for \QD.
+
+ \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
+ Extensions}
+*/
+
+/*!
+ \fn QDesignerContainerExtension::~QDesignerContainerExtension()
+
+ Destroys the extension.
+*/
+
+/*!
+ \fn int QDesignerContainerExtension::count() const
+
+ Returns the number of pages in the container.
+*/
+
+/*!
+ \fn QWidget *QDesignerContainerExtension::widget(int index) const
+
+ Returns the page at the given \a index in the extension's list of
+ pages.
+
+ \sa addWidget(), insertWidget()
+*/
+
+/*!
+ \fn int QDesignerContainerExtension::currentIndex() const
+
+ Returns the index of the currently selected page in the
+ container.
+
+ \sa setCurrentIndex()
+*/
+
+/*!
+ \fn void QDesignerContainerExtension::setCurrentIndex(int index)
+
+ Sets the currently selected page in the container to be the
+ page at the given \a index in the extension's list of pages.
+
+ \sa currentIndex()
+*/
+
+/*!
+ \fn void QDesignerContainerExtension::addWidget(QWidget *page)
+
+ Adds the given \a page to the container by appending it to the
+ extension's list of pages.
+
+ \sa insertWidget(), remove(), widget()
+*/
+
+/*!
+ \fn void QDesignerContainerExtension::insertWidget(int index, QWidget *page)
+
+ Adds the given \a page to the container by inserting it at the
+ given \a index in the extension's list of pages.
+
+ \sa addWidget(), remove(), widget()
+*/
+
+/*!
+ \fn void QDesignerContainerExtension::remove(int index)
+
+ Removes the page at the given \a index from the extension's list
+ of pages.
+
+ \sa addWidget(), insertWidget()
+*/
diff --git a/tools/designer/src/lib/uilib/customwidget.qdoc b/tools/designer/src/lib/uilib/customwidget.qdoc
new file mode 100644
index 0000000..41fbf21
--- /dev/null
+++ b/tools/designer/src/lib/uilib/customwidget.qdoc
@@ -0,0 +1,309 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at http://qt.nokia.com/contact.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \class QDesignerCustomWidgetInterface
+
+ \brief The QDesignerCustomWidgetInterface class enables Qt Designer
+ to access and construct custom widgets.
+
+ \inmodule QtDesigner
+
+ QDesignerCustomWidgetInterface provides a custom widget with an
+ interface. The class contains a set of functions that must be subclassed
+ to return basic information about the widget, such as its class name and
+ the name of its header file. Other functions must be implemented to
+ initialize the plugin when it is loaded, and to construct instances of
+ the custom widget for \QD to use.
+
+ When implementing a custom widget you must subclass
+ QDesignerCustomWidgetInterface to expose your widget to \QD. For
+ example, this is the declaration for the plugin used in the
+ \l{Custom Widget Plugin Example}{Custom Widget Plugin example} that
+ enables an analog clock custom widget to be used by \QD:
+
+ \snippet examples/designer/customwidgetplugin/customwidgetplugin.h 0
+
+ Note that the only part of the class definition that is specific
+ to this particular custom widget is the class name. In addition,
+ since we are implementing an interface, we must ensure that it's
+ made known to the meta object system using the Q_INTERFACES()
+ macro. This enables \QD to use the qobject_cast() function to
+ query for supported interfaces using nothing but a QObject
+ pointer.
+
+ After \QD loads a custom widget plugin, it calls the interface's
+ initialize() function to enable it to set up any resources that it
+ may need. This function is called with a QDesignerFormEditorInterface
+ parameter that provides the plugin with a gateway to all of \QD's API.
+
+ \QD constructs instances of the custom widget by calling the plugin's
+ createWidget() function with a suitable parent widget. Plugins must
+ construct and return an instance of a custom widget with the specified
+ parent widget.
+
+ In the implementation of the class you must remember to export
+ your custom widget plugin to \QD using the Q_EXPORT_PLUGIN2()
+ macro. For example, if a library called \c libcustomwidgetplugin.so
+ (on Unix) or \c libcustomwidget.dll (on Windows) contains a widget
+ class called \c MyCustomWidget, we can export it by adding the
+ following line to the file containing the plugin implementation:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 14
+
+ This macro ensures that \QD can access and construct the custom widget.
+ Without this macro, there is no way for \QD to use it.
+
+ When implementing a custom widget plugin, you build it as a
+ separate library. If you want to include several custom widget
+ plugins in the same library, you must in addition subclass
+ QDesignerCustomWidgetCollectionInterface.
+
+ \warning If your custom widget plugin contains QVariant
+ properties, be aware that only the following \l
+ {QVariant::Type}{types} are supported:
+
+ \list
+ \o QVariant::ByteArray
+ \o QVariant::Bool
+ \o QVariant::Color
+ \o QVariant::Cursor
+ \o QVariant::Date
+ \o QVariant::DateTime
+ \o QVariant::Double
+ \o QVariant::Int
+ \o QVariant::Point
+ \o QVariant::Rect
+ \o QVariant::Size
+ \o QVariant::SizePolicy
+ \o QVariant::String
+ \o QVariant::Time
+ \o QVariant::UInt
+ \endlist
+
+ For a complete example using the QDesignerCustomWidgetInterface
+ class, see the \l {designer/customwidgetplugin}{Custom Widget
+ Example}. The example shows how to create a custom widget plugin
+ for \QD.
+
+ \sa QDesignerCustomWidgetCollectionInterface {Creating Custom
+ Widgets for Qt Designer}
+*/
+
+/*!
+ \fn QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface()
+
+ Destroys the custom widget interface.
+*/
+
+/*!
+ \fn QString QDesignerCustomWidgetInterface::name() const
+
+ Returns the class name of the custom widget supplied by the interface.
+
+ The name returned \e must be identical to the class name used for the
+ custom widget.
+*/
+
+/*!
+ \fn QString QDesignerCustomWidgetInterface::group() const
+
+ Returns the name of the group to which the custom widget belongs.
+*/
+
+/*!
+ \fn QString QDesignerCustomWidgetInterface::toolTip() const
+
+ Returns a short description of the widget that can be used by \QD
+ in a tool tip.
+*/
+
+/*!
+ \fn QString QDesignerCustomWidgetInterface::whatsThis() const
+
+ Returns a description of the widget that can be used by \QD in
+ "What's This?" help for the widget.
+*/
+
+/*!
+ \fn QString QDesignerCustomWidgetInterface::includeFile() const
+
+ Returns the path to the include file that \l uic uses when
+ creating code for the custom widget.
+*/
+
+/*!
+ \fn QIcon QDesignerCustomWidgetInterface::icon() const
+
+ Returns the icon used to represent the custom widget in \QD's
+ widget box.
+*/
+
+/*!
+ \fn bool QDesignerCustomWidgetInterface::isContainer() const
+
+ Returns true if the custom widget is intended to be used as a
+ container; otherwise returns false.
+
+ Most custom widgets are not used to hold other widgets, so their
+ implementations of this function will return false, but custom
+ containers will return true to ensure that they behave correctly
+ in \QD.
+*/
+
+/*!
+ \fn QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)
+
+ Returns a new instance of the custom widget, with the given \a
+ parent.
+*/
+
+/*!
+ \fn bool QDesignerCustomWidgetInterface::isInitialized() const
+
+ Returns true if the widget has been initialized; otherwise returns
+ false.
+
+ \sa initialize()
+*/
+
+/*!
+ \fn void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)
+
+ Initializes the widget for use with the specified \a formEditor
+ interface.
+
+ \sa isInitialized()
+*/
+
+/*!
+ \fn QString QDesignerCustomWidgetInterface::domXml() const
+
+ Returns the XML that is used to describe the custom widget's
+ properties to \QD.
+*/
+
+/*!
+ \fn QString QDesignerCustomWidgetInterface::codeTemplate() const
+
+ This function is reserved for future use by \QD.
+
+ \omit
+ Returns the code template that \QD includes in forms that contain
+ the custom widget when they are saved.
+ \endomit
+*/
+
+/*!
+ \macro QDESIGNER_WIDGET_EXPORT
+ \relates QDesignerCustomWidgetInterface
+ \since 4.1
+
+ This macro is used when defining custom widgets to ensure that they are
+ correctly exported from plugins for use with \QD.
+
+ On some platforms, the symbols required by \QD to create new widgets
+ are removed from plugins by the build system, making them unusable.
+ Using this macro ensures that the symbols are retained on those platforms,
+ and has no side effects on other platforms.
+
+ For example, the \l{designer/worldtimeclockplugin}{World Time Clock Plugin}
+ example exports a custom widget class with the following declaration:
+
+ \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 0
+ \dots
+ \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 2
+
+ \sa {Creating Custom Widgets for Qt Designer}
+*/
+
+
+
+
+
+/*!
+ \class QDesignerCustomWidgetCollectionInterface
+
+ \brief The QDesignerCustomWidgetCollectionInterface class allows
+ you to include several custom widgets in one single library.
+
+ \inmodule QtDesigner
+
+ When implementing a custom widget plugin, you build it as a
+ separate library. If you want to include several custom widget
+ plugins in the same library, you must in addition subclass
+ QDesignerCustomWidgetCollectionInterface.
+
+ QDesignerCustomWidgetCollectionInterface contains one single
+ function returning a list of the collection's
+ QDesignerCustomWidgetInterface objects. For example, if you have
+ several custom widgets \c CustomWidgetOne, \c CustomWidgetTwo and
+ \c CustomWidgetThree, the class definition may look like this:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 12
+
+ In the class constructor you add the interfaces to your custom
+ widgets to the list which you return in the customWidgets()
+ function:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 13
+
+ Note that instead of exporting each custom widget plugin using the
+ Q_EXPORT_PLUGIN2() macro, you export the entire collection. The
+ Q_EXPORT_PLUGIN2() macro ensures that \QD can access and construct
+ the custom widgets. Without this macro, there is no way for \QD to
+ use them.
+
+ \sa QDesignerCustomWidgetInterface, {Creating Custom Widgets for
+ Qt Designer}
+*/
+
+/*!
+ \fn QDesignerCustomWidgetCollectionInterface::~QDesignerCustomWidgetCollectionInterface() {
+
+ Destroys the custom widget collection interface.
+*/
+
+/*!
+ \fn QList<QDesignerCustomWidgetInterface*> QDesignerCustomWidgetCollectionInterface::customWidgets() const
+
+ Returns a list of interfaces to the collection's custom widgets.
+*/
diff --git a/tools/linguist/lupdate/cpp.cpp b/tools/linguist/lupdate/cpp.cpp
index 581662a..e929c0d 100644
--- a/tools/linguist/lupdate/cpp.cpp
+++ b/tools/linguist/lupdate/cpp.cpp
@@ -58,9 +58,7 @@ QT_BEGIN_NAMESPACE
static const char MagicComment[] = "TRANSLATOR ";
-#define STRINGIFY_INTERNAL(x) #x
-#define STRINGIFY(x) STRINGIFY_INTERNAL(x)
-#define STRING(s) static QString str##s(QLatin1String(STRINGIFY(s)))
+#define STRING(s) static QString str##s(QLatin1String(#s))
//#define DIAGNOSE_RETRANSLATABILITY // FIXME: should make a runtime option of this
@@ -215,9 +213,7 @@ private:
bool yyAtNewline;
bool yyCodecIsUtf8;
bool yyForceUtf8;
- QString yyIdent;
- QString yyComment;
- QString yyString;
+ QString yyWord;
qlonglong yyInteger;
QStack<IfdefState> yyIfdefStack;
int yyBraceDepth;
@@ -312,26 +308,28 @@ void CppParser::setInput(QTextStream &ts, const QString &fileName)
uint CppParser::getChar()
{
+ int len = yyInStr.size();
+ const ushort *uc = (const ushort *)yyInStr.unicode();
forever {
- if (yyInPos >= yyInStr.size())
+ if (yyInPos >= len)
return EOF;
- uint c = yyInStr[yyInPos++].unicode();
- if (c == '\\' && yyInPos < yyInStr.size()) {
- if (yyInStr[yyInPos].unicode() == '\n') {
+ uint c = uc[yyInPos++];
+ if (c == '\\' && yyInPos < len) {
+ if (uc[yyInPos] == '\n') {
++yyCurLineNo;
++yyInPos;
continue;
}
- if (yyInStr[yyInPos].unicode() == '\r') {
+ if (uc[yyInPos] == '\r') {
++yyCurLineNo;
++yyInPos;
- if (yyInPos < yyInStr.size() && yyInStr[yyInPos].unicode() == '\n')
+ if (yyInPos < len && uc[yyInPos] == '\n')
++yyInPos;
continue;
}
}
if (c == '\r') {
- if (yyInPos < yyInStr.size() && yyInStr[yyInPos].unicode() == '\n')
+ if (yyInPos < len && uc[yyInPos] == '\n')
++yyInPos;
c = '\n';
++yyCurLineNo;
@@ -346,12 +344,36 @@ uint CppParser::getChar()
}
}
+STRING(Q_OBJECT);
+STRING(Q_DECLARE_TR_FUNCTIONS);
+STRING(QT_TR_NOOP);
+STRING(QT_TRID_NOOP);
+STRING(QT_TRANSLATE_NOOP);
+STRING(QT_TRANSLATE_NOOP3);
+STRING(QT_TR_NOOP_UTF8);
+STRING(QT_TRANSLATE_NOOP_UTF8);
+STRING(QT_TRANSLATE_NOOP3_UTF8);
+STRING(class);
+// QTranslator::findMessage() has the same parameters as QApplication::translate()
+STRING(findMessage);
+STRING(friend);
+STRING(namespace);
+STRING(qtTrId);
+STRING(return);
+STRING(struct);
+STRING(TR);
+STRING(Tr);
+STRING(tr);
+STRING(trUtf8);
+STRING(translate);
+STRING(using);
+
uint CppParser::getToken()
{
restart:
- yyIdent.clear();
- yyComment.clear();
- yyString.clear();
+ // Failing this assertion would mean losing the preallocated buffer.
+ Q_ASSERT(yyWord.isDetached());
+ yyWord.resize(0);
while (yyCh != EOF) {
yyLineNo = yyCurLineNo;
@@ -450,6 +472,7 @@ uint CppParser::getToken()
tChar = '>';
else
break;
+ ushort *ptr = (ushort *)yyWord.unicode();
forever {
yyCh = getChar();
if (yyCh == EOF || yyCh == '\n')
@@ -458,8 +481,9 @@ uint CppParser::getToken()
yyCh = getChar();
break;
}
- yyString += yyCh;
+ *ptr++ = yyCh;
}
+ yyWord.resize(ptr - (ushort *)yyWord.unicode());
return (tChar == '"') ? Tok_QuotedInclude : Tok_AngledInclude;
}
break;
@@ -538,42 +562,43 @@ uint CppParser::getToken()
} while (yyCh != '\n' && yyCh != EOF);
yyCh = getChar();
} else if (isalpha(yyCh) || yyCh == '_') {
+ ushort *ptr = (ushort *)yyWord.unicode();
do {
- yyIdent += yyCh;
+ *ptr++ = yyCh;
yyCh = getChar();
} while (isalnum(yyCh) || yyCh == '_');
+ yyWord.resize(ptr - (ushort *)yyWord.unicode());
- //qDebug() << "IDENT: " << yyIdent;
+ //qDebug() << "IDENT: " << yyWord;
- switch (yyIdent.at(0).unicode()) {
+ switch (yyWord.unicode()[0].unicode()) {
case 'Q':
- if (yyIdent == QLatin1String("Q_OBJECT"))
+ if (yyWord == strQ_OBJECT)
return Tok_Q_OBJECT;
- if (yyIdent == QLatin1String("Q_DECLARE_TR_FUNCTIONS"))
+ if (yyWord == strQ_DECLARE_TR_FUNCTIONS)
return Tok_Q_DECLARE_TR_FUNCTIONS;
- if (yyIdent == QLatin1String("QT_TR_NOOP"))
+ if (yyWord == strQT_TR_NOOP)
return Tok_tr;
- if (yyIdent == QLatin1String("QT_TRID_NOOP"))
+ if (yyWord == strQT_TRID_NOOP)
return Tok_trid;
- if (yyIdent == QLatin1String("QT_TRANSLATE_NOOP"))
+ if (yyWord == strQT_TRANSLATE_NOOP)
return Tok_translate;
- if (yyIdent == QLatin1String("QT_TRANSLATE_NOOP3"))
+ if (yyWord == strQT_TRANSLATE_NOOP3)
return Tok_translate;
- if (yyIdent == QLatin1String("QT_TR_NOOP_UTF8"))
+ if (yyWord == strQT_TR_NOOP_UTF8)
return Tok_trUtf8;
- if (yyIdent == QLatin1String("QT_TRANSLATE_NOOP_UTF8"))
+ if (yyWord == strQT_TRANSLATE_NOOP_UTF8)
return Tok_translateUtf8;
- if (yyIdent == QLatin1String("QT_TRANSLATE_NOOP3_UTF8"))
+ if (yyWord == strQT_TRANSLATE_NOOP3_UTF8)
return Tok_translateUtf8;
break;
case 'T':
// TR() for when all else fails
- if (yyIdent.compare(QLatin1String("TR"), Qt::CaseInsensitive) == 0) {
+ if (yyWord == strTR || yyWord == strTr)
return Tok_tr;
- }
break;
case 'c':
- if (yyIdent == QLatin1String("class"))
+ if (yyWord == strclass)
return Tok_class;
break;
case 'f':
@@ -581,40 +606,37 @@ uint CppParser::getToken()
QTranslator::findMessage() has the same parameters as
QApplication::translate().
*/
- if (yyIdent == QLatin1String("findMessage"))
+ if (yyWord == strfindMessage)
return Tok_translate;
- if (yyIdent == QLatin1String("friend"))
+ if (yyWord == strfriend)
return Tok_friend;
break;
case 'n':
- if (yyIdent == QLatin1String("namespace"))
+ if (yyWord == strnamespace)
return Tok_namespace;
break;
case 'q':
- if (yyIdent == QLatin1String("qtTrId"))
+ if (yyWord == strqtTrId)
return Tok_trid;
break;
case 'r':
- if (yyIdent == QLatin1String("return"))
+ if (yyWord == strreturn)
return Tok_return;
break;
case 's':
- if (yyIdent == QLatin1String("struct"))
+ if (yyWord == strstruct)
return Tok_class;
break;
case 't':
- if (yyIdent == QLatin1String("tr")) {
+ if (yyWord == strtr)
return Tok_tr;
- }
- if (yyIdent == QLatin1String("trUtf8")) {
+ if (yyWord == strtrUtf8)
return Tok_trUtf8;
- }
- if (yyIdent == QLatin1String("translate")) {
+ if (yyWord == strtranslate)
return Tok_translate;
- }
break;
case 'u':
- if (yyIdent == QLatin1String("using"))
+ if (yyWord == strusing)
return Tok_using;
break;
}
@@ -634,14 +656,17 @@ uint CppParser::getToken()
case '/':
yyCh = getChar();
if (yyCh == '/') {
+ ushort *ptr = (ushort *)yyWord.unicode() + yyWord.length();
do {
yyCh = getChar();
if (yyCh == EOF)
break;
- yyComment.append(yyCh);
+ *ptr++ = yyCh;
} while (yyCh != '\n');
+ yyWord.resize(ptr - (ushort *)yyWord.unicode());
} else if (yyCh == '*') {
bool metAster = false;
+ ushort *ptr = (ushort *)yyWord.unicode() + yyWord.length();
forever {
yyCh = getChar();
@@ -650,7 +675,7 @@ uint CppParser::getToken()
qPrintable(yyFileName), yyLineNo);
return Tok_Comment;
}
- yyComment.append(yyCh);
+ *ptr++ = yyCh;
if (yyCh == '*')
metAster = true;
@@ -659,22 +684,25 @@ uint CppParser::getToken()
else
metAster = false;
}
+ yyWord.resize(ptr - (ushort *)yyWord.unicode() - 2);
+
yyCh = getChar();
- yyComment.chop(2);
}
return Tok_Comment;
- case '"':
+ case '"': {
+ ushort *ptr = (ushort *)yyWord.unicode() + yyWord.length();
yyCh = getChar();
while (yyCh != EOF && yyCh != '\n' && yyCh != '"') {
if (yyCh == '\\') {
yyCh = getChar();
if (yyCh == EOF || yyCh == '\n')
break;
- yyString.append(QLatin1Char('\\'));
+ *ptr++ = '\\';
}
- yyString.append(yyCh);
+ *ptr++ = yyCh;
yyCh = getChar();
}
+ yyWord.resize(ptr - (ushort *)yyWord.unicode());
if (yyCh != '"')
qWarning("%s:%d: Unterminated C++ string\n",
@@ -682,6 +710,7 @@ uint CppParser::getToken()
else
yyCh = getChar();
return Tok_String;
+ }
case '-':
yyCh = getChar();
if (yyCh == '>') {
@@ -1150,7 +1179,8 @@ bool CppParser::matchString(QString *s)
bool matches = (yyTok == Tok_String);
s->clear();
while (yyTok == Tok_String) {
- *s += yyString;
+ *s += yyWord;
+ s->detach();
do {
yyTok = getToken();
} while (yyTok == Tok_Comment);
@@ -1168,17 +1198,17 @@ bool CppParser::matchEncoding(bool *utf8)
if (yyTok != Tok_Ident)
return false;
- if (yyIdent == strQApplication || yyIdent == strQCoreApplication) {
+ if (yyWord == strQApplication || yyWord == strQCoreApplication) {
yyTok = getToken();
if (yyTok == Tok_ColonColon)
yyTok = getToken();
}
- if (yyIdent == strUnicodeUTF8) {
+ if (yyWord == strUnicodeUTF8) {
*utf8 = true;
yyTok = getToken();
return true;
}
- if (yyIdent == strDefaultCodec || yyIdent == strCodecForTr) {
+ if (yyWord == strDefaultCodec || yyWord == strCodecForTr) {
*utf8 = false;
yyTok = getToken();
return true;
@@ -1344,13 +1374,15 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
bool utf8;
bool yyTokColonSeen = false; // Start of c'tor's initializer list
+ yyWord.reserve(yyInStr.size()); // Rather insane. That's because we do no length checking.
yyCh = getChar();
yyTok = getToken();
while (yyTok != Tok_Eof) {
//qDebug() << "TOKEN: " << yyTok;
switch (yyTok) {
case Tok_QuotedInclude: {
- text = QDir(QFileInfo(yyFileName).absolutePath()).absoluteFilePath(yyString);
+ text = QDir(QFileInfo(yyFileName).absolutePath()).absoluteFilePath(yyWord);
+ text.detach();
if (QFileInfo(text).isFile()) {
processInclude(text, cd, inclusions);
yyTok = getToken();
@@ -1359,14 +1391,15 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
}
/* fall through */
case Tok_AngledInclude: {
- QStringList cSources = cd.m_allCSources.values(yyString);
+ QStringList cSources = cd.m_allCSources.values(yyWord);
if (!cSources.isEmpty()) {
foreach (const QString &cSource, cSources)
processInclude(cSource, cd, inclusions);
goto incOk;
}
foreach (const QString &incPath, cd.m_includePath) {
- text = QDir(incPath).absoluteFilePath(yyString);
+ text = QDir(incPath).absoluteFilePath(yyWord);
+ text.detach();
if (QFileInfo(text).isFile()) {
processInclude(text, cd, inclusions);
goto incOk;
@@ -1398,14 +1431,18 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
'class Q_EXPORT QMessageBox', in which case
'QMessageBox' is the class name, not 'Q_EXPORT'.
*/
- fct = QStringList(yyIdent);
+ text = yyWord;
+ text.detach();
+ fct = QStringList(text);
yyTok = getToken();
} while (yyTok == Tok_Ident);
while (yyTok == Tok_ColonColon) {
yyTok = getToken();
if (yyTok != Tok_Ident)
break; // Oops ...
- fct += yyIdent;
+ text = yyWord;
+ text.detach();
+ fct += text;
yyTok = getToken();
}
if (fct.count() > 1) {
@@ -1450,7 +1487,8 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
yyTokColonSeen = false;
yyTok = getToken();
if (yyTok == Tok_Ident) {
- QString ns = yyIdent;
+ QString ns = yyWord;
+ ns.detach();
yyTok = getToken();
if (yyTok == Tok_LeftBrace) {
namespaceDepths.push(namespaces.count());
@@ -1463,8 +1501,11 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
if (yyTok == Tok_ColonColon)
fullName.append(QString());
while (yyTok == Tok_ColonColon || yyTok == Tok_Ident) {
- if (yyTok == Tok_Ident)
- fullName.append(yyIdent);
+ if (yyTok == Tok_Ident) {
+ text = yyWord;
+ text.detach();
+ fullName.append(text);
+ }
yyTok = getToken();
}
if (fullName.isEmpty())
@@ -1489,8 +1530,11 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
if (yyTok == Tok_ColonColon)
fullName.append(QString());
while (yyTok == Tok_ColonColon || yyTok == Tok_Ident) {
- if (yyTok == Tok_Ident)
- fullName.append(yyIdent);
+ if (yyTok == Tok_Ident) {
+ text = yyWord;
+ text.detach();
+ fullName.append(text);
+ }
yyTok = getToken();
}
NamespaceList nsl;
@@ -1504,8 +1548,11 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
if (yyTok == Tok_ColonColon)
fullName.append(QString());
while (yyTok == Tok_ColonColon || yyTok == Tok_Ident) {
- if (yyTok == Tok_Ident)
- fullName.append(yyIdent);
+ if (yyTok == Tok_Ident) {
+ text = yyWord;
+ text.detach();
+ fullName.append(text);
+ }
yyTok = getToken();
}
if (fullName.isEmpty())
@@ -1702,7 +1749,8 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
yyTok = getToken();
break;
case Tok_Ident:
- prefix += yyIdent;
+ prefix += yyWord;
+ prefix.detach();
yyTok = getToken();
if (yyTok != Tok_ColonColon) {
prefix.clear();
@@ -1713,24 +1761,29 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
case Tok_Comment:
if (!results->tor)
goto case_default;
- if (yyComment.startsWith(QLatin1Char(':'))) {
- yyComment.remove(0, 1);
- extracomment.append(yyComment);
- } else if (yyComment.startsWith(QLatin1Char('='))) {
- yyComment.remove(0, 1);
- msgid = yyComment.simplified();
- } else if (yyComment.startsWith(QLatin1Char('~'))) {
- yyComment.remove(0, 1);
- yyComment = yyComment.trimmed();
- int k = yyComment.indexOf(QLatin1Char(' '));
+ if (yyWord.startsWith(QLatin1Char(':'))) {
+ yyWord.remove(0, 1);
+ extracomment += yyWord;
+ extracomment.detach();
+ } else if (yyWord.startsWith(QLatin1Char('='))) {
+ yyWord.remove(0, 1);
+ msgid = yyWord.simplified();
+ msgid.detach();
+ } else if (yyWord.startsWith(QLatin1Char('~'))) {
+ yyWord.remove(0, 1);
+ text = yyWord.trimmed();
+ int k = text.indexOf(QLatin1Char(' '));
if (k > -1)
- extra.insert(yyComment.left(k), yyComment.mid(k + 1).trimmed());
- } else if (yyComment.startsWith(QLatin1Char('%'))) {
+ extra.insert(text.left(k), text.mid(k + 1).trimmed());
+ text.clear();
+ } else if (yyWord.startsWith(QLatin1Char('%'))) {
+ sourcetext.reserve(sourcetext.length() + yyWord.length());
+ ushort *ptr = (ushort *)sourcetext.data() + sourcetext.length();
int p = 1, c;
forever {
- if (p >= yyComment.length())
+ if (p >= yyWord.length())
break;
- c = yyComment.unicode()[p++].unicode();
+ c = yyWord.unicode()[p++].unicode();
if (isspace(c))
continue;
if (c != '"') {
@@ -1739,28 +1792,29 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
break;
}
forever {
- if (p >= yyComment.length()) {
+ if (p >= yyWord.length()) {
whoops:
qWarning("%s:%d: Unterminated meta string\n",
qPrintable(yyFileName), yyLineNo);
break;
}
- c = yyComment.unicode()[p++].unicode();
+ c = yyWord.unicode()[p++].unicode();
if (c == '"')
break;
if (c == '\\') {
- if (p >= yyComment.length())
+ if (p >= yyWord.length())
goto whoops;
- c = yyComment.unicode()[p++].unicode();
+ c = yyWord.unicode()[p++].unicode();
if (c == '\n')
goto whoops;
- sourcetext.append(QLatin1Char('\\'));
+ *ptr++ = '\\';
}
- sourcetext.append(c);
+ *ptr++ = c;
}
}
+ sourcetext.resize(ptr - (ushort *)sourcetext.data());
} else {
- comment = yyComment.simplified();
+ comment = yyWord.simplified();
if (comment.startsWith(QLatin1String(MagicComment))) {
comment.remove(0, sizeof(MagicComment) - 1);
int k = comment.indexOf(QLatin1Char(' '));
@@ -1775,6 +1829,8 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
results->tor->setExtras(extra);
extra.clear();
}
+ } else {
+ comment.detach();
}
}
yyTok = getToken();
@@ -1791,8 +1847,10 @@ void CppParser::parseInternal(ConversionData &cd, QSet<QString> &inclusions)
prefix += strColons;
yyTok = getToken();
#ifdef DIAGNOSE_RETRANSLATABILITY
- if (yyTok == Tok_Ident && yyBraceDepth == namespaceDepths.count() && yyParenDepth == 0)
- functionName = yyIdent;
+ if (yyTok == Tok_Ident && yyBraceDepth == namespaceDepths.count() && yyParenDepth == 0) {
+ functionName = yyWord;
+ functionName.detach();
+ }
#endif
break;
case Tok_RightBrace:
diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp
index ebe5ec9..7519ff1 100644
--- a/tools/qdoc3/cppcodeparser.cpp
+++ b/tools/qdoc3/cppcodeparser.cpp
@@ -1734,11 +1734,11 @@ bool CppCodeParser::matchProperty(InnerNode *parent)
property->setDesignable(value.toLower() == "true");
else if (key == "RESET")
tre->addPropertyFunction(property, value, PropertyNode::Resetter);
-#if 0
+
else if (key == "NOTIFY") {
tre->addPropertyFunction(property, value, PropertyNode::Notifier);
}
-#endif
+
}
match(Tok_RightParen);
return true;
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index 2a1ca05..0cddf51 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -598,6 +598,7 @@ class PropertyNode : public LeafNode
void setDataType(const QString& dataType) { dt = dataType; }
void addFunction(FunctionNode *function, FunctionRole role);
+ void addSignal(FunctionNode *function, FunctionRole role);
void setStored(bool stored) { sto = toTrool(stored); }
void setDesignable(bool designable) { des = toTrool(designable); }
void setOverriddenFrom(const PropertyNode *baseProperty);
@@ -641,6 +642,11 @@ inline void PropertyNode::addFunction(FunctionNode *function, FunctionRole role)
function->setAssociatedProperty(this);
}
+inline void PropertyNode::addSignal(FunctionNode *function, FunctionRole role)
+{
+ funcs[(int)role].append(function);
+}
+
inline NodeList PropertyNode::functions() const
{
NodeList list;
diff --git a/tools/qdoc3/test/classic.css b/tools/qdoc3/test/classic.css
index 4225a1b..f97bdbe 100644
--- a/tools/qdoc3/test/classic.css
+++ b/tools/qdoc3/test/classic.css
@@ -45,9 +45,17 @@ table.indextable {
border-width: 1px 1px 1px 1px;
border-collapse: collapse;
background-color: #f0f0f0;
- border-color:#555;
+ border-color:#555;
+ font-size: 110%;
}
+table td.largeindex {
+ border-width: 1px 1px 1px 1px;
+ border-collapse: collapse;
+ background-color: #f0f0f0;
+ border-color:#555;
+ font-size: 120%;
+}
table.valuelist th {
border-width: 1px 1px 1px 2px;
@@ -65,6 +73,17 @@ th.titleheader {
border-color: #444;
color:white;
background-color:#555555;
+ font-size: 110%;
+}
+
+th.largeheader {
+ border-width: 1px 0px 1px 0px;
+ padding: 4px;
+ border-style: solid;
+ border-color: #444;
+ color:white;
+ background-color:#555555;
+ font-size: 120%;
}
p {
diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf
index 8c5bec5..f31e657 100644
--- a/tools/qdoc3/test/qt-html-templates.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates.qdocconf
@@ -8,36 +8,32 @@ HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0
"<td class=\"postheader\" valign=\"center\">" \
"<a href=\"index.html\">" \
"<font color=\"#004faf\">Home</font></a>&nbsp;&middot;" \
- " <a href=\"modules.html\">" \
- "<font color=\"#004faf\">Modules</font></a>&nbsp;&middot;" \
" <a href=\"classes.html\">" \
- "<font color=\"#004faf\">Classes</font></a>&nbsp;&middot;" \
- " <a href=\"functions.html\">" \
- "<font color=\"#004faf\">Functions</font></a>&nbsp;&middot;" \
- " <a href=\"namespaces.html\">" \
- "<font color=\"#004faf\">Namespaces</font></a>" \
+ "<font color=\"#004faf\">All&nbsp;Classes</font></a>&nbsp;&middot;" \
+ " <a href=\"overviews.html\">" \
+ "<font color=\"#004faf\">Overviews</font></a>" \
"</td>" \
- "<td class=\"searchBar\" align=\"right\" valign=\"center\">" \
- "<form action=\"http://www.google.com/cse\" id=\"cse-search-box\">" \
- "<div>" \
- "<input type=\"hidden\" name=\"cx\" value=\"000136343326384750312:dhbxnqlakyu\" />" \
- "<input type=\"hidden\" name=\"ie\" value=\"UTF-8\" />" \
- "<input type=\"text\" name=\"q\" size=\"31\" />" \
- "<input type=\"submit\" name=\"sa\" value=\"Search\" />" \
- "</div>" \
- "</form>" \
- \
- "<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>" \
- "<script type=\"text/javascript\">google.load(\"elements\", \"1\", {packages: \"transliteration\"});</script>" \
- "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/t13n?form=cse-search-box&t13n_langs=en\"></script>" \
- \
- "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en\"></script>"\
- "</td>\n" \
+ "<td class=\"searchBar\" align=\"right\" valign=\"center\">" \
+ "<form action=\"http://www.google.com/cse\" id=\"cse-search-box\">" \
+ "<div>" \
+ "<input type=\"hidden\" name=\"cx\" value=\"000136343326384750312:dhbxnqlakyu\" />" \
+ "<input type=\"hidden\" name=\"ie\" value=\"UTF-8\" />" \
+ "<input type=\"text\" name=\"q\" size=\"31\" />" \
+ "<input type=\"submit\" name=\"sa\" value=\"Search\" />" \
+ "</div>" \
+ "</form>" \
+ \
+ "<script type=\"text/javascript\" src=\"http://www.google.com/jsapi\"></script>" \
+ "<script type=\"text/javascript\">google.load(\"elements\", \"1\", {packages: \"transliteration\"});</script>" \
+ "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/t13n?form=cse-search-box&t13n_langs=en\"></script>" \
+ \
+ "<script type=\"text/javascript\" src=\"http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en\"></script>"\
+ "</td>\n" \
"</tr></table>"
HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
- "<td width=\"30%\" align=\"left\">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
- "<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
- "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \
+ "<td width=\"40%\" align=\"left\">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
+ "<td width=\"20%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
+ "<td width=\"40%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \
"</tr></table></div></address>"
diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp
index b42701f..7d488df 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -501,7 +501,7 @@ void Tree::resolveProperties()
} else if (function->name() == resetterName) {
property->addFunction(function, PropertyNode::Resetter);
} else if (function->name() == notifierName) {
- property->addFunction(function, PropertyNode::Notifier);
+ property->addSignal(function, PropertyNode::Notifier);
}
}
}
diff --git a/tools/qtestlib/wince/cetest/bootstrapped.pri b/tools/qtestlib/wince/cetest/bootstrapped.pri
index a31374e..3a0ce24 100644
--- a/tools/qtestlib/wince/cetest/bootstrapped.pri
+++ b/tools/qtestlib/wince/cetest/bootstrapped.pri
@@ -24,7 +24,7 @@ SOURCES += \
$$QT_SOURCE_TREE/src/corelib/tools/qbytearraymatcher.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qvector.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qvsnprintf.cpp \
- $$QT_SOURCE_TREE/src/corelib/tools/qlistdata.cpp \
+ $$QT_SOURCE_TREE/src/corelib/tools/qlist.cpp \
$$QT_SOURCE_TREE/src/corelib/tools/qhash.cpp \
$$QT_SOURCE_TREE/src/corelib/global/qglobal.cpp \
$$QT_BUILD_TREE/src/corelib/global/qconfig.cpp \
diff --git a/translations/qt_ar.ts b/translations/qt_ar.ts
index 3e7a635..9631883 100644
--- a/translations/qt_ar.ts
+++ b/translations/qt_ar.ts
@@ -3024,7 +3024,8 @@ Do you want to delete it anyway?</source>
<location line="+1"/>
<source>Hide Details...</source>
<translation type="unfinished"></translation>
- </message>.nokiassage>
+ </message>
+ <message>
<location line="+1570"/>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
<translation type="unfinished"></translation>