/****************************************************************************
**
** 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 portingqmlapp.html
\title Porting QML Applications to Qt 5 Example
\brief Provides step-by-step instructions to port a QML application to Qt 5.

The new version of Qt Quick in Qt 5 brings in some changes to the way QML
applications are developed. For the complete list of changes that affect
existing QML applications, refer to \l{Porting QML Applications to Qt 5}.

This topic will walk through the porting process to make the \c{flickr} Qt 4
QML demo work on Qt 5. If you have the SDK based on Qt 4.8 installed, you can
find this demo application under
\c{<install_dir_root>/Examples/4.x/declarative/demos/}.

Follow these step-by-step instructions to port the \e{flickr} Qt 4 QML
application work to Qt 5:
\list 1
 \li Open the \e{flickr} project using Qt Creator.
 \li Edit all the \c{.qml} files and replace the \c{import QtQuick 1.0} statements
     with \c{import QtQuick 2.3}.
 \li Add the additional \c{import QtQuick.XmlListModel 2.0} statement to
     \c{qml/common/RssModel.qml}.

     \note \l{Qt Quick XmlListModel QML Types}{XmlListModel} is part of a
     submodule under \c{QtQuick} and it must be imported explicitly in order
     to use it.

 \li Make the following changes to
     \c{qmlapplicationviewer/qmlapplicationviewer.h}:
  \list
   \li Replace the \c{#include <QtDeclarative/QDeclarativeView>} with
       \c{#include <QQuickView>}.
   \li Replace \c{QDeclarativeView} with \c{QQuickView} in the class
       declaration for \c{QmlApplicationViewer}.
   \li Replace the parameter for \c{QmlApplicationViewer} constructor from
       \c{QWidget} to \c{QWindow}.
  \endlist
 \li Make the following changes to
     \c{qmlapplicationviewer/qmlapplicationviewer.cpp}:
  \list
   \li Replace all the \c{QtCore} and \c{QtDeclarative} include statements with
       these:
    \code
      #include <QCoreApplication>
      #include <QDir>
      #include <QFileInfo>
      #include <QQmlComponent>
      #include <QQmlEngine>
      #include <QQmlContext>
      #include <QDebug>
     \endcode
   \li Replace all instances of \c{QWidget} with \c{QWindow}, and
       \c{QDeclarativeView} with \c{QQuickView}.
   \li Remove the code between \c{#if defined(Q_OS_SYMBIAN)} and \c{#endif}
       macros as Symbian platform is not supported in Qt 5.
   \li Remove the code between \c{#if QT_VERSION < 0x040702} and \c{#else}, and
       \c{#endif // QT_VERSION < 0x040702} macros towards the end.
  \endlist
 \li Save changes to the project and run the application.
\endlist

Once you see the application running, check whether it behaves as expected. Here is a
snapshot of the application running on Ubuntu v12.04:
\image flickr_application.png

\section1 Related Topics
\l{Porting QML Applications to Qt 5}
*/
