/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** 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. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
\page qtquick-usecase-styling.html
\title Use Case - Style And Theme Support
\brief Example of how to style user interface components in QML.

Styling with QML involves creating a visual type and binding that to a property
or by directly assigning a value to a property. For types that incorporate
Qt Quick's \l{Models and Views in Qt Quick}{delegates} the visual type attaches
to the \e delegate property.

When using \l{Qt Quick Controls 1}, the controls automatically set
the appropriate style from the respective \l{Supported Platforms}{platforms}.

\section1 Using the Styling QML Types

The \l{Qt Quick Controls 1}{controls} have a \c style property to which the
\e{styling types} bind. The controls have a corresponding styling type from the
\l{Qt Quick Controls 1 Styles QML Types}{Qt Quick Controls 1 Styles} module.
For example, \l [QtQuickControls1] Button has a
\l [QtQuickControls1] ButtonStyle type and \l [QtQuickControls1] Menu has a
\l [QtQuickControls1] MenuStyle type. The styling types provide properties
applicable to their respective controls such as the background, label, or for
some controls, the cursor appearance.

\snippet qmlapp/usecases/styling.qml 0

\note \l{Qt Quick Controls 1 Styles QML Types}{Qt Quick Controls 1 Styles} was
introduced in Qt 5.1 and requires \l{Qt Quick} 2.1.

\section1 Accessing the System Palette

The \l{SystemPalette} type provides information about the system's palette
information. QML applications can use this information to set the appearance
of visual types to match the native look-and-feel. In addition, on
\l{Desktop Platforms}{desktop} platforms, different color palettes are employed
when changing states, for example, when the application loses keyboard focus.

When using the \l{Qt Quick Controls 1}{controls}, the system colors are already
used.
*/
