---------------------------
Qt Data Visualization 5.9.0
---------------------------

Qt Data Visualization module provides multiple graph types to visualize data in 3D space
both with C++ and Qt Quick 2.

System Requirements
===================

- Qt 5.2.1 or newer
- OpenGL 2.1 or newer (recommended) or OpenGL ES2 (reduced feature set)
- Manipulating Qt Data Visualization graphs with QML Designer requires
  Qt Creator 3.3 or newer

Building
========
Configure the project with qmake:
    qmake

After running qmake, build the project with make:
    (Linux) make
    (Windows with MinGw) mingw32-make
    (Windows with Visual Studio) nmake
    (OS X) make

The above generates the default makefiles for your configuration, which is typically
the release build if you are using precompiled binary Qt distribution. To build both
debug and release, or one specifically, use one of the following qmake lines instead.

For debug builds:
    qmake CONFIG+=debug
    make
  or
    qmake CONFIG+=debug_and_release
    make debug

For release builds:
    qmake CONFIG+=release
    make
  or
    qmake CONFIG+=debug_and_release
    make release

For both builds (Windows/OS X only):
    qmake CONFIG+="debug_and_release build_all"
    make

After building, install the module to your Qt directory:
    make install

If you want to uninstall the module:
    make uninstall

Building as a statically linked library
=======================================

The same as above applies, you will just have to add static to the CONFIG:
    qmake CONFIG+=static

Documentation
=============

The documentation can be generated with:
    make docs

The documentation is generated into the doc folder under the build folder.
Both Qt Assistant (qtdatavisualization.qch) and in HTML format
(qtdatavisualization subfolder) documentation is generated.

Please refer to the generated documentation for more information:
    doc/qtdatavisualization/qtdatavisualization-index.html

Known Issues
============

- Some platforms like Android and WinRT cannot handle multiple native windows properly,
  so only the Qt Quick 2 versions of graphs are available in practice for those platforms.
- Shadows are not supported with OpenGL ES2 (including Angle builds in Windows).
- Anti-aliasing doesn't work with OpenGL ES2 (including Angle builds in Windows).
- QCustom3DVolume items are not supported with OpenGL ES2 (including Angle builds in Windows).
- Surfaces with non-straight rows and columns do not always render properly.
- Widget based examples layout incorrectly in iOS.
- Reparenting a graph to an item in another QQuickWindow is not supported.
- Android builds of QML applications importing QtDataVisualization also require
  "QT += datavisualization" in the pro file. This is because Qt Data Visualization QML plugin has
  a dependency to Qt Data Visualization C++ library, which Qt Creator doesn't automatically add
  to the deployment package.
- Only OpenGL ES2 emulation is available for software renderer (that is, when using
  QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL))
