summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-12-12 09:47:32 +0100
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2016-12-12 12:23:04 +0200
commit54910f8cf827d6f9474de9f6f88b3a158a058c56 (patch)
treef8b425821436f02d099299799f794d26345e0d5a /src
parent470330e69b7ee34beb27ed905fcb923d9cfdae31 (diff)
parent21c82c7e0db0a567c11ed80eac955d86ad0e1dff (diff)
Merge remote-tracking branch 'origin/5.8' into dev
Conflicts: tests/auto/cpptest/q3dscene/tst_scene.cpp tests/auto/qmltest/scene3d/tst_scene.qml Change-Id: I0aef5e7d8fe202e7f4c7565922938d1627ab8124
Diffstat (limited to 'src')
-rw-r--r--src/datavisualization/axis/qabstract3daxis.h2
-rw-r--r--src/datavisualization/axis/qabstract3daxis_p.h2
-rw-r--r--src/datavisualization/data/qbar3dseries.cpp2
-rw-r--r--src/datavisualization/data/qscatter3dseries.cpp2
-rw-r--r--src/datavisualization/data/qscatterdataproxy.cpp25
-rw-r--r--src/datavisualization/data/qscatterdataproxy_p.h7
-rw-r--r--src/datavisualization/data/qsurface3dseries.cpp2
-rw-r--r--src/datavisualization/data/qsurfacedataproxy.cpp61
-rw-r--r--src/datavisualization/data/qsurfacedataproxy_p.h6
-rw-r--r--src/datavisualization/doc/qtdatavis3d.qdocconf2
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-index.qdoc12
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization.qdoc30
-rw-r--r--src/datavisualization/engine/bars3dcontroller.cpp7
-rw-r--r--src/datavisualization/engine/scatter3dcontroller.cpp9
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp9
-rw-r--r--src/datavisualization/input/qtouch3dinputhandler_p.h10
16 files changed, 139 insertions, 49 deletions
diff --git a/src/datavisualization/axis/qabstract3daxis.h b/src/datavisualization/axis/qabstract3daxis.h
index 63dd0340..ff587acf 100644
--- a/src/datavisualization/axis/qabstract3daxis.h
+++ b/src/datavisualization/axis/qabstract3daxis.h
@@ -124,6 +124,8 @@ private:
friend class Abstract3DController;
friend class Bars3DController;
+ friend class QScatterDataProxyPrivate;
+ friend class QSurfaceDataProxyPrivate;
};
QT_END_NAMESPACE_DATAVISUALIZATION
diff --git a/src/datavisualization/axis/qabstract3daxis_p.h b/src/datavisualization/axis/qabstract3daxis_p.h
index deb53266..418fa449 100644
--- a/src/datavisualization/axis/qabstract3daxis_p.h
+++ b/src/datavisualization/axis/qabstract3daxis_p.h
@@ -84,6 +84,8 @@ protected:
friend class QAbstract3DAxis;
friend class QValue3DAxis;
friend class QCategory3DAxis;
+ friend class QScatterDataProxyPrivate;
+ friend class QSurfaceDataProxyPrivate;
};
QT_END_NAMESPACE_DATAVISUALIZATION
diff --git a/src/datavisualization/data/qbar3dseries.cpp b/src/datavisualization/data/qbar3dseries.cpp
index 04aa218b..a89b1f3f 100644
--- a/src/datavisualization/data/qbar3dseries.cpp
+++ b/src/datavisualization/data/qbar3dseries.cpp
@@ -326,6 +326,8 @@ void QBar3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *newCon
&Bars3DController::handleDataRowLabelsChanged);
QObject::connect(barDataProxy, &QBarDataProxy::columnLabelsChanged, controller,
&Bars3DController::handleDataColumnLabelsChanged);
+ QObject::connect(qptr(), &QBar3DSeries::dataProxyChanged, controller,
+ &Bars3DController::handleArrayReset);
}
}
diff --git a/src/datavisualization/data/qscatter3dseries.cpp b/src/datavisualization/data/qscatter3dseries.cpp
index a674fa02..54873485 100644
--- a/src/datavisualization/data/qscatter3dseries.cpp
+++ b/src/datavisualization/data/qscatter3dseries.cpp
@@ -306,6 +306,8 @@ void QScatter3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *ne
controller, &Scatter3DController::handleItemsRemoved);
QObject::connect(scatterDataProxy, &QScatterDataProxy::itemsInserted,
controller, &Scatter3DController::handleItemsInserted);
+ QObject::connect(qptr(), &QScatter3DSeries::dataProxyChanged,
+ controller, &Scatter3DController::handleArrayReset);
}
}
diff --git a/src/datavisualization/data/qscatterdataproxy.cpp b/src/datavisualization/data/qscatterdataproxy.cpp
index 167c074a..1fe5b3fc 100644
--- a/src/datavisualization/data/qscatterdataproxy.cpp
+++ b/src/datavisualization/data/qscatterdataproxy.cpp
@@ -29,6 +29,7 @@
#include "qscatterdataproxy_p.h"
#include "qscatter3dseries_p.h"
+#include "qabstract3daxis_p.h"
QT_BEGIN_NAMESPACE_DATAVISUALIZATION
@@ -366,7 +367,9 @@ void QScatterDataProxyPrivate::removeItems(int index, int removeCount)
m_dataArray->remove(index, removeCount);
}
-void QScatterDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxValues) const
+void QScatterDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxValues,
+ QAbstract3DAxis *axisX, QAbstract3DAxis *axisY,
+ QAbstract3DAxis *axisZ) const
{
if (m_dataArray->isEmpty())
return;
@@ -385,19 +388,25 @@ void QScatterDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxV
const QVector3D &pos = m_dataArray->at(i).position();
float value = pos.x();
- if (minX > value)
+ if (qIsNaN(value) || qIsInf(value))
+ continue;
+ if (isValidValue(minX, value, axisX))
minX = value;
if (maxX < value)
maxX = value;
value = pos.y();
- if (minY > value)
+ if (qIsNaN(value) || qIsInf(value))
+ continue;
+ if (isValidValue(minY, value, axisY))
minY = value;
if (maxY < value)
maxY = value;
value = pos.z();
- if (minZ > value)
+ if (qIsNaN(value) || qIsInf(value))
+ continue;
+ if (isValidValue(minZ, value, axisZ))
minZ = value;
if (maxZ < value)
maxZ = value;
@@ -413,6 +422,14 @@ void QScatterDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxV
maxValues.setZ(maxZ);
}
+bool QScatterDataProxyPrivate::isValidValue(float axisValue, float value,
+ QAbstract3DAxis *axis) const
+{
+ return (axisValue > value && (value > 0.0f
+ || (value == 0.0f && axis->d_ptr->allowZero())
+ || (value < 0.0f && axis->d_ptr->allowNegatives())));
+}
+
void QScatterDataProxyPrivate::setSeries(QAbstract3DSeries *series)
{
QAbstractDataProxyPrivate::setSeries(series);
diff --git a/src/datavisualization/data/qscatterdataproxy_p.h b/src/datavisualization/data/qscatterdataproxy_p.h
index 49ab7362..157152b0 100644
--- a/src/datavisualization/data/qscatterdataproxy_p.h
+++ b/src/datavisualization/data/qscatterdataproxy_p.h
@@ -46,6 +46,8 @@
QT_BEGIN_NAMESPACE_DATAVISUALIZATION
+class QAbstract3DAxis;
+
class QScatterDataProxyPrivate : public QAbstractDataProxyPrivate
{
Q_OBJECT
@@ -61,8 +63,9 @@ public:
void insertItem(int index, const QScatterDataItem &item);
void insertItems(int index, const QScatterDataArray &items);
void removeItems(int index, int removeCount);
-
- void limitValues(QVector3D &minValues, QVector3D &maxValues) const;
+ void limitValues(QVector3D &minValues, QVector3D &maxValues, QAbstract3DAxis *axisX,
+ QAbstract3DAxis *axisY, QAbstract3DAxis *axisZ) const;
+ bool isValidValue(float axisValue, float value, QAbstract3DAxis *axis) const;
virtual void setSeries(QAbstract3DSeries *series);
private:
diff --git a/src/datavisualization/data/qsurface3dseries.cpp b/src/datavisualization/data/qsurface3dseries.cpp
index e2d1b03d..2e8e121d 100644
--- a/src/datavisualization/data/qsurface3dseries.cpp
+++ b/src/datavisualization/data/qsurface3dseries.cpp
@@ -440,6 +440,8 @@ void QSurface3DSeriesPrivate::connectControllerAndProxy(Abstract3DController *ne
&Surface3DController::handleRowsInserted);
QObject::connect(surfaceDataProxy, &QSurfaceDataProxy::itemChanged, controller,
&Surface3DController::handleItemChanged);
+ QObject::connect(qptr(), &QSurface3DSeries::dataProxyChanged, controller,
+ &Surface3DController::handleArrayReset);
}
}
diff --git a/src/datavisualization/data/qsurfacedataproxy.cpp b/src/datavisualization/data/qsurfacedataproxy.cpp
index c983ead7..fa7990b1 100644
--- a/src/datavisualization/data/qsurfacedataproxy.cpp
+++ b/src/datavisualization/data/qsurfacedataproxy.cpp
@@ -29,6 +29,7 @@
#include "qsurfacedataproxy_p.h"
#include "qsurface3dseries_p.h"
+#include "qabstract3daxis_p.h"
QT_BEGIN_NAMESPACE_DATAVISUALIZATION
@@ -504,7 +505,9 @@ QSurfaceDataProxy *QSurfaceDataProxyPrivate::qptr()
return static_cast<QSurfaceDataProxy *>(q_ptr);
}
-void QSurfaceDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxValues) const
+void QSurfaceDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxValues,
+ QAbstract3DAxis *axisX, QAbstract3DAxis *axisY,
+ QAbstract3DAxis *axisZ) const
{
float min = 0.0f;
float max = 0.0f;
@@ -524,7 +527,9 @@ void QSurfaceDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxV
if (row) {
for (int j = 0; j < columns; j++) {
float itemValue = m_dataArray->at(i)->at(j).y();
- if (min > itemValue)
+ if (qIsNaN(itemValue) || qIsInf(itemValue))
+ continue;
+ if (min > itemValue && isValidValue(itemValue, axisY))
min = itemValue;
if (max < itemValue)
max = itemValue;
@@ -534,23 +539,59 @@ void QSurfaceDataProxyPrivate::limitValues(QVector3D &minValues, QVector3D &maxV
minValues.setY(min);
maxValues.setY(max);
+
if (columns) {
+ // Have some defaults
float xLow = m_dataArray->at(0)->at(0).x();
float xHigh = m_dataArray->at(0)->last().x();
float zLow = m_dataArray->at(0)->at(0).z();
float zHigh = m_dataArray->last()->at(0).z();
- minValues.setX(qMin(xLow, xHigh));
- minValues.setZ(qMin(zLow, zHigh));
- maxValues.setX(qMax(xLow, xHigh));
- maxValues.setZ(qMax(zLow, zHigh));
+ for (int i = 0; i < columns; i++) {
+ float zItemValue = m_dataArray->at(0)->at(i).z();
+ if (qIsNaN(zItemValue) || qIsInf(zItemValue))
+ continue;
+ else if (isValidValue(zItemValue, axisZ))
+ zLow = qMin(zLow,zItemValue);
+ }
+ for (int i = 0; i < columns; i++) {
+ float zItemValue = m_dataArray->last()->at(i).z();
+ if (qIsNaN(zItemValue) || qIsInf(zItemValue))
+ continue;
+ else if (isValidValue(zItemValue, axisZ))
+ zHigh = qMax(zHigh, zItemValue);
+ }
+ for (int i = 0; i < rows; i++) {
+ float xItemValue = m_dataArray->at(i)->at(0).x();
+ if (qIsNaN(xItemValue) || qIsInf(xItemValue))
+ continue;
+ else if (isValidValue(xItemValue, axisX))
+ xLow = qMin(xLow, xItemValue);
+ }
+ for (int i = 0; i < rows; i++) {
+ float xItemValue = m_dataArray->at(i)->last().x();
+ if (qIsNaN(xItemValue) || qIsInf(xItemValue))
+ continue;
+ else if (isValidValue(xItemValue, axisX))
+ xHigh = qMax(xHigh, xItemValue);
+ }
+ minValues.setX(xLow);
+ minValues.setZ(zLow);
+ maxValues.setX(xHigh);
+ maxValues.setZ(zHigh);
} else {
- minValues.setX(0.0f);
- minValues.setZ(0.0f);
- maxValues.setX(0.0f);
- maxValues.setZ(0.0f);
+ minValues.setX(axisX->d_ptr->allowZero() ? 0.0f : 1.0f);
+ minValues.setZ(axisZ->d_ptr->allowZero() ? 0.0f : 1.0f);
+ maxValues.setX(axisX->d_ptr->allowZero() ? 0.0f : 1.0f);
+ maxValues.setZ(axisZ->d_ptr->allowZero() ? 0.0f : 1.0f);
}
}
+bool QSurfaceDataProxyPrivate::isValidValue(float value, QAbstract3DAxis *axis) const
+{
+ return (value > 0.0f || (value == 0.0f && axis->d_ptr->allowZero())
+ || (value < 0.0f && axis->d_ptr->allowNegatives()));
+}
+
void QSurfaceDataProxyPrivate::clearRow(int rowIndex)
{
if (m_dataArray->at(rowIndex)) {
diff --git a/src/datavisualization/data/qsurfacedataproxy_p.h b/src/datavisualization/data/qsurfacedataproxy_p.h
index 808e27df..80443aec 100644
--- a/src/datavisualization/data/qsurfacedataproxy_p.h
+++ b/src/datavisualization/data/qsurfacedataproxy_p.h
@@ -45,6 +45,8 @@
QT_BEGIN_NAMESPACE_DATAVISUALIZATION
+class QAbstract3DAxis;
+
class QSurfaceDataProxyPrivate : public QAbstractDataProxyPrivate
{
Q_OBJECT
@@ -61,7 +63,9 @@ public:
void insertRow(int rowIndex, QSurfaceDataRow *row);
void insertRows(int rowIndex, const QSurfaceDataArray &rows);
void removeRows(int rowIndex, int removeCount);
- void limitValues(QVector3D &minValues, QVector3D &maxValues) const;
+ void limitValues(QVector3D &minValues, QVector3D &maxValues, QAbstract3DAxis *axisX,
+ QAbstract3DAxis *axisY, QAbstract3DAxis *axisZ) const;
+ bool isValidValue(float value, QAbstract3DAxis *axis) const;
virtual void setSeries(QAbstract3DSeries *series);
diff --git a/src/datavisualization/doc/qtdatavis3d.qdocconf b/src/datavisualization/doc/qtdatavis3d.qdocconf
index 62421ac9..7d89c76a 100644
--- a/src/datavisualization/doc/qtdatavis3d.qdocconf
+++ b/src/datavisualization/doc/qtdatavis3d.qdocconf
@@ -14,7 +14,7 @@ sourcedirs += ..
examplesinstallpath = datavisualization
-depends = qtcore qtgui qtqml qtquick qtmultimedia qtdoc
+depends = qtcore qtgui qtqml qtquick qtmultimedia qtdoc qtwidgets
qhp.projects = QtDataVisualization
diff --git a/src/datavisualization/doc/src/qtdatavisualization-index.qdoc b/src/datavisualization/doc/src/qtdatavisualization-index.qdoc
index e97f2200..0a5f0434 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-index.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-index.qdoc
@@ -80,18 +80,20 @@
\section1 Articles
\list
+ \li \l{Qt Data Visualization Getting Started}{Getting Started}
\li \l{Qt Data Visualization Data Handling}{Data Handling}
\li \l{Qt Data Visualization Interacting with Data}{Interacting with Data}
\li \l{Qt Data Visualization Known Issues}{Known Issues}
\endlist
- \section1 References
+ \section1 Examples
+ \list
+ \li \l{Qt Data Visualization Examples}
+ \endlist
+
+ \section1 API Reference
\list
\li \l{Qt Data Visualization C++ Classes}
\li \l{Qt Data Visualization QML Types}
\endlist
-
- Qt Data Visualization comes with the following examples:
-
- \annotatedlist qtdatavisualization_examples
*/
diff --git a/src/datavisualization/doc/src/qtdatavisualization.qdoc b/src/datavisualization/doc/src/qtdatavisualization.qdoc
index 0eddd019..37a05d9d 100644
--- a/src/datavisualization/doc/src/qtdatavisualization.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization.qdoc
@@ -30,8 +30,7 @@
/*!
\namespace QtDataVisualization
\inmodule QtDataVisualization
-
- QtDataVisualization namespace holds all the classes and enumerations in the QtDataVisualization
+ \brief Contains the classes and enumerations in the Qt Data Visualization
module.
\generatelist{classesbymodule QtDataVisualization}
@@ -77,7 +76,7 @@
\group qtdatavisualization_getting_started
\title Qt Data Visualization Getting Started
- \section1 Installing the Qt Data Visualization module
+ \section1 Installing the Qt Data Visualization Module
Use the \c {Package Manager} in \c {Maintenance Tool} or the \c {Online installer} to install
the Qt Data Visualization module. The module can be found under \c {Qt Enterprise Add-Ons}
@@ -159,18 +158,7 @@
\snippet doc_src_qtdatavisualization.cpp 7
- \section1 Running examples
-
- Qt Data Visualization examples are found under the \c examples subdirectory. To build and run a
- single example, in this case qmlsurface, navigate to the example directory and enter the
- following commands:
-
- \snippet doc_src_qtdatavisualization.cpp 8
-
- \note On some platforms, such as Windows, the executable can be generated under debug or
- release folders, depending on your build.
-
- \section1 Creating a simple application
+ \section1 Creating a Simple Application
To create a simple application, start by creating a new Qt Gui Application project in Qt
Creator and add this line to the \c .pro file of the project:
@@ -213,7 +201,7 @@
\snippet doc_src_qtdatavisualization.cpp 11
- \section1 Data proxies
+ \section1 Data Proxies
The data that users wish to visualize comes in many formats, all of which cannot obviously be
directly supported. Therefore, Qt Data Visualization implements data proxies into which
@@ -234,7 +222,7 @@
it is usually more efficient to store each set in a different series and just change the series,
rather than reset the data in one proxy every time you need to switch.
- \section1 Item models and data mapping
+ \section1 Item Models and Data Mapping
For common use cases, Qt Data Visualization offers specialized proxies. One such case is having
data in an item model (QAbstractItemModel subclass), which is a common way to store data in
@@ -264,7 +252,7 @@
about how to use them: QItemModelBarDataProxy, QItemModelScatterDataProxy, and
QItemModelSurfaceDataProxy.
- \section1 Other custom proxies
+ \section1 Other Custom Proxies
QHeightMapSurfaceDataProxy is a specialized proxy for generating a surface graph from a
heightmap image. See the QHeightMapSurfaceDataProxy documentation for more information.
@@ -273,7 +261,7 @@
defines a custom data set based on variant lists and an extension of the basic proxy to resolve
that data with an associated mapper.
- \section1 Dealing with real-time data
+ \section1 Dealing with Real-time Data
When you have a data set that updates rapidly, it is important to handle data properly to
ensure good performance. Since memory allocation is a costly operation, always use
@@ -304,13 +292,13 @@
\page qtdatavisualization_interacting_with_data.html
\title Qt Data Visualization Interacting with Data
- \section1 Interacting with data
+ \section1 Interacting with Data
You can interact with the rendered graph with either mouse or touch to rotate, zoom, or select
data. For the default mouse controls, see Q3DInputHandler documentation, and for the default
touch controls, see QTouch3DInputHandler documentation.
- \section1 Data selection modes
+ \section1 Data Selection Modes
All visualization types support selecting a single data item - a bar, a scatter item, or a surface
vertex - using mouse, touch, and programmatically via the series APIs. The selected item is highlighted
diff --git a/src/datavisualization/engine/bars3dcontroller.cpp b/src/datavisualization/engine/bars3dcontroller.cpp
index 1cfc4e64..6b304026 100644
--- a/src/datavisualization/engine/bars3dcontroller.cpp
+++ b/src/datavisualization/engine/bars3dcontroller.cpp
@@ -147,7 +147,12 @@ void Bars3DController::synchDataToRenderer()
void Bars3DController::handleArrayReset()
{
- QBar3DSeries *series = static_cast<QBarDataProxy *>(sender())->series();
+ QBar3DSeries *series;
+ if (qobject_cast<QBarDataProxy *>(sender()))
+ series = static_cast<QBarDataProxy *>(sender())->series();
+ else
+ series = static_cast<QBar3DSeries *>(sender());
+
if (series->isVisible()) {
adjustAxisRanges();
m_isDataDirty = true;
diff --git a/src/datavisualization/engine/scatter3dcontroller.cpp b/src/datavisualization/engine/scatter3dcontroller.cpp
index ee190196..6fc29b20 100644
--- a/src/datavisualization/engine/scatter3dcontroller.cpp
+++ b/src/datavisualization/engine/scatter3dcontroller.cpp
@@ -135,7 +135,12 @@ QList<QScatter3DSeries *> Scatter3DController::scatterSeriesList()
void Scatter3DController::handleArrayReset()
{
- QScatter3DSeries *series = static_cast<QScatterDataProxy *>(sender())->series();
+ QScatter3DSeries *series;
+ if (qobject_cast<QScatterDataProxy *>(sender()))
+ series = static_cast<QScatterDataProxy *>(sender())->series();
+ else
+ series = static_cast<QScatter3DSeries *>(sender());
+
if (series->isVisible()) {
adjustAxisRanges();
m_isDataDirty = true;
@@ -394,7 +399,7 @@ void Scatter3DController::adjustAxisRanges()
if (scatterSeries->isVisible() && proxy) {
QVector3D minLimits;
QVector3D maxLimits;
- proxy->dptrc()->limitValues(minLimits, maxLimits);
+ proxy->dptrc()->limitValues(minLimits, maxLimits, valueAxisX, valueAxisY, valueAxisZ);
if (adjustX) {
if (!series) {
// First series initializes the values
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index b0cdef14..1a140a5c 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -321,7 +321,12 @@ void Surface3DController::clearSelection()
void Surface3DController::handleArrayReset()
{
- QSurface3DSeries *series = static_cast<QSurfaceDataProxy *>(sender())->series();
+ QSurface3DSeries *series;
+ if (qobject_cast<QSurfaceDataProxy *>(sender()))
+ series = static_cast<QSurfaceDataProxy *>(sender())->series();
+ else
+ series = static_cast<QSurface3DSeries *>(sender());
+
if (series->isVisible()) {
adjustAxisRanges();
m_isDataDirty = true;
@@ -510,7 +515,7 @@ void Surface3DController::adjustAxisRanges()
if (surfaceSeries->isVisible() && proxy) {
QVector3D minLimits;
QVector3D maxLimits;
- proxy->dptrc()->limitValues(minLimits, maxLimits);
+ proxy->dptrc()->limitValues(minLimits, maxLimits, valueAxisX, valueAxisY, valueAxisZ);
if (adjustX) {
if (first) {
// First series initializes the values
diff --git a/src/datavisualization/input/qtouch3dinputhandler_p.h b/src/datavisualization/input/qtouch3dinputhandler_p.h
index 3ab7f1a9..940c7653 100644
--- a/src/datavisualization/input/qtouch3dinputhandler_p.h
+++ b/src/datavisualization/input/qtouch3dinputhandler_p.h
@@ -30,6 +30,16 @@
#ifndef QTOUCH3DINPUTHANDLER_P_H
#define QTOUCH3DINPUTHANDLER_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the QtDataVisualization API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+
#include "q3dinputhandler_p.h"
#include "qtouch3dinputhandler.h"