summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2009-05-06 02:48:59 (GMT)
committerMartin Jones <martin.jones@nokia.com>2009-05-06 02:48:59 (GMT)
commitbcfb24b17cf5c97c734c82ca2072eb8b13b80eec (patch)
tree48ad40ec7ad8bd6da05ffe545660c69928ca6b96 /doc
parentac7e5eb6c5fff0ea87f1af0681ab1881b8bf8eb2 (diff)
parent0fc572e5d7e19bdfc5fc26a282904ffdd52093e3 (diff)
downloadQt-bcfb24b17cf5c97c734c82ca2072eb8b13b80eec.zip
Qt-bcfb24b17cf5c97c734c82ca2072eb8b13b80eec.tar.gz
Qt-bcfb24b17cf5c97c734c82ca2072eb8b13b80eec.tar.bz2
Merge branch 'kinetic-declarativeui' of git@scm.dev.nokia.troll.no:qt/kinetic into kinetic-declarativeui
Diffstat (limited to 'doc')
-rw-r--r--doc/src/activeqt.qdoc2
-rw-r--r--doc/src/declarative/modules.qdoc131
-rw-r--r--doc/src/declarative/pics/3d-axis.pngbin0 -> 13840 bytes
-rw-r--r--doc/src/declarative/pics/3d-rotation-axis.pngbin0 -> 14304 bytes
-rw-r--r--doc/src/declarative/pics/squish-transform.pngbin0 -> 9652 bytes
-rw-r--r--doc/src/designer-manual.qdoc12
-rw-r--r--doc/src/examples/flowlayout.qdoc115
-rw-r--r--doc/src/exportedfunctions.qdoc3
-rw-r--r--doc/src/images/flowlayout-example.pngbin5054 -> 29350 bytes
-rw-r--r--doc/src/layout.qdoc2
-rw-r--r--doc/src/porting4.qdoc1
-rw-r--r--doc/src/qnamespace.qdoc23
12 files changed, 156 insertions, 133 deletions
diff --git a/doc/src/activeqt.qdoc b/doc/src/activeqt.qdoc
index 3919823..473f815 100644
--- a/doc/src/activeqt.qdoc
+++ b/doc/src/activeqt.qdoc
@@ -82,7 +82,7 @@
Designer}.
The ActiveQt modules are part of the \l{Qt Full Framework Edition} and
- the \l{Open Source Versions}.
+ the \l{Open Source Versions of Qt}.
\sa {QAxContainer Module}, {QAxServer Module}
*/
diff --git a/doc/src/declarative/modules.qdoc b/doc/src/declarative/modules.qdoc
index a97b5d7..5933223 100644
--- a/doc/src/declarative/modules.qdoc
+++ b/doc/src/declarative/modules.qdoc
@@ -3,133 +3,20 @@
\target qmlmodules
\title Modules of Components
-A \bold module is a collection of \l Components, in an XML namespace.
+A \bold module is a collection of \l Components.
-Named component in QML may include a namespace qualification,
-and standard XML namespace scoping is allowed. This allows
-components to be provided by different modules (even if they otherwise
-have the same name).
-
-To use a module:
-
-\code
-<Item xmlns:Clock="http://nokia.com/qml/Clock">
- <Clock:AnalogClock>
- ...
- </Clock:AnalogClock>
-</Item>
-\endcode
-
-To create a modules:
-
-Create the components, with appropriate exported properties, signals, and slots (slots not currently supported),
-in a single directory:
-
-\c Clock/Face.qml: ...
-
-\c Clock/Hand.qml: ...
-
-\c Clock/AnalogClock.qml:
-\code
-<Item xmlns:Clock="http://nokia.com/qml/Clock">
- <Clock:Face .../>
- <Clock:Hand .../>
- <Clock:Hand .../>
- <Clock:Hand .../>
- ...
-</Item>
-\endcode
-
-Associate the directory with the namespace:
+To use a module, include the following statement at the begining
+of your QML:
\code
- Qml::addNameSpacePath("http://nokia.com/qml/Clock", "/usr/lib/qml/Clock");
+import "path"
\endcode
-Whole blocks of directories can be set:
-
-\code
- Qml::addNameSpacePath("http://nokia.com/qml", "/usr/lib/qml");
-\endcode
-
-Associations can also be declared in the QML itself as a processing directive:
-
-\code
- <?qtfx namespacepath:http://nokia.com/qml=/usr/lib/qml ?>
-\endcode
-
-*/
-
-/*
-
-A kludgey way to do unexported components:
-
-Clock/AnalogClock.qml:
-<Item>
- <properties>
- <Property name="time" ... />
- </properties>
-
- <Component name="Hand"> ... </Component> <!-- invisible compoent -->
-
- <ComponentInstance component="Hand" size="100"/>
- <ComponentInstance component="Hand" size="200"/>
- <ComponentInstance component="Hand" size="300"/>
-</Item>
-
-Another kludgey way (if _ handled specially)):
-
-Clock/_Hand.qml: ...
-
-A non-XML extension to improve syntax (XMLNS blows):
-
-<qml>
- <using ns="http://nokia.com/qml/Clock"/>
- <Face .../>
- ...
-</qml>
-
-*/
-
-/*
- IMPLEMENTATION
-
- Fully Qualifying names. CHOICE
- IF QmlXmlParser qualifies names:
- QmlXmlParser processes <qml> and <using> tags to create a list of QmlModuleDependency.
- It uses talks with the same creators as QmlCompiler::compileTypes to qualify the names.
- Each of QmlMetaType, QmlCustomParser, and the QmlCompiledComponent::classFactory(ies)
- must know fully-qualified names.
- Pro: simpler
- Con: may be harder to regenerate original XML if unqualified name is lost
- Con: should QmlXmlParser "know" about the type creators?
- ELSE
- QmlXmlParser processes <qml> and <using> tags to create a list of QmlModuleDependency,
- which get stored in the QCompiledComponent.
- When QmlCompiler::compileTypes creates components, module dependencies are used
- to find the correct component - turning a name into a fully-qualified name
- at "ref.className = type" before passing it to the creators. QmlMetaType::typeFunc must allow
- qualified names even for builtin types, for example, QFxText might be
- declared with the name Qt:Text. The QML::customParser must also understand
- the concept, for example ListModel might be declared with the name Qt:ListModel.
- QmlXmlParser::Object::typeName should be removed (used by DOM?), as redundant.
- QmlXmlParser::Object::type will not define a fully qualified typename, just a name,
- so types that are actually the same may have different type id because they
- were named differently ("Qt:Text" vs "Text"). Need to check if this is a problem,
- or whether QmlCompiler::output->types should be compressed.
-
- XML Namespaces. CHOICE CHOSEN
- The advantage is that the namespaces could be fixed (per version), allowing proper DTDs, etc.
+This allows all components defined in the directory \c path to be used in
+the component where this statement appears.
- Attached properties. PROBLEM
- Type references in JavaScript can be either unqualified, in which case QmlMetaProperty
- would have to FQ the type, which seems impossible, or qualified, the syntax
- of which would be odd, like Qt.GridLayout.row or property["Qt:GridLayout.row"].
+Currently, \c path may only be a directory relative to the directory containing
+the component issuing the import.
- Access restrictions. PROBLEM
- All use of the bind context must prevent direct access between objects that
- are in different modules (i.e. between types with different module prefixes).
- Maybe this is accomplishable just from having the right context tree.
- Components in the same module can refer to their containing components (they
- need to be careful if they're allowed to be used outside).
+The import statement cannot be used by remote content.
*/
diff --git a/doc/src/declarative/pics/3d-axis.png b/doc/src/declarative/pics/3d-axis.png
new file mode 100644
index 0000000..1a587ff
--- /dev/null
+++ b/doc/src/declarative/pics/3d-axis.png
Binary files differ
diff --git a/doc/src/declarative/pics/3d-rotation-axis.png b/doc/src/declarative/pics/3d-rotation-axis.png
new file mode 100644
index 0000000..1b17261
--- /dev/null
+++ b/doc/src/declarative/pics/3d-rotation-axis.png
Binary files differ
diff --git a/doc/src/declarative/pics/squish-transform.png b/doc/src/declarative/pics/squish-transform.png
new file mode 100644
index 0000000..0eb848e
--- /dev/null
+++ b/doc/src/declarative/pics/squish-transform.png
Binary files differ
diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc
index 97713b1..2706182 100644
--- a/doc/src/designer-manual.qdoc
+++ b/doc/src/designer-manual.qdoc
@@ -344,10 +344,14 @@
of a QLineEdit or the width and height of item view widgets. This is where
the widget size constraints -- \l{QWidget::minimumSize()}{minimumSize} and
\l{QWidget::maximumSize()}{maximumSize} constraints come into play. These
- are properties you can set in the property editor. Alternatively, to use
- the current size as a size constraint value, choose one of the
- \gui{Size Constraint} options from the widget's context menu. The layout
- will then ensure that those constraints are met.
+ are properties you can set in the property editor. For example, to override
+ the default \l{QWidget::}{sizeHint()}, simply set
+ \l{QWidget::minimumSize()}{minimumSize} and \l{QWidget::maximumSize()}
+ {maximumSize} to the same value. Alternatively, to use the current size as
+ a size constraint value, choose one of the \gui{Size Constraint} options
+ from the widget's context menu. The layout will then ensure that those
+ constraints are met. To control the size of your widgets via code, you can
+ reimplement \l{QWidget::}{sizeHint()} in your code.
The screenshot below shows the breakdown of a basic user interface designed
using a grid. The coordinates on the screenshot show the position of each
diff --git a/doc/src/examples/flowlayout.qdoc b/doc/src/examples/flowlayout.qdoc
index 557ba39..3e7ec22 100644
--- a/doc/src/examples/flowlayout.qdoc
+++ b/doc/src/examples/flowlayout.qdoc
@@ -43,8 +43,117 @@
\example layouts/flowlayout
\title Flow Layout Example
- The Flow Layout example demonstrates a custom layout that arranges child widgets from
- left to right and top to bottom in a top-level widget.
+ The Flow Layout example demonstrates a custom layout that arranges child
+ widgets from left to right and top to bottom in a top-level widget.
+
+ \image flowlayout-example.png Screenshot of the Flow Layout example
+
+ The items are first laid out horizontally and then vertically when each line
+ in the layout runs out of space.
+
+ The Flowlayout class mainly uses QLayout and QWidgetItem, while the
+ Window uses QWidget and QLabel. We will only document the definition
+ and implementation of \c FlowLayout below.
+
+ \section1 FlowLayout Class Definition
+
+ The \c FlowLayout class inherits QLayout. It is a custom layout class
+ that arranges its child widgets horizontally and vertically.
+
+ \snippet examples/layouts/flowlayout/flowlayout.h 0
+
+ We reimplement functions inherited from QLayout. These functions add items to
+ the layout and handle their orientation and geometry.
+
+ We also declare two private methods, \c doLayout() and \c smartSpacing().
+ \c doLayout() lays out the layout items, while the \c
+ smartSpacing() function calculates the spacing between them.
+
+ \section1 FlowLayout Class Implementation
+
+ We start off by looking at the constructor:
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 1
+
+ In the constructor we call \c setContentsMargins() to set the left, top,
+ right and bottom margin. By default, QLayout uses values provided by
+ the current style (see QStyle::PixelMetric).
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 2
+
+ In this example we reimplement \c addItem(), which is a pure virtual
+ function. When using \c addItem() the ownership of the layout items is
+ transferred to the layout, and it is therefore the layout's
+ responsibility to delete them.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 3
+
+ \c addItem() is implemented to add items to the layout.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 4
+
+ We implement \c horizontalSpacing() and \c verticalSpacing() to get
+ hold of the spacing between the widgets inside the layout. If the value
+ is less than or equal to 0, this value will be used. If not,
+ \c smartSpacing() will be called to calculate the spacing.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 5
+
+ We then implement \c count() to return the number of items in the
+ layout. To navigate the list of items we use \c itemAt() and
+ takeAt() to remove and return items from the list. If an item is
+ removed, the remaining items will be renumbered. All three
+ functions are pure virtual functions from QLayout.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 6
+
+ \c expandingDirections() returns the \l{Qt::Orientation}s in which the
+ layout can make use of more space than its \c sizeHint().
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 7
+
+ To adjust to widgets of which height is dependent on width, we implement \c
+ heightForWidth(). The function \c hasHeightForWidth() is used to test for this
+ dependency, and \c heightForWidth() passes the width on to \c doLayout() which
+ in turn uses the width as an argument for the layout rect, i.e., the bounds in
+ which the items are laid out. This rect does not include the layout margin().
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 8
+
+ \c setGeometry() is normally used to do the actual layout, i.e., calculate
+ the geometry of the layout's items. In this example, it calls \c doLayout()
+ and passes the layout rect.
+
+ \c sizeHint() returns the preferred size of the layout and \c minimumSize()
+ returns the minimum size of the layout.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 9
+
+ \c doLayout() handles the layout if \c horizontalSpacing() or \c
+ verticalSpacing() don't return the default value. It uses
+ \c getContentsMargins() to calculate the area available to the
+ layout items.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 10
+
+ It then sets the proper amount of spacing for each widget in the
+ layout, based on the current style.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 11
+
+ The position of each item in the layout is then calculated by
+ adding the items width and the line height to the initial x and y
+ coordinates. This in turn lets us find out whether the next item
+ will fit on the current line or if it must be moved down to the next.
+ We also find the height of the current line based on the widgets height.
+
+ \snippet examples/layouts/flowlayout/flowlayout.cpp 12
+
+ \c smartSpacing() is designed to get the default spacing for either
+ the top-level layouts or the sublayouts. The default spacing for
+ top-level layouts, when the parent is a QWidget, will be determined
+ by querying the style. The default spacing for sublayouts, when
+ the parent is a QLayout, will be determined by querying the spacing
+ of the parent layout.
- \image flowlayout-example.png
*/
diff --git a/doc/src/exportedfunctions.qdoc b/doc/src/exportedfunctions.qdoc
index f67950c..f051ddc 100644
--- a/doc/src/exportedfunctions.qdoc
+++ b/doc/src/exportedfunctions.qdoc
@@ -129,6 +129,9 @@
on Mac OS X or be part of the main window. This feature is on by
default.
+ In Qt 4.6, this is equivalent to
+ \c { QApplication::instance()->setAttribute(Qt::AA_DontUseNativeMenuBar); }.
+
\section1 void qt_mac_set_press_and_hold_context(bool \e{enable})
Turns emulation of the right mouse button by clicking and holding
diff --git a/doc/src/images/flowlayout-example.png b/doc/src/images/flowlayout-example.png
index 27660d6..61abe1f 100644
--- a/doc/src/images/flowlayout-example.png
+++ b/doc/src/images/flowlayout-example.png
Binary files differ
diff --git a/doc/src/layout.qdoc b/doc/src/layout.qdoc
index 38163c8..55dfd8b 100644
--- a/doc/src/layout.qdoc
+++ b/doc/src/layout.qdoc
@@ -371,7 +371,7 @@
should store the value in a local variable if you need it again
later within in the same function.
\o You should not call QLayoutItem::setGeometry() twice on the same
- item in the smae function. This call can be very expensive if the
+ item in the same function. This call can be very expensive if the
item has several child widgets, because the layout manager must do
a complete layout every time. Instead, calculate the geometry and
then set it. (This does not only apply to layouts, you should do
diff --git a/doc/src/porting4.qdoc b/doc/src/porting4.qdoc
index c8a9e2b..b93e139 100644
--- a/doc/src/porting4.qdoc
+++ b/doc/src/porting4.qdoc
@@ -457,6 +457,7 @@
\row \o QToolButton::offIconSet \o Use the \l{QIcon::Off}{off component} of QAbstractButton::icon instead.
\row \o QToolButton::onIconSet \o Use the \l{QIcon::On}{on component} of QAbstractButton::icon instead.
\row \o QWidget::microFocusHint \o N/A
+ \row \o QMimeSource::serialNumber () \o N/A
\endtable
\omit
diff --git a/doc/src/qnamespace.qdoc b/doc/src/qnamespace.qdoc
index 097333b..ad59b8d 100644
--- a/doc/src/qnamespace.qdoc
+++ b/doc/src/qnamespace.qdoc
@@ -146,10 +146,16 @@
widgets stay non-native unless specifically set by the
Qt::WA_NativeWindow attribute.
- \value AA_MacPluginApplication Stops the a Qt mac application from doing
+ \value AA_MacPluginApplication Stops the Qt mac application from doing
specific initializations that do not necessarily make sense when using Qt
to author a plugin. This includes avoiding loading our nib for the main
- menu and not taking possession of the native menu bar.
+ menu and not taking possession of the native menu bar. When setting this
+ attribute to true will also set the AA_DontUseNativeMenuBar attribute
+ to true.
+
+ \value AA_DontUseNativeMenuBar All menubars created while this attribute is
+ set to true won't be used as a native menubar (e.g, the menubar at
+ the top of the main screen on Mac OS X or at the bottom in Windows CE).
\omitvalue AA_AttributeCount
*/
@@ -2651,3 +2657,16 @@
\sa QGraphicsWidget::windowFrameSectionAt()
*/
+
+/*!
+ \enum Qt::TileRule
+ \since 4.6
+
+ This enum describes how to repeat or stretch the parts of an image when drawing.
+
+ \value Stretch Scale the image to fit to the available area.
+ \value Repeat Tile the image until there is no more space. May crop the last image.
+ \value Round Like Repeat, but scales the images down to ensure that the last image is not cropped.
+
+ \sa QPixmapBorders, qDrawBorderPixmap()
+*/