Q3DTheme Class

Q3DTheme class provides a visual style for graphs. More...

Header: #include <Q3DTheme>
CMake: find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
qmake: QT += graphs
Instantiated By: Theme3D
Inherits: QObject and QQmlParserStatus
Status: Technical Preview

Public Types

enum class ColorStyle { Uniform, ObjectGradient, RangeGradient }
enum class Theme { Qt, PrimaryColors, StoneMoss, ArmyBlue, Retro, …, UserDefined }

Properties

Public Functions

Q3DTheme(QObject *parent = nullptr)
Q3DTheme(Q3DTheme::Theme themeType, QObject *parent = nullptr)
virtual ~Q3DTheme() override
float ambientLightStrength() const
QColor backgroundColor() const
Q3DTheme::ColorStyle colorStyle() const
QFont font() const
QColor gridLineColor() const
bool isBackgroundEnabled() const
bool isGridEnabled() const
bool isLabelBackgroundEnabled() const
bool isLabelBorderEnabled() const
bool isLabelsEnabled() const
QColor labelBackgroundColor() const
QColor labelTextColor() const
QColor lightColor() const
float lightStrength() const
QColor multiHighlightColor() const
void setAmbientLightStrength(float strength)
void setBackgroundColor(const QColor &color)
void setBackgroundEnabled(bool enabled)
void setColorStyle(Q3DTheme::ColorStyle style)
void setFont(const QFont &font)
void setGridEnabled(bool enabled)
void setGridLineColor(const QColor &color)
void setLabelBackgroundColor(const QColor &color)
void setLabelBackgroundEnabled(bool enabled)
void setLabelBorderEnabled(bool enabled)
void setLabelTextColor(const QColor &color)
void setLabelsEnabled(bool enabled)
void setLightColor(const QColor &color)
void setLightStrength(float strength)
void setMultiHighlightColor(const QColor &color)
void setMultiHighlightGradient(const QLinearGradient &gradient)
void setShadowStrength(float strength)
void setSingleHighlightColor(const QColor &color)
void setSingleHighlightGradient(const QLinearGradient &gradient)
void setType(Q3DTheme::Theme themeType)
void setWindowColor(const QColor &color)
float shadowStrength() const
QColor singleHighlightColor() const
Q3DTheme::Theme type() const
QColor windowColor() const

Signals

void ambientLightStrengthChanged(float strength)
void backgroundColorChanged(const QColor &color)
void backgroundEnabledChanged(bool enabled)
void colorStyleChanged(Q3DTheme::ColorStyle style)
void fontChanged(const QFont &font)
void gridEnabledChanged(bool enabled)
void gridLineColorChanged(const QColor &color)
void labelBackgroundColorChanged(const QColor &color)
void labelBackgroundEnabledChanged(bool enabled)
void labelBorderEnabledChanged(bool enabled)
void labelTextColorChanged(const QColor &color)
void labelsEnabledChanged(bool enabled)
void lightColorChanged(const QColor &color)
void lightStrengthChanged(float strength)
void multiHighlightColorChanged(const QColor &color)
void multiHighlightGradientChangedQML(QJSValue gradient)
void shadowStrengthChanged(float strength)
void singleHighlightColorChanged(const QColor &color)
void singleHighlightGradientQMLChanged(QJSValue gradient)
void typeChanged(Q3DTheme::Theme themeType)
void windowColorChanged(const QColor &color)

Detailed Description

Specifies visual properties that affect the whole graph. There are several built-in themes that can be used as is or modified freely.

The following properties can be overridden by using QAbstract3DSeries properties to set them explicitly in the series: baseColors, baseGradients, and colorStyle.

Themes can be created from scratch using the UserDefined enum value. Creating a theme using the default constructor produces a new user-defined theme.

Default Theme

The following table lists the properties controlled by themes and the default values for UserDefined.

Usage Examples

Creating a built-in theme without any modifications:

 Q3DTheme *theme = new Q3DTheme(Q3DTheme::Theme::Qt);

Creating a built-in theme and modifying some properties:

 Q3DTheme *theme = new Q3DTheme(Q3DTheme::Theme::Qt);
 theme->setBackgroundEnabled(false);
 theme->setLabelBackgroundEnabled(false);

Creating a user-defined theme:

 Q3DTheme *theme = new Q3DTheme();
 theme->setAmbientLightStrength(0.3f);
 theme->setBackgroundColor(QColor(QRgb(0x99ca53)));
 theme->setBackgroundEnabled(true);
 QList<QColor> colors = { QColor(QRgb(0x209fdf)) };
 theme->setBaseColors(colors);
 theme->setColorStyle(Q3DTheme::ColorStyle::Uniform);
 theme->setFont(QFont(QStringLiteral("Impact"), 35));
 theme->setGridEnabled(true);
 theme->setGridLineColor(QColor(QRgb(0x99ca53)));
 theme->setLabelBackgroundColor(QColor(0xf6, 0xa6, 0x25, 0xa0));
 theme->setLabelBackgroundEnabled(true);
 theme->setLabelBorderEnabled(true);
 theme->setLabelTextColor(QColor(QRgb(0x404044)));
 theme->setLightColor(Qt::white);
 theme->setLightStrength(6.0f);
 theme->setMultiHighlightColor(QColor(QRgb(0x6d5fd5)));
 theme->setSingleHighlightColor(QColor(QRgb(0xf6a625)));
 theme->setWindowColor(QColor(QRgb(0xffffff)));

Creating a built-in theme and modifying some properties after it has been set:

 Q3DBars *graph = new Q3DBars();
 graph->activeTheme()->setType(Q3DTheme::Theme::PrimaryColors);
 QList<QColor> color = { QColor(Qt::red) };
 graph->activeTheme()->setBaseColors(color);
 graph->activeTheme()->setSingleHighlightColor(Qt::yellow);

Member Type Documentation

enum class Q3DTheme::ColorStyle

Color styles.

ConstantValueDescription
Q3DTheme::ColorStyle::Uniform0Objects are rendered in a single color. The color used is specified in baseColors, singleHighlightColor and multiHighlightColor properties.
Q3DTheme::ColorStyle::ObjectGradient1Objects are colored using a full gradient for each object regardless of object height. The gradient used is specified in baseGradients, singleHighlightGradient and multiHighlightGradient properties.
Q3DTheme::ColorStyle::RangeGradient2Objects are colored using a portion of the full gradient determined by the object's height and its position on the Y-axis. The gradient used is specified in baseGradients, singleHighlightGradient and multiHighlightGradient properties.

enum class Q3DTheme::Theme

Built-in themes.

ConstantValueDescription
Q3DTheme::Theme::Qt0A light theme with green as the base color.
Q3DTheme::Theme::PrimaryColors1A light theme with yellow as the base color.
Q3DTheme::Theme::StoneMoss2A medium dark theme with yellow as the base color.
Q3DTheme::Theme::ArmyBlue3A medium light theme with blue as the base color.
Q3DTheme::Theme::Retro4A medium light theme with brown as the base color.
Q3DTheme::Theme::Ebony5A dark theme with white as the base color.
Q3DTheme::Theme::Isabelle6A dark theme with yellow as the base color.
Q3DTheme::Theme::UserDefined7A user-defined theme. For more information, see Default Theme.

Property Documentation

ambientLightStrength : float

This property holds the ambient light strength for the whole graph.

This value determines how evenly and brightly the colors are shown throughout the graph regardless of the light position.

The value must be between 0.0f and 1.0f.

Access functions:

float ambientLightStrength() const
void setAmbientLightStrength(float strength)

Notifier signal:

void ambientLightStrengthChanged(float strength)

backgroundColor : QColor

This property holds the color of the graph background.

Access functions:

QColor backgroundColor() const
void setBackgroundColor(const QColor &color)

Notifier signal:

void backgroundColorChanged(const QColor &color)

backgroundEnabled : bool

This property holds whether the background is visible.

The background is drawn by using the value of backgroundColor.

Access functions:

bool isBackgroundEnabled() const
void setBackgroundEnabled(bool enabled)

Notifier signal:

void backgroundEnabledChanged(bool enabled)

[read-only] baseColors : const QQmlListProperty<QQuickGraphsColor>

This property holds the list of base colors to be used for all the objects in the graph, series by series.

If there are more series than colors, the color list wraps and starts again with the first color in the list.

Has no immediate effect if colorStyle is not Uniform.

This value can be overridden by setting the baseColor explicitly in the series.

[read-only] baseGradients : const QQmlListProperty<QObject>

This property holds the list of base gradients to be used for all the objects in the graph, series by series.

If there are more series than gradients, the gradient list wraps and starts again with the first gradient in the list

Has no immediate effect if colorStyle is Uniform.

This value can be overridden by setting the baseGradient explicitly in the series.

colorStyle : Q3DTheme::ColorStyle

This property holds the style of the graph colors.

One of the ColorStyle enum values.

This value can be overridden by setting colorStyle explicitly in the series.

Access functions:

Q3DTheme::ColorStyle colorStyle() const
void setColorStyle(Q3DTheme::ColorStyle style)

Notifier signal:

void colorStyleChanged(Q3DTheme::ColorStyle style)

font : QFont

This property holds the font to be used for labels.

Access functions:

QFont font() const
void setFont(const QFont &font)

Notifier signal:

void fontChanged(const QFont &font)

gridEnabled : bool

This property holds whether the grid lines are drawn.

This value affects all grid lines.

Access functions:

bool isGridEnabled() const
void setGridEnabled(bool enabled)

Notifier signal:

void gridEnabledChanged(bool enabled)

gridLineColor : QColor

This property holds the color of the grid lines.

Access functions:

QColor gridLineColor() const
void setGridLineColor(const QColor &color)

Notifier signal:

void gridLineColorChanged(const QColor &color)

labelBackgroundColor : QColor

This property holds the color of the label backgrounds.

Has no effect if labelBackgroundEnabled is false.

Access functions:

QColor labelBackgroundColor() const
void setLabelBackgroundColor(const QColor &color)

Notifier signal:

void labelBackgroundColorChanged(const QColor &color)

labelBackgroundEnabled : bool

This property holds whether the label is drawn with a color background or with a fully transparent background.

The labelBackgroundColor value (including alpha) is used for drawing the background.

Labels with a background are drawn to equal sizes per axis based on the longest label, and the text is centered in them. Labels without a background are drawn as is and are left or right aligned based on their position in the graph.

Access functions:

bool isLabelBackgroundEnabled() const
void setLabelBackgroundEnabled(bool enabled)

Notifier signal:

void labelBackgroundEnabledChanged(bool enabled)

labelBorderEnabled : bool

This property holds whether label borders are drawn for labels that have a background.

Has no effect if labelBackgroundEnabled is false.

Access functions:

bool isLabelBorderEnabled() const
void setLabelBorderEnabled(bool enabled)

Notifier signal:

void labelBorderEnabledChanged(bool enabled)

labelTextColor : QColor

This property holds the color of the font used for labels.

Access functions:

QColor labelTextColor() const
void setLabelTextColor(const QColor &color)

Notifier signal:

void labelTextColorChanged(const QColor &color)

labelsEnabled : bool

This property holds whether labels are drawn at all.

If this is false, all other label properties have no effect.

Access functions:

bool isLabelsEnabled() const
void setLabelsEnabled(bool enabled)

Notifier signal:

void labelsEnabledChanged(bool enabled)

lightColor : QColor

This property holds the color for the ambient and specular light.

This value affects the light specified in Q3DScene.

Access functions:

QColor lightColor() const
void setLightColor(const QColor &color)

Notifier signal:

void lightColorChanged(const QColor &color)

lightStrength : float

This property holds the specular light strength for the whole graph.

The value must be between 0.0f and 10.0f.

This value affects the light specified in Q3DScene.

Access functions:

float lightStrength() const
void setLightStrength(float strength)

Notifier signal:

void lightStrengthChanged(float strength)

multiHighlightColor : QColor

This property holds the highlight color for selected objects.

Used if selectionMode has the QAbstract3DGraph::SelectionRow or QAbstract3DGraph::SelectionColumn flag set.

Access functions:

QColor multiHighlightColor() const
void setMultiHighlightColor(const QColor &color)

Notifier signal:

void multiHighlightColorChanged(const QColor &color)

multiHighlightGradient : QJSValue

This property holds the highlight gradient for selected objects.

Used if selectionMode has the QAbstract3DGraph::SelectionRow or QAbstract3DGraph::SelectionColumn flag set.

Access functions:

void setMultiHighlightGradient(const QLinearGradient &gradient)

Notifier signal:

void multiHighlightGradientChangedQML(QJSValue gradient)

shadowStrength : float

This property holds the shadow strength for the whole graph.

The higher the number, the darker the shadows will be. The value must be between 0.0 and 100.0.

This value affects the light specified in Q3DScene.

Access functions:

float shadowStrength() const
void setShadowStrength(float strength)

Notifier signal:

void shadowStrengthChanged(float strength)

singleHighlightColor : QColor

This property holds the highlight color for a selected object.

Used if selectionMode has the QAbstract3DGraph::SelectionItem flag set.

Access functions:

QColor singleHighlightColor() const
void setSingleHighlightColor(const QColor &color)

Notifier signal:

void singleHighlightColorChanged(const QColor &color)

singleHighlightGradient : QJSValue

This property holds the highlight gradient for a selected object.

Used if selectionMode has the QAbstract3DGraph::SelectionItem flag set.

Access functions:

void setSingleHighlightGradient(const QLinearGradient &gradient)

Notifier signal:

void singleHighlightGradientQMLChanged(QJSValue gradient)

type : Q3DTheme::Theme

This property holds the type of the theme.

The type is automatically set when constructing a theme, but can also be changed later. Changing the theme type will change all other properties of the theme to what the predefined theme specifies. Changing the theme type of the active theme of the graph will also reset all attached series to use the new theme.

Access functions:

Q3DTheme::Theme type() const
void setType(Q3DTheme::Theme themeType)

Notifier signal:

void typeChanged(Q3DTheme::Theme themeType)

windowColor : QColor

This property holds the color of the application window the graph is drawn into.

Access functions:

QColor windowColor() const
void setWindowColor(const QColor &color)

Notifier signal:

void windowColorChanged(const QColor &color)

Member Function Documentation

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

Constructs a new theme of type UserDefined. An optional parent parameter can be given and is then passed to QObject constructor.

[explicit] Q3DTheme::Q3DTheme(Q3DTheme::Theme themeType, QObject *parent = nullptr)

Constructs a new theme with themeType, which can be one of the built-in themes from Theme. An optional parent parameter can be given and is then passed to QObject constructor.

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

Destroys the theme.