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