- Qt 6.9
- Qt Graphs
- C++ Classes
- QtGraphs
- QHeightMapSurfaceDataProxy
- Qt Graphs | Commercial or GPLv3

# QHeightMapSurfaceDataProxy Class

Base proxy class for Q3DSurfaceWidgetItem. More...

Header: | `#include <QHeightMapSurfaceDataProxy>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Graphs)` `target_link_libraries(mytarget PRIVATE Qt6::Graphs)`
qmake: | `QT += graphs`
In QML: | HeightMapSurfaceDataProxy
Inherits: | QSurfaceDataProxy

- List of all members, including inherited members
- QHeightMapSurfaceDataProxy is part of Qt Graphs C++ Classes for 3D.

## Properties

autoScaleY : bool heightMap : QImage heightMapFile : QString maxXValue : float maxYValue : float | maxZValue : float minXValue : float minYValue : float minZValue : float

## Public Functions

| QHeightMapSurfaceDataProxy(QObject *parent = nullptr)
| QHeightMapSurfaceDataProxy(const QImage &image, QObject *parent = nullptr)
| QHeightMapSurfaceDataProxy(const QString &filename, QObject *parent = nullptr)
virtual | ~QHeightMapSurfaceDataProxy() override
bool | autoScaleY() const
QImage | heightMap() const
QString | heightMapFile() const
float | maxXValue() const
float | maxYValue() const
float | maxZValue() const
float | minXValue() const
float | minYValue() const
float | minZValue() const
void | setAutoScaleY(bool enabled)
void | setHeightMap(const QImage &image)
void | setHeightMapFile(const QString &filename)
void | setMaxXValue(float max)
void | setMaxYValue(float max)
void | setMaxZValue(float max)
void | setMinXValue(float min)
void | setMinYValue(float min)
void | setMinZValue(float min)
void | setValueRanges(float minX, float maxX, float minZ, float maxZ)

## Signals

void | autoScaleYChanged(bool enabled)
void | heightMapChanged(const QImage &image)
void | heightMapFileChanged(const QString &filename)
void | maxXValueChanged(float value)
void | maxYValueChanged(float value)
void | maxZValueChanged(float value)
void | minXValueChanged(float value)
void | minYValueChanged(float value)
void | minZValueChanged(float value)

## Detailed Description

QHeightMapSurfaceDataProxy takes care of the processing of height map data related to surfaces. It provides the visualization of a height map as a surface plot.

Since height maps do not contain values for X or Z axes, those values need to be given separately using the minXValue, maxXValue, minZValue, and maxZValue properties. The X-value corresponds to image horizontal direction and the Z-value to the vertical. Setting any of these properties triggers an asynchronous re-resolution of any existing height map.

See also QSurfaceDataProxy and Qt Graphs Data Handling with 3D.

## Property Documentation

### autoScaleY : bool

Scale height values to Y-axis.

Defaults to `false`.

When this property is set to `true`, the height values are scaled to fit on the Y-axis between minYValue and maxYValue.

Access functions:

bool | autoScaleY() const
void | setAutoScaleY(bool enabled)

Notifier signal:

void | autoScaleYChanged(bool enabled)

See also minYValue and maxYValue.

### heightMap : QImage

This property holds the height map image to be visualized.

Access functions:

QImage | heightMap() const
void | setHeightMap(const QImage &image)

Notifier signal:

void | heightMapChanged(const QImage &image)

### heightMapFile : QString

This property holds the name of the file with a height map image to be visualized.

Access functions:

QString | heightMapFile() const
void | setHeightMapFile(const QString &filename)

Notifier signal:

void | heightMapFileChanged(const QString &filename)

### maxXValue : float

This property holds the maximum X value for the generated surface points.

Defaults to `10.0`.

When setting this property the corresponding minimum value is adjusted if necessary, to ensure that the range remains valid.

Access functions:

float | maxXValue() const
void | setMaxXValue(float max)

Notifier signal:

void | maxXValueChanged(float value)

### maxYValue : float

This property holds the maximum Y value for the generated surface points.

Defaults to `10.0`.

When setting this property the corresponding minimum value is adjusted if necessary, to ensure that the range remains valid.

Access functions:

float | maxYValue() const
void | setMaxYValue(float max)

Notifier signal:

void | maxYValueChanged(float value)

See also autoScaleY.

### maxZValue : float

This property holds the maximum Z value for the generated surface points.

Defaults to `10.0`.

When setting this property the corresponding minimum value is adjusted if necessary, to ensure that the range remains valid.

Access functions:

float | maxZValue() const
void | setMaxZValue(float max)

Notifier signal:

void | maxZValueChanged(float value)

### minXValue : float

This property holds the minimum X value for the generated surface points.

Defaults to `0.0`.

When setting this property the corresponding maximum value is adjusted if necessary, to ensure that the range remains valid.

Access functions:

float | minXValue() const
void | setMinXValue(float min)

Notifier signal:

void | minXValueChanged(float value)

### minYValue : float

This property holds the minimum Y value for the generated surface points.

Defaults to `0.0`.

When setting this property the corresponding maximum value is adjusted if necessary, to ensure that the range remains valid.

Access functions:

float | minYValue() const
void | setMinYValue(float min)

Notifier signal:

void | minYValueChanged(float value)

See also autoScaleY.

### minZValue : float

This property holds the minimum Z value for the generated surface points.

Defaults to `0.0`.

When setting this property the corresponding maximum value is adjusted if necessary, to ensure that the range remains valid.

Access functions:

float | minZValue() const
void | setMinZValue(float min)

Notifier signal:

void | minZValueChanged(float value)

## Member Function Documentation

### `[explicit]` QHeightMapSurfaceDataProxy::QHeightMapSurfaceDataProxy(QObject *parent = nullptr)

Constructs QHeightMapSurfaceDataProxy with the given parent.

### `[explicit]` QHeightMapSurfaceDataProxy::QHeightMapSurfaceDataProxy(const QImage &image, QObject *parent = nullptr)

Constructs QHeightMapSurfaceDataProxy with the given image and parent. Height map is set by calling setHeightMap() with image.

See also heightMap.

### `[explicit]` QHeightMapSurfaceDataProxy::QHeightMapSurfaceDataProxy(const QString &filename, QObject *parent = nullptr)

Constructs QHeightMapSurfaceDataProxy from the given image filename and parent. Height map is set by calling setHeightMapFile() with filename.

See also heightMapFile.

### `[override virtual noexcept]` QHeightMapSurfaceDataProxy::~QHeightMapSurfaceDataProxy()

Destroys QHeightMapSurfaceDataProxy.

### void QHeightMapSurfaceDataProxy::setHeightMap(const QImage &image)

Replaces current data with the height map data specified by image.

There are several formats the image can be given in, but if it is not in a directly usable format, a conversion is made.

Note: If the result seems wrong, the automatic conversion failed and you should try converting the image yourself before setting it. Preferred format is QImage::Format_RGB32 in grayscale.

The height of the image is read from the red component of the pixels if the image is in grayscale. Otherwise it is an average calculated from the red, green, and blue components of the pixels. Using grayscale images may improve data conversion speed for large images.

Not recommended formats: all mono formats (for example QImage::Format_Mono).

The height map is resolved asynchronously. QSurfaceDataProxy::arrayReset() is emitted when the data has been resolved.

Note: Setter function for property heightMap.

See also heightMap().

### void QHeightMapSurfaceDataProxy::setHeightMapFile(const QString &filename)

Replaces current data with height map data from the file specified by filename.

Note: Setter function for property heightMapFile.

See also heightMapFile() and heightMap.

### void QHeightMapSurfaceDataProxy::setValueRanges(float minX, float maxX, float minZ, float maxZ)

A convenience function for setting all minimum (minX and minZ) and maximum (maxX and maxZ) values at the same time. The minimum values must be smaller than the corresponding maximum value. Otherwise the values get adjusted so that they are valid.