Union::Element Class

class Union::Element

An element in a tree of elements that is used to match StyleRules. More...

Header: #include <Element>
CMake: find_package(Union REQUIRED)
target_link_libraries(mytarget PRIVATE Union::Union)
Inherits: QObject and

Public Types

enum class ColorSet { None, View, Window, Button, Selection, …, Header }
Ptr
enum class State { None, Hovered, ActiveFocus, VisualFocus, Pressed, …, Highlighted }
flags States

Properties

Public Functions

QVariant attribute(const QString &name) const
QVariantMap attributes() const
Union::Element::ColorSet colorSet() const
bool hasAttribute(const QString &name) const
QStringList hints() const
QString id() const
void setAttributes(const QVariantMap &attributes)
void setColorSet(Union::Element::ColorSet newColorSet)
void setHints(const QStringList &newHints)
void setId(const QString &newId)
void setStates(Union::Element::States newStates)
void setType(const QString &type)
Union::Element::States states() const
QString type() const

Signals

void attributesChanged()
void colorSetChanged()
void hintsChanged()
void idChanged()
void statesChanged()
void typeChanged()
void updated()

Static Public Members

Union::Element::Ptr create()
ElementList
QDebug operator<<(QDebug debug, Union::Element::Ptr element)

Detailed Description

This class mainly contains a set of properties to indicate element information, such as what type of element this is. These properties are used to determine if a StyleRule should be applied to an element.

Element instances should be created by output plugins to match the hierarchy of objects in the application and supplied values for as many of the properties as possible.

Note: Element inherits from std::enable_shared_from_this as it is intended to be stored as a std::shared_ptr. To create a new instance of Element, use Element::create() as the constructor is semi-private.

Member Type Documentation

enum class Element::ColorSet

Which set of colours should be used to render the element.

[alias] Element::Ptr

A shorthand for std::shared_ptr<Element>.

enum class Element::State
flags Element::States

A set of flags to indicate an element's state.

ConstantValueDescription
Union::Element::State::None0No State is currently active.
Union::Element::State::Hovered1 << 0The element is hovered.
Union::Element::State::ActiveFocus1 << 1The element has active focus, it will receive keyboard input.
Union::Element::State::VisualFocus1 << 2The element has active focus and that focus should be visualized.
Union::Element::State::Pressed1 << 3The element is being pressed.
Union::Element::State::Checked1 << 4The element has a checked state and is currently checked.
Union::Element::State::Disabled1 << 5The element is disabled.
Union::Element::State::Highlighted1 << 6The element should be highlighted, because it is selected or otherwise needs to stand out.

The States type is a typedef for QFlags<State>. It stores an OR combination of State values.

Property Documentation

attributes : QVariantMap

A map of extra attributes that can be used for rule matching.

This can contain an arbitrary amount of key-value pairs that can be useful for rule matching.

Access functions:

QVariantMap attributes() const
void setAttributes(const QVariantMap &attributes)

Notifier signal:

void attributesChanged()

colorSet : ColorSet

The ColorSet to use to render this element.

Access functions:

Union::Element::ColorSet colorSet() const
void setColorSet(Union::Element::ColorSet newColorSet)

Notifier signal:

void colorSetChanged()

hints : QStringList

A list of hints for this element.

Hints are used to indicate there's something different about the element which might be useful for style rule matching. This includes things like "is a toolbar at the top or bottom of a view" or "this button should be displayed with a special style". Hints should be fairly static and usually should not be used for state information, the states property should cover most of those.

Access functions:

QStringList hints() const
void setHints(const QStringList &newHints)

Notifier signal:

void hintsChanged()

id : QString

A unique ID to identify a specific element.

This can be any string that can be used to identify a specific element in an application. These IDs should be unique to ensure style rules intended to style a specific element aren't suddenly applied to other elements.

Access functions:

QString id() const
void setId(const QString &newId)

Notifier signal:

void idChanged()

states : States

The set of states this element currently has.

These are things like "Hovered" and often change fairly often in an application.

Access functions:

Union::Element::States states() const
void setStates(Union::Element::States newStates)

Notifier signal:

void statesChanged()

type : QString

The type of the element.

This can be any arbitrary string that can be used to describe an object in a user interface, such as "Button".

Access functions:

QString type() const
void setType(const QString &type)

Notifier signal:

void typeChanged()

Member Function Documentation

QVariant Element::attribute(const QString &name) const

Get the value of a certain attribute.

name The name of the attribute to get.

Returns the value of the attribute if it is set, or an empty QVariant if not.

[static] Union::Element::Ptr Element::create()

Returns a newly created instance of Element.

bool Element::hasAttribute(const QString &name) const

Check if a certain attribute is set on this element.

name The name of the attribute to check.

Returns true if the attribute is set, false if not.

[signal] void Element::updated()

Emitted whenever any of the properties of the element have changed.

Related Non-Members

[alias] ElementList

A list of elements.

QDebug operator<<(QDebug debug, Union::Element::Ptr element)

Implements QDebug support for Union::Element.