/****************************************************************************
**
** 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$
**
****************************************************************************/

/*!
    \example webengine/minimal
    \title WebEngine Qt Quick Minimal Example
    \ingroup webengine-examples
    \brief Displays a web page using the Qt Quick integration of \QWE.

    \image minimal-example.png

    \e {WebEngine Qt Quick Minimal Example} demonstrates how to use the
    \l{WebEngineView} item to render a web page. It shows the minimum amount of
    code needed to load and display an HTML page, and can be used as a basis for
    further experimentation.

    \include examples-run.qdocinc

    \section1 C++ Code

    In \c main.cpp we use only the QGuiApplication and QQmlApplicationEngine
    classes. We also include \c qtwebengineglobal.h to be able to use
    \l{QtWebEngine::initialize}.

    \quotefromfile webengine/minimal/main.cpp
    \skipto #include
    \printto main

    In the \c main function we first set the
    \l{QCoreApplication::organizationName} property. This affects the locations
    where \QWE stores persistent and cached data (see also
    \l{WebEngineProfile::cachePath} and
    \l{WebEngineProfile::persistentStoragePath}).

    We also set the Qt::AA_EnableHighDpiScaling attribute. This lets the web
    view automatically scale on high-dpi displays. Then we instantiate a
    QGuiApplication object.

    Next, we call \l{QtWebEngine::initialize}, which makes sure that OpenGL
    contexts can be shared between the main process and the dedicated renderer
    process (\c QtWebEngineProcess). This method needs to be called before
    any OpenGL context is created.

    Then we create a QQmlApplicationEngine, and tell it to load \c main.qml
    from the \l{The Qt Resource System}{Qt Resource System}.

    Finally, QGuiApplication::exec() launches the main event loop.

    \printuntil }

    \section1 QML Code

    In \c main.qml we create the top level window, set a sensible default size
    and make it visible. The window will be filled by a WebEngineView item
    loading the \l{Qt Homepage}.

    \quotefromfile webengine/minimal/main.qml
    \skipto import
    \printuntil }
    \printline }

    \section1 Requirements

    The example requires a working internet connection to render the
    \l{Qt Homepage}.
    An optional system proxy should be picked up automatically.
*/
