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 |
- 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
|
|
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. 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().