Porting C++ Applications to Qt 5 | Qt 5.5

- Qt 5.5
- Porting C++ Applications to Qt 5
- Qt 5.5.1 Reference Documentation

# Porting C++ Applications to Qt 5

This topic talks about the Qt Widgets and Qt WebKit changes in Qt 5. The following step-by-step instructions take you through the changes required to port the Animated Tiles application to Qt 5:

1. Open the Animated Tiles project using Qt Creator.
2. Edit `main.cpp` and replace the `#include <QtGui>` instance with `#include <QtWidgets>`. The Perl-script `fixqt4headers.pl` can be used to scan the source files of a project and perform the replacements.
3. Edit the `animatedtiles.pro` and add `QT += widgets` towards the end of the file.

   Note: Qt GUI is included by default in all Qt applications unless excluded using the `QT -= gui` directive in the `qmake` project file.

4. Save the changes and run the application.

Once you see the application running, check whether it behaves as expected.

A similar change is needed to port Qt 4 C++ applications using Qt WebKit. The following step-by-step instructions take you through the changes required to achieve this:

1. Open your project using Qt Creator.
2. Replace all `#include <QtWebKit>` instances with `#include <QtWebKitWidgets>` in your project source.
3. Edit the `.pro` file and add `QT += webkitwidgets`.

   Note: If the `QT +=` statement already exists, append `webkitwidgets` to it.

4. Save changes and run your application.

For larger projects, we recommend initially enabling deprecated API by adding the define

    DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0

to the `.pro` file. In a second step, the define can be removed.

It is possible to keep the project compiling with Qt 4 and Qt 5. This requires:

1. Omitting the module name from all includes. This is done by passing the command line option `--strip-modules` to `fixqt4headers.pl`.
2. Adding scopes depending on the version of Qt to the `.pro` files:

              greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

3. Introducing `#if` scopes around code using modified API:

              #if QT_VERSION >= 0x050000
                  headerView->setSectionResizeMode(QHeaderView::ResizeToContents);
              #else
                  headerView->setResizeMode(QHeaderView::ResizeToContents);
              #endif

## Related Topics

- C++ API Changes
- Porting QML Applications to Qt 5 Example
- Qt Examples And Tutorials