aboutsummaryrefslogtreecommitdiffstats
path: root/doc/src/qml/qtprogrammers.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/qml/qtprogrammers.qdoc')
-rw-r--r--doc/src/qml/qtprogrammers.qdoc197
1 files changed, 0 insertions, 197 deletions
diff --git a/doc/src/qml/qtprogrammers.qdoc b/doc/src/qml/qtprogrammers.qdoc
deleted file mode 100644
index fd47d9bf58..0000000000
--- a/doc/src/qml/qtprogrammers.qdoc
+++ /dev/null
@@ -1,197 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms
-** and conditions contained in a signed written agreement between you
-** and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page qtprogrammers.html
-\target qtprogrammers
-\title QML for Qt Programmers
-\brief learning QML for programmers with Qt knowledge
-
-While QML does not require Qt knowledge to use, if you \e are already familiar with Qt,
-much of your knowledge is directly relevant to learning and using QML. Of course,
-an application with a user interface defined in QML also uses Qt for all the non-UI
-logic.
-
-\section1 Familiar Concepts
-
-QML provides direct access to the following concepts from Qt:
-
-\list
- \li QAction - the \l {QML Basic Types}{action} type
- \li QObject signals and slots - available as functions to call in JavaScript
- \li QObject properties - available as variables in JavaScript
- \li QWidget - QQuickView is a QML-displaying widget
- \li Qt models - used directly in data binding (QAbstractItemModel)
-\endlist
-
-Qt knowledge is \e required for \l{Extending QML with C++},
-and also for \l{Integrating QML Code with existing Qt UI code}.
-
-\section1 QML Items Compared with Widgets
-
-QML Items are very similar to widgets: they define the look and feel of the user
-interface. Note that, while widgets haven't traditionally been used to define the
-look and feel of view delegates, QML Items can be used for this as well.
-
-There are three structurally different types of widget:
-
-\list
- \li Simple widgets that are not used as parents (QLabel, QCheckBox, QToolButton, etc.)
- \li Parent widgets that are normally used as parents to other widgets (QGroupBox,
- QStackedWidget, QTabWidget, etc.)
- \li Compound widgets that are internally composed of child widgets (QComboBox,
- QSpinBox, QFileDialog, QTabWidget, etc.)
-\endlist
-
-QML Items also serve these purposes. Each is considered separately below.
-
-\section2 Simple Widgets
-
-The most important rule to remember while implementing a new QQuickItem in C++
-is that it should not contain any look and feel policies; leave that to the QML
-usage of the item.
-
-As an example, imagine you wanted a reusable Button item. If you therefore decided
-to write a QQuickItem subclass to implement a button, just as QToolButton
-subclasses QWidget for this purpose, following the rule above, your
-\c QDeclarativeButton would not have any appearance; just the notions of enabled,
-triggering, etc.
-
-However, there is already an object in Qt that does this: QAction.
-
-QAction is the UI-agnostic essence of QPushButton, QCheckBox, QMenu items,
-QToolButton, and other visual widgets that are commonly bound to a QAction.
-
-So, the job of implementing a checkbox abstraction for QML is already done by QAction.
-The look and feel of an action, the appearance of the button, the transition
-between states, and exactly how it responds to mouse, key, or touch input, should
-all be left for definition in QML.
-
-It is illustrative to note that QDeclarativeTextEdit is built upon QTextControl,
-QQuickWebView is built upon QWebPage, and ListView uses QAbstractItemModel,
-just as QTextEdit, QWebView, and QListView are built upon those same UI-agnostic
-components.
-
-The encapsulation of the look and feel that widgets provide is important, and for
-this the QML concept of \l{QML Documents}{components} serves the same purpose.
-If you are building a complete suite of applications which should have a
-consistent look and feel, you should build a set of reusable components with the
-look and feel you desire.
-
-So, to implement your reusable button, you would simply build a QML component.
-
-
-\section2 Parent Widgets
-
-Parent widgets each provide a generic way to provide an interface to one or more
-arbitrary widgets. A QTabWidget provides an interface to multiple "pages", one of
-which is visible at any time, and a mechanism for selecting among them: the QTabBar.
-A QScrollArea provides scrollbars around a widget that is otherwise too large to
-fit in the available space.
-
-Nearly all such components can be created directly in QML. Only a few cases
-which require very particular event handling, such as \l Flickable, require C++
-implementations.
-
-As an example, imagine you decided to make a generic tab widget item to be used
-through your application suite wherever information is in such quantity that it
-needs to be divided up into pages.
-
-A significant difference in the parenting concept with QML compare to QWidgets
-is that while child items are positioned relative to their parents, there is no
-requirement that they be wholly contained ("clipped") to the parent (although the
-\l{Item::}{clipped} property of the child item does allow this where it is needed).
-This difference has rather far-reaching consequences, for example:
-
-\list
-\li A shadow or highlight around a widget could be a child of that widget.
-\li Particle effects can flow outside the object where they originate.
-\li Transitioning animations can "hide" items by visibly moving them beyond
- the screen bounds.
-\endlist
-
-\section2 Compound Widgets
-
-Some widgets provide functionality by composing other widgets as an "implementation
-detail", providing a higher level API to the composition. QSpinBox for example is a
-line edit and some buttons to increase/decrease the edited value. QFileDialog uses
-a whole host of widgets to give the user a way of finding and selecting a file
-name.
-
-When developing reusable QML Items, you may choose to do the same: build an item
-composed of other items you have already defined.
-
-The only caveat when doing this is to consider the possible animations and
-transitions that users of the compound item might wish to employ. For example, a
-spinbox might need to smoothly transition from an arbitrary \l Text item, or
-characters within a \l Text item, so your spinbox item would need to be sufficiently
-flexible to allow such animation.
-
-\section1 QML Items Compared with Graphics Widgets
-
-The main difference between QML items and QGraphicsWidgets is how they are intended
-to be used. The technical implementation details are much the same, but in practice
-they are different because QML items are made for declarative and compositional use,
-and QGraphicsWidgets are made for imperative and more integrated use. Both QML items
-and QGraphicsWidgets inherit from QGraphicsObject, and can co-exist. The differences
-are in the layout system and the interfacing with other components. Note that, as
-QGraphicsWidgets tend more to be all-in-one packages, the equivalent of a
-QGraphicsWidget may be many QML items composed across several QML files, but it can
-still be loaded and used as a single QGraphicsObject from C++.
-
-QGraphicsWidgets are usually designed to be laid out with QGraphicsLayouts. QML does
-not use QGraphicsLayouts, as the Qt layouts do not mix well with animated and fluid
-UIs, so the geometry interface is one of the main differences. When writing QML
-elements, you allow the designers to place their bounding rectangle using absolute
-geometry, bindings or anchors (all set up for you when you inherit QQuickItem)
-and you do not use layouts or size hints. If size hints are appropriate, then place
-them in the QML documentation so that the designers know how to use the item best,
-but still have complete control over the look and feel.
-
-The other main difference is that QGraphicsWidgets tend to follow the widget model,
-in that they are a self-contained bundle of UI and logic. In contrast, QML
-primitives are usually a single purpose item that does not fulfill a use case on
-its own, but is composed into the equivalent of the widget inside the QML file. So
-when writing QML Items, try to avoid doing UI logic or composing visual elements
-inside the items. Try instead to write more general purpose primitives, so that the
-look and feel (which involves the UI logic) can be written in QML.
-
-Both differences are caused by the different method of interaction. QGraphicsWidget
-is a QGraphicsObject subclass which makes fluid UI development from C++ easier, and
-QQuickItem is a QGraphicsObject subclass which makes fluid UI development
-from QML easier. The difference, therefore, is primarily one of the interface
-exposed, and the design of the items that come with it; the declarative primitives
-for QML and nothing for QGraphicsWidget, because you need to write your own UI
-logic into the subclass.
-
-If you wish to use both QML and C++ to write the UI, for example to ease the
-transition period, it is recommended to use QQuickItem subclasses, although
-you can use QGraphicsWidgets as well. To allow for easier use from C++, make the
-root item of each C++ component a \l LayoutItem, and load individual "widgets" of
-QML (possibly comprised of multiple files, and containing a self-contained bundle
-of UI and logic) into your scene to replace individual QGraphicsWidgets one at a time.
-*/