- Qt 6.8
- Qt Graphs
- C++ Classes
- QtGraphs
- QGraphsTheme
- Qt Graphs | Commercial or GPLv3

# QGraphsTheme Class

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

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

- List of all members, including inherited members
- QGraphsTheme is part of Qt Graphs C++ Common Classes.

## Public Types

enum class | ColorScheme { Automatic, Light, Dark }
enum class | ColorStyle { Uniform, ObjectGradient, RangeGradient }
enum class | Theme { QtGreen, QtGreenNeon, MixSeries, OrangeSeries, YellowSeries, …, UserDefined }

## Properties

- axisXLabelFont : QFont
- axisYLabelFont : QFont
- axisZLabelFont : QFont
- backgroundColor : QColor
- backgroundVisible : bool
- borderColors : QList<QColor>
- borderWidth : qreal
- colorScheme : QGraphsTheme::ColorScheme
- colorStyle : QGraphsTheme::ColorStyle
- gridVisible : bool
- labelBackgroundColor : QColor
- labelBackgroundVisible : bool

- labelBorderVisible : bool
- labelFont : QFont
- labelTextColor : QColor
- labelsVisible : bool
- multiHighlightColor : QColor
- multiHighlightGradient : QQuickGradient* const
- plotAreaBackgroundColor : QColor
- plotAreaBackgroundVisible : bool
- seriesColors : QList<QColor>
- singleHighlightColor : QColor
- singleHighlightGradient : QQuickGradient* const
- theme : QGraphsTheme::Theme

## Public Functions

QGraphsLine | axisX() const
QFont | axisXLabelFont() const
QGraphsLine | axisY() const
QFont | axisYLabelFont() const
QGraphsLine | axisZ() const
QFont | axisZLabelFont() const
QColor | backgroundColor() const
QList<QColor> | borderColors() const
qreal | borderWidth() const
QGraphsTheme::ColorScheme | colorScheme() const
QGraphsTheme::ColorStyle | colorStyle() const
QGraphsLine | grid() const
bool | isBackgroundVisible() const
bool | isGridVisible() const
bool | isLabelBackgroundVisible() const
bool | isLabelBorderVisible() const
bool | isPlotAreaBackgroundVisible() const
QColor | labelBackgroundColor() const
QFont | labelFont() const
QColor | labelTextColor() const
bool | labelsVisible() const
QColor | multiHighlightColor() const
QColor | plotAreaBackgroundColor() const
QList<QColor> | seriesColors() const
QList<QLinearGradient> | seriesGradients() const
void | setAxisX(const QGraphsLine &newAxisX)
void | setAxisXLabelFont(const QFont &newAxisXLabelFont)
void | setAxisY(const QGraphsLine &newAxisY)
void | setAxisYLabelFont(const QFont &newAxisYLabelFont)
void | setAxisZ(const QGraphsLine &newAxisZ)
void | setAxisZLabelFont(const QFont &newAxisZLabelFont)
void | setBackgroundColor(QColor newBackgroundColor)
void | setBackgroundVisible(bool newBackgroundVisible)
void | setBorderColors(const QList<QColor> &newBorderColors)
void | setBorderWidth(qreal newBorderWidth)
void | setColorScheme(QGraphsTheme::ColorScheme newColorScheme)
void | setColorStyle(QGraphsTheme::ColorStyle newColorStyle)
void | setGrid(const QGraphsLine &newGrid)
void | setGridVisible(bool newGridVisibility)
void | setLabelBackgroundColor(QColor newLabelBackgroundColor)
void | setLabelBackgroundVisible(bool newLabelBackgroundVisibility)
void | setLabelBorderVisible(bool newLabelBorderVisibility)
void | setLabelFont(const QFont &newFont)
void | setLabelTextColor(QColor newLabelTextColor)
void | setLabelsVisible(bool newLabelsVisibility)
void | setMultiHighlightColor(QColor newMultiHighlightColor)
void | setPlotAreaBackgroundColor(QColor newBackgroundColor)
void | setPlotAreaBackgroundVisible(bool newBackgroundVisibility)
void | setSeriesColors(const QList<QColor> &newSeriesColors)
void | setSeriesGradients(const QList<QLinearGradient> &newSeriesGradients)
void | setSingleHighlightColor(QColor newSingleHighlightColor)
void | setTheme(QGraphsTheme::Theme newTheme, QGraphsTheme::ForceTheme force = ForceTheme::No)
QColor | singleHighlightColor() const
QGraphsTheme::Theme | theme() const

## Signals

void | axisXChanged()
void | axisXLabelFontChanged()
void | axisYChanged()
void | axisYLabelFontChanged()
void | axisZChanged()
void | axisZLabelFontChanged()
void | backgroundColorChanged()
void | backgroundVisibleChanged()
void | borderColorsChanged()
void | borderWidthChanged()
void | colorSchemeChanged()
void | colorStyleChanged(QGraphsTheme::ColorStyle type)
void | gridChanged()
void | gridVisibleChanged()
void | labelBackgroundColorChanged()
void | labelBackgroundVisibleChanged()
void | labelBorderVisibleChanged()
void | labelFontChanged()
void | labelTextColorChanged()
void | labelsVisibleChanged()
void | multiHighlightColorChanged(QColor color)
void | multiHighlightGradientQMLChanged()
void | plotAreaBackgroundColorChanged()
void | plotAreaBackgroundVisibleChanged()
void | seriesColorsChanged(const QList<QColor> &list)
void | singleHighlightColorChanged(QColor color)
void | singleHighlightGradientQMLChanged()
void | themeChanged(QGraphsTheme::Theme theme)

## 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.

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

### Customizing Theme

The default theme is QtGreen, but it is possible to customize each property.

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

Property | Default Value
--- | ---
backgroundVisible | `true`
seriesColors | Qt::black
seriesGradients | QLinearGradient. Essentially fully black.
colorStyle | Uniform
labelFont | QFont
gridVisible | `true`
labelBackgroundVisible | `true`
labelBorderVisible | `true`
labelsVisible | `true`

### Usage Examples

Creating a built-in theme without any modifications:

     QGraphsTheme *theme = new QGraphsTheme();

Creating a built-in theme and modifying some properties:

     QGraphsTheme *theme = new QGraphsTheme();
     theme->setBackgroundVisible(false);
     theme->setLabelBackgroundVisible(false);

Modifying a user-defined theme. The theme has been created the same way it was in the previous snippets:

     theme->setTheme(QGraphsTheme::Theme::UserDefined);
     theme->setBackgroundColor(QColor(QRgb(0x99ca53)));
     theme->setBackgroundVisible(true);
     QList<QColor> colors = { QColor(QRgb(0x209fdf)) };
     theme->setSeriesColors(colors);
     theme->setColorStyle(QGraphsTheme::ColorStyle::Uniform);
     theme->setLabelFont(QFont(QStringLiteral("Impact"), 35));
     theme->setGridVisible(true);
     auto gridline = theme->grid();
     gridline.setMainColor(QColor(QRgb(0x99ca53)));
     theme->setGrid(gridline);
     theme->setLabelBackgroundColor(QColor(0xf6, 0xa6, 0x25, 0xa0));
     theme->setLabelBackgroundVisible(true);
     theme->setLabelBorderVisible(true);
     theme->setLabelTextColor(QColor(QRgb(0x404044)));
     theme->setMultiHighlightColor(QColor(QRgb(0x6d5fd5)));
     theme->setSingleHighlightColor(QColor(QRgb(0xf6a625)));
     theme->setBackgroundColor(QColor(QRgb(0xffffff)));

Modifying some properties after theme has been set to a graph:

     QQuickWidget quickWidget;
     Q3DBarsWidgetItem bars;
     bars.setWidget(&quickWidget);
     bars.widget()->setMinimumSize(QSize(512, 512));
     bars.activeTheme()->setTheme(QGraphsTheme::Theme::MixSeries);
     QList<QColor> color = { QColor(Qt::red) };
     bars.activeTheme()->setSeriesColors(color);
     bars.activeTheme()->setSingleHighlightColor(Qt::yellow);

## Member Type Documentation

### enum class QGraphsTheme::ColorScheme

Represents the color scheme of the graph.

Constant | Value | Description
--- | --- | ---
`QGraphsTheme::ColorScheme::Automatic` | `0` | The background colors follow the platform color scheme if available. If unavailable, the Light appearance is used.
`QGraphsTheme::ColorScheme::Light` | `1` | The background colors are lighter than the text color, i.e. the theme is light.
`QGraphsTheme::ColorScheme::Dark` | `2` | The background colors are darker than the text color, i.e. the theme is dark.

See also Qt::ColorScheme.

### enum class QGraphsTheme::ColorStyle

Gradient types.

Constant | Value | Description
--- | --- | ---
`QGraphsTheme::ColorStyle::Uniform` | `0` | Objects are rendered in a single color. The color used is specified in seriesColors, singleHighlightColor and multiHighlightColor properties.
`QGraphsTheme::ColorStyle::ObjectGradient` | `1` | Objects are colored using a full gradient for each object regardless of object height. The gradient used is specified in seriesGradients, singleHighlightGradient and multiHighlightGradient properties.
`QGraphsTheme::ColorStyle::RangeGradient` | `2` | Objects 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 seriesGradients, singleHighlightGradient and multiHighlightGradient properties.

### enum class QGraphsTheme::Theme

Built-in themes.

Constant | Value | Description
--- | --- | ---
`QGraphsTheme::Theme::QtGreen` | `0` | A light theme with green as the base color.
`QGraphsTheme::Theme::QtGreenNeon` | `1` | A light theme with green neon as the base color.
`QGraphsTheme::Theme::MixSeries` | `2` | A mixed theme with various colors.
`QGraphsTheme::Theme::OrangeSeries` | `3` | A theme with Orange as the base color.
`QGraphsTheme::Theme::YellowSeries` | `4` | A theme with Yellow as the base color.
`QGraphsTheme::Theme::BlueSeries` | `5` | A theme with Blue as the base color.
`QGraphsTheme::Theme::PurpleSeries` | `6` | A theme with Purple as the base color.
`QGraphsTheme::Theme::GreySeries` | `7` | A theme with Grey as the base color.
`QGraphsTheme::Theme::UserDefined` | `8` | A user-defined theme. For more information, see Customizing Theme.

## Property Documentation

### axisXLabelFont : QFont

This property holds the font to be used for labels on x axis.

Access functions:

QFont | axisXLabelFont() const
void | setAxisXLabelFont(const QFont &newAxisXLabelFont)

Notifier signal:

void | axisXLabelFontChanged()

### axisYLabelFont : QFont

This property holds the font to be used for labels on y axis.

Access functions:

QFont | axisYLabelFont() const
void | setAxisYLabelFont(const QFont &newAxisYLabelFont)

Notifier signal:

void | axisYLabelFontChanged()

### axisZLabelFont : QFont

This property holds the font to be used for labels on z axis.

Access functions:

QFont | axisZLabelFont() const
void | setAxisZLabelFont(const QFont &newAxisZLabelFont)

Notifier signal:

void | axisZLabelFontChanged()

### backgroundColor : QColor

This property holds the color of the view the graph is drawn into. The default value depends on colorScheme.

Access functions:

QColor | backgroundColor() const
void | setBackgroundColor(QColor newBackgroundColor)

Notifier signal:

void | backgroundColorChanged()

### backgroundVisible : bool

This property holds whether the background is visible.

The background is drawn by using the value of backgroundColor. The default value is `true`.

Access functions:

bool | isBackgroundVisible() const
void | setBackgroundVisible(bool newBackgroundVisible)

Notifier signal:

void | backgroundVisibleChanged()

### borderColors : QList<QColor>

This property holds the list of border 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.

Access functions:

QList<QColor> | borderColors() const
void | setBorderColors(const QList<QColor> &newBorderColors)

Notifier signal:

void | borderColorsChanged()

### borderWidth : qreal

This property holds the width of borders in graph if any The default value is `1.0`.

Access functions:

qreal | borderWidth() const
void | setBorderWidth(qreal newBorderWidth)

Notifier signal:

void | borderWidthChanged()

### colorScheme : QGraphsTheme::ColorScheme

The color scheme of the graph in use.

Access functions:

QGraphsTheme::ColorScheme | colorScheme() const
void | setColorScheme(QGraphsTheme::ColorScheme newColorScheme)

Notifier signal:

void | colorSchemeChanged()

See also Qt::ColorScheme.

### colorStyle : QGraphsTheme::ColorStyle

The style of the graph colors. One of QGraphsTheme::ColorStyle enum values.

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

Note: This property does not have an effect in Qt Graphs for 2D.

Access functions:

QGraphsTheme::ColorStyle | colorStyle() const
void | setColorStyle(QGraphsTheme::ColorStyle newColorStyle)

Notifier signal:

void | colorStyleChanged(QGraphsTheme::ColorStyle type)

See also QGraphsTheme::ColorStyle.

### gridVisible : bool

This property holds whether the grid lines are drawn.

This value affects all grid lines. The default value is `true`.

Access functions:

bool | isGridVisible() const
void | setGridVisible(bool newGridVisibility)

Notifier signal:

void | gridVisibleChanged()

### labelBackgroundColor : QColor

This property holds the color of the label backgrounds.

Has no effect if labelBackgroundVisible is `false`. The default value depends on colorScheme.

Access functions:

QColor | labelBackgroundColor() const
void | setLabelBackgroundColor(QColor newLabelBackgroundColor)

Notifier signal:

void | labelBackgroundColorChanged()

### labelBackgroundVisible : 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. The default value is `true`.

Access functions:

bool | isLabelBackgroundVisible() const
void | setLabelBackgroundVisible(bool newLabelBackgroundVisibility)

Notifier signal:

void | labelBackgroundVisibleChanged()

### labelBorderVisible : bool

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

Has no effect if labelBackgroundVisible is `false`. The default value is `true`.

Access functions:

bool | isLabelBorderVisible() const
void | setLabelBorderVisible(bool newLabelBorderVisibility)

Notifier signal:

void | labelBorderVisibleChanged()

### labelFont : QFont

This property holds the font to be used for labels.

Access functions:

QFont | labelFont() const
void | setLabelFont(const QFont &newFont)

Notifier signal:

void | labelFontChanged()

### labelTextColor : QColor

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

If an axis has specified labelTextColor explicitly, this has no effect.

The default value depends on colorScheme.

Access functions:

QColor | labelTextColor() const
void | setLabelTextColor(QColor newLabelTextColor)

Notifier signal:

void | labelTextColorChanged()

### labelsVisible : bool

This property holds whether labels are drawn at all.

If this is `false`, all other label properties have no effect. The default value is `true`.

Access functions:

bool | labelsVisible() const
void | setLabelsVisible(bool newLabelsVisibility)

Notifier signal:

void | labelsVisibleChanged()

### multiHighlightColor : QColor

This property holds the highlight color for selected objects.

Used if selectionMode has the `QtGraphs3D::SelectionFlag::Row` or `QtGraphs3D::SelectionFlag::Column` flag set. The default value depends on colorScheme.

Access functions:

QColor | multiHighlightColor() const
void | setMultiHighlightColor(QColor newMultiHighlightColor)

Notifier signal:

void | multiHighlightColorChanged(QColor color)

### multiHighlightGradient : QQuickGradient* const

This property holds the highlight gradient for selected objects.

Used if selectionMode has the `QtGraphs3D::SelectionFlag::Row` or `QtGraphs3D::SelectionFlag::Column` flag set. The default value depends on colorScheme.

Notifier signal:

void | multiHighlightGradientQMLChanged()

### plotAreaBackgroundColor : QColor

This property holds the color of the graph plot area background. The default value depends on colorScheme.

Access functions:

QColor | plotAreaBackgroundColor() const
void | setPlotAreaBackgroundColor(QColor newBackgroundColor)

Notifier signal:

void | plotAreaBackgroundColorChanged()

### plotAreaBackgroundVisible : bool

This property holds whether the plot area background is visible.

The background is drawn by using the value of plotAreaBackgroundColor. The default value is `true`.

Access functions:

bool | isPlotAreaBackgroundVisible() const
void | setPlotAreaBackgroundVisible(bool newBackgroundVisibility)

Notifier signal:

void | plotAreaBackgroundVisibleChanged()

### seriesColors : QList<QColor>

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.

Access functions:

QList<QColor> | seriesColors() const
void | setSeriesColors(const QList<QColor> &newSeriesColors)

Notifier signal:

void | seriesColorsChanged(const QList<QColor> &list)

### singleHighlightColor : QColor

This property holds the highlight color for a selected object.

Used if selectionMode has the `QtGraphs3D::SelectionFlag::Item` flag set. The default value depends on colorScheme.

Access functions:

QColor | singleHighlightColor() const
void | setSingleHighlightColor(QColor newSingleHighlightColor)

Notifier signal:

void | singleHighlightColorChanged(QColor color)

### singleHighlightGradient : QQuickGradient* const

This property holds the highlight gradient for a selected object.

Used if selectionMode has the `QtGraphs3D::SelectionFlag::Item` flag set. The default value depends on colorScheme.

Notifier signal:

void | singleHighlightGradientQMLChanged()

### theme : QGraphsTheme::Theme

The type of the theme. If no type is set, the type is GraphsTheme.Theme.QtGreen. Changing the theme type after the item has been constructed 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:

QGraphsTheme::Theme | theme() const
void | setTheme(QGraphsTheme::Theme newTheme, QGraphsTheme::ForceTheme force = ForceTheme::No)

Notifier signal:

void | themeChanged(QGraphsTheme::Theme theme)

## Member Function Documentation

### QList<QLinearGradient> QGraphsTheme::seriesGradients() const

Returns the list of series gradients used by theme.

See also setSeriesGradients().

### void QGraphsTheme::setSeriesGradients(const QList<QLinearGradient> &newSeriesGradients)

Sets newSeriesGradients as the series gradients for the theme.

See also seriesGradients().