Qt 5.6 introduces many new features and improvements as well as bugfixes
over the 5.5.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:

  http://doc.qt.io/qt-5/index.html

The Qt version 5.6 series is binary compatible with the 5.5.x series.
Applications compiled for 5.5 will continue to run with 5.6.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

  https://bugreports.qt.io/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
*                          Controls                                        *
****************************************************************************

 - General
   * Added support for a QT_QUICK_CONTROLS_MOBILE environment variable to
     make the controls behave like mobile controls on platforms that are
     not automatically detected as mobile platforms

 - ComboBox
   * [QTBUG-39088] Added inputMethodHints property

 - Menus
   * [QTBUG-41951] Fixed keyboard navigation in submenus
   * iOS: let the platform plugin populate edit menus

 - ScrollView
   * [QTBUG-48044] Fixed interference with ListView transitions

 - SpinBox
   * Added cursorPosition property

 - TableView
   * [QTBUG-50416] Fixed dragging of headers with invisible header columns

 - TextArea
   * [QTBUG-44734] Added editingFinished signal

 - TextField
   * Added support for the attached EnterKey.type property
   * [QTBUG-49147] Hid the placeholder text when horizontally center
     aligned and focused

 - TreeView
   * Added rootIndex property

****************************************************************************
*                          Dialogs                                         *
****************************************************************************

 - FileDialog
   * [QTBUG-46477] Fixed potential UI freezes by creating the internal
     FolderListModel asynchronously when the dialog is first opened

 - Android
   * [QTBUG-47369] Fixed window decorations' dismiss-on-click behavior

 - Dialog
   * [QTBUG-49380] Fixed handling of button box width when it has less than
     two right buttons

****************************************************************************
*                          Layouts                                         *
****************************************************************************

 - General
   * [QTBUG-41216] Improved distribution when snapping to pixel grid

 - RowLayout, GridLayout
   * [QTBUG-45152] Fixed to adhere to sibling order of the children

 - StackLayout
   * Introduced StackLayout

****************************************************************************
*                          Styles                                          *
****************************************************************************

 - iOS
   * Implemented SliderStyle

 - Edit menus
   * Allowed styles to provide own edit menu implementations to provide the
     standard cut/copy/paste actions with the platform style

****************************************************************************
*                          Extras                                          *
****************************************************************************

 - Tumbler
   * [QTBUG-48680] Added animation interval argument to setCurrentIndexAt()
