blob: 6cc2fee482e518c1259a7f938dc0ff68308d8199 [file] [log] [blame]
/****************************************************************************
**
** 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}
*/