QValue3DAxisFormatter Class

The QValue3DAxisFormatter class is a base class for 3D value axis formatters. More...

Header: #include <QValue3DAxisFormatter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
qmake: QT += graphs
In QML: Value3DAxisFormatter
Inherits: QObject
Inherited By:

QLogValue3DAxisFormatter

Public Functions

QValue3DAxisFormatter(QObject *parent = nullptr)
virtual ~QValue3DAxisFormatter() override

Protected Functions

bool allowNegatives() const
bool allowZero() const
QValue3DAxis *axis() const
virtual QValue3DAxisFormatter *createNewInstance() const
QList<float> gridPositions() &&
const QList<float> &gridPositions() const &
QList<float> labelPositions() &&
const QList<float> &labelPositions() const &
QStringList labelStrings() &&
const QStringList &labelStrings() const &
QLocale locale() const
void markDirty(bool labelsChange = false)
virtual void populateCopy(QValue3DAxisFormatter &copy)
virtual float positionAt(float value) const
virtual void recalculate()
void setAllowNegatives(bool allow)
void setAllowZero(bool allow)
void setGridPoitions(QList<float> gridPositions)
void setLabelStrings(QStringList labelStrings)
void setLocale(const QLocale &locale)
void setSubGridPositions(QList<float> subGridPositions)
void setlabelPositions(QList<float> labelPositions)
virtual QString stringForValue(qreal value, const QString &format)
QList<float> subGridPositions() &&
const QList<float> &subGridPositions() const &
virtual float valueAt(float position) const

Detailed Description

This class provides formatting rules for a linear value 3D axis. Subclass it if you want to implement custom value axes.

The base class has no public API beyond constructors and destructors. It is meant to be only used internally. However, subclasses may implement public properties as needed.

See also QValue3DAxis and QLogValue3DAxisFormatter.

Member Function Documentation

[explicit] QValue3DAxisFormatter::QValue3DAxisFormatter(QObject *parent = nullptr)

Constructs a new value 3D axis formatter with the optional parent parent.

[override virtual noexcept] QValue3DAxisFormatter::~QValue3DAxisFormatter()

Deletes the value 3D axis formatter.

[protected] bool QValue3DAxisFormatter::allowNegatives() const

Returns true if negative values are valid values for the parent axis. The default implementation always returns true.

See also setAllowNegatives().

[protected] bool QValue3DAxisFormatter::allowZero() const

Returns true if zero is a valid value for the parent axis. The default implementation always returns true.

See also setAllowZero().

[protected] QValue3DAxis *QValue3DAxisFormatter::axis() const

Returns the parent axis. The parent axis must only be accessed in the recalculate() method to maintain thread safety in environments using a threaded renderer.

See also recalculate().

[virtual protected] QValue3DAxisFormatter *QValue3DAxisFormatter::createNewInstance() const

Creates a new empty value 3D axis formatter. Must be reimplemented in a subclass.

Returns the new formatter. The renderer uses this method to cache a copy of the formatter. The ownership of the new copy is transferred to the caller.

[protected] QList<float> QValue3DAxisFormatter::gridPositions() &&

Returns an array of normalized grid line positions by value. The default array size is equal to the segment count of the parent axis plus one, but a subclassed implementation of the recalculate() method may resize the array differently.

See also QValue3DAxis::segmentCount and recalculate().

[protected] const QList<float> &QValue3DAxisFormatter::gridPositions() const &

Returns a reference to the array of normalized grid line positions. The default array size is equal to the segment count of the parent axis plus one, but a subclassed implementation of the recalculate() method may resize the array differently.

See also QValue3DAxis::segmentCount and recalculate().

[protected] QList<float> QValue3DAxisFormatter::labelPositions() &&

Returns an array of normalized label positions by value. The default array size is equal to the segment count of the parent axis plus one, but a subclassed implementation of the recalculate() method may resize the array differently. By default, the label at the index zero corresponds to the minimum value of the axis.

See also QValue3DAxis::segmentCount, QAbstract3DAxis::labels, and recalculate().

[protected] const QList<float> &QValue3DAxisFormatter::labelPositions() const &

Returns a reference to the array of normalized label positions. The default array size is equal to the segment count of the parent axis plus one, but a subclassed implementation of the recalculate() method may resize the array differently. By default, the label at the index zero corresponds to the minimum value of the axis.

See also QValue3DAxis::segmentCount, QAbstract3DAxis::labels, and recalculate().

[protected] QStringList QValue3DAxisFormatter::labelStrings() &&

Returns a string list by value containing formatter label strings.

See also setLabelStrings() and labelPositions().

[protected] const QStringList &QValue3DAxisFormatter::labelStrings() const &

Returns a reference to the string list containing formatter label strings.

See also labelPositions().

[protected] QLocale QValue3DAxisFormatter::locale() const

Returns the current locale this formatter is using.

See also setLocale().

[protected] void QValue3DAxisFormatter::markDirty(bool labelsChange = false)

Marks this formatter as dirty, prompting the renderer to make a new copy of its cache on the next renderer synchronization. This method should be called by a subclass whenever the formatter is changed in a way that affects the resolved values. Set labelsChange to true if the change requires regenerating the parent axis label strings.

[virtual protected] void QValue3DAxisFormatter::populateCopy(QValue3DAxisFormatter &copy)

Copies all the values necessary for resolving positions, values, and strings with this formatter to the copy of the formatter. When reimplementing this method in a subclass, call the superclass version at some point. The renderer uses this method to cache a copy of the formatter.

Returns the new copy. The ownership of the new copy transfers to the caller.

[virtual protected] float QValue3DAxisFormatter::positionAt(float value) const

Returns the normalized position along the axis for the given value. The returned value should be between 0.0 (the minimum value) and 1.0 (the maximum value), inclusive, if the value is within the parent axis range.

Reimplement this method if the position cannot be resolved by linear interpolation between the parent axis minimum and maximum values.

See also recalculate() and valueAt().

[virtual protected] void QValue3DAxisFormatter::recalculate()

Resizes and populates the label and grid line position arrays and the label strings array, as well as calculates any values needed to map a value to its position. The parent axis can be accessed from inside this function.

This method must be reimplemented in a subclass if the default array contents are not suitable.

See gridPositions(), subGridPositions(), labelPositions(), and labelStrings() methods for documentation about the arrays that need to be resized and populated.

See also gridPositions(), subGridPositions(), labelPositions(), labelStrings(), and axis().

[protected] void QValue3DAxisFormatter::setAllowNegatives(bool allow)

Allows the parent axis to have negative values if allow is true.

See also allowNegatives().

[protected] void QValue3DAxisFormatter::setAllowZero(bool allow)

Allows the parent axis to have a zero value if allow is true.

See also allowZero().

[protected] void QValue3DAxisFormatter::setGridPoitions(QList<float> gridPositions)

Sets a list of new grid positions from gridPositions. The values should be between 0.0 (the minimum value) and 1.0 (the maximum value), inclusive.

See also QValue3DAxis::segmentCount, recalculate(), and gridPositions.

[protected] void QValue3DAxisFormatter::setLabelStrings(QStringList labelStrings)

Sets a list of new label strings from labelStrings. The array size must be equal to the size of the label positions array, which the indexes also correspond to.

See also labelPositions() and labelStrings().

[protected] void QValue3DAxisFormatter::setLocale(const QLocale &locale)

Sets the locale that this formatter uses. The graph automatically sets the formatter's locale to a graph's locale whenever the parent axis is set as an active axis of the graph, the axis formatter is set to an axis attached to the graph, or the graph's locale changes.

See also locale() and Q3DGraphsWidgetItem::locale.

[protected] void QValue3DAxisFormatter::setSubGridPositions(QList<float> subGridPositions)

Sets a list of new sub-grid positions from subGridPositions. The values should be between 0.0 (the minimum value) and 1.0 (the maximum value), inclusive.

See also QValue3DAxis::segmentCount, QValue3DAxis::subSegmentCount, recalculate(), and subGridPositions.

[protected] void QValue3DAxisFormatter::setlabelPositions(QList<float> labelPositions)

Sets a list of new label positions from labelPositions. The values should be between 0.0 (the minimum value) and 1.0 (the maximum value), inclusive.

See also QValue3DAxis::segmentCount, QAbstract3DAxis::labels, recalculate(), and labelPositions().

[virtual protected] QString QValue3DAxisFormatter::stringForValue(qreal value, const QString &format)

Returns the formatted label string using the specified value and format.

Reimplement this method in a subclass to resolve the formatted string for a given value if the default formatting rules specified for QValue3DAxis::labelFormat property are not sufficient.

See also recalculate(), labelStrings(), and QValue3DAxis::labelFormat.

[protected] QList<float> QValue3DAxisFormatter::subGridPositions() &&

Returns an array of normalized sub-grid line positions by value. The default array size is equal to the segment count of the parent axis times the sub-segment count of the parent axis minus one, but a subclassed implementation of the recalculate() method may resize the array differently.

See also setSubGridPositions(), QValue3DAxis::segmentCount, QValue3DAxis::subSegmentCount, and recalculate().

[protected] const QList<float> &QValue3DAxisFormatter::subGridPositions() const &

Returns a reference to the array of normalized sub-grid line positions. The default array size is equal to the segment count of the parent axis times the sub-segment count of the parent axis minus one, but a subclassed implementation of the recalculate() method may resize the array differently.

See also QValue3DAxis::segmentCount, QValue3DAxis::subSegmentCount, and recalculate().

[virtual protected] float QValue3DAxisFormatter::valueAt(float position) const

Returns the value at the normalized position along the axis. The position value should be between 0.0 (the minimum value) and 1.0 (the maximum value), inclusive, to obtain values within the parent axis range.

Reimplement this method if the value cannot be resolved by linear interpolation between the parent axis minimum and maximum values.

See also recalculate() and positionAt().