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
Inherits: QObject and QQmlParserStatus

Public Types

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

Properties

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

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.

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.

ConstantValueDescription
QGraphsTheme::ColorScheme::Automatic0The background colors follow the platform color scheme if available. If unavailable, the Light appearance is used.
QGraphsTheme::ColorScheme::Light1The background colors are lighter than the text color, i.e. the theme is light.
QGraphsTheme::ColorScheme::Dark2The background colors are darker than the text color, i.e. the theme is dark.

See also Qt::ColorScheme.

enum class QGraphsTheme::ColorStyle

Gradient types.

ConstantValueDescription
QGraphsTheme::ColorStyle::Uniform0Objects are rendered in a single color. The color used is specified in seriesColors, singleHighlightColor and multiHighlightColor properties.
QGraphsTheme::ColorStyle::ObjectGradient1Objects 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::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 seriesGradients, singleHighlightGradient and multiHighlightGradient properties.

enum class QGraphsTheme::Theme

Built-in themes.

ConstantValueDescription
QGraphsTheme::Theme::QtGreen0A light theme with green as the base color.
QGraphsTheme::Theme::QtGreenNeon1A light theme with green neon as the base color.
QGraphsTheme::Theme::MixSeries2A mixed theme with various colors.
QGraphsTheme::Theme::OrangeSeries3A theme with Orange as the base color.
QGraphsTheme::Theme::YellowSeries4A theme with Yellow as the base color.
QGraphsTheme::Theme::BlueSeries5A theme with Blue as the base color.
QGraphsTheme::Theme::PurpleSeries6A theme with Purple as the base color.
QGraphsTheme::Theme::GreySeries7A theme with Grey as the base color.
QGraphsTheme::Theme::UserDefined8A 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. 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().