Fluent-Qt

Basic input

SplitButton

A two-part button: a primary action plus a chevron that opens a menu.

Example

SplitButton: Primary action and menu

Usage

Primary action and menu

The primary region invokes the default action; the secondary region opens the menu.

#include <FluentQt/BasicInput.h>
using namespace fluent::basicinput;

auto* button = new SplitButton("Choose color", this);
auto* menu = new FluentMenu("Colors", button);
menu->addAction("Red");
menu->addAction("Green");
menu->addAction("Blue");
button->setMenu(menu);
connect(button, &SplitButton::clicked, button, [button] {
    Toast::showOrUpdateToast(button, "gallery.action-feedback",
        "Primary action selected", Toast::Informational, 2200,
        Toast::Top, QMargins(16, 50, 16, 16));
});
connect(menu, &QMenu::triggered, button, [button](QAction* action) {
    Toast::showOrUpdateToast(button, "gallery.action-feedback",
        action->text() + " selected", Toast::Informational, 2200,
        Toast::Top, QMargins(16, 50, 16, 16));
});

fluent::basicinput::SplitButton

Inherits Button

Button with separate primary action and secondary menu regions.

Constructors

Properties

QMenu* menu

Menu opened by the secondary split-button region.

Read menu()Write setMenu()Notify menuChanged()
bool isOpen

Whether the attached menu is currently visible.

Read isOpen()Notify openChanged()
int secondaryWidth

Width of the split-button secondary action region.

Read secondaryWidth()Write setSecondaryWidth()Notify secondaryWidthChanged()

Methods

QMenu* menu() const

Menu opened by the secondary split-button region.

void setMenu(QMenu* menu)

Menu opened by the secondary split-button region.

bool isOpen() const

Whether the attached menu is currently visible.

int secondaryWidth() const

Width of the split-button secondary action region.

void setSecondaryWidth(int width)

Width of the split-button secondary action region.

Signals

void menuChanged()

Menu opened by the secondary split-button region.

void openChanged()

Whether the attached menu is currently visible.

void secondaryWidthChanged()

Width of the split-button secondary action region.

Enumerations

enum SplitPart
  • None
  • Primary
  • Secondary

Destructors

Subclass interfaces

Methods

Fields

Inherited from fluent::basicinput::Button

Properties

ButtonStyle fluentStyle

Visual treatment: Standard, Accent, or Subtle.

Read fluentStyle()Write setFluentStyle()Notify fluentStyleChanged()
ButtonSize fluentSize

Density token that controls height and padding, not typography.

Read fluentSize()Write setFluentSize()Notify fluentSizeChanged()
Typography::FontRole fontRole

Fluent typography role used while the button follows theme fonts.

Read fontRole()Write setFontRole()Notify fontRoleChanged()
TextColorRole textColorRole

Semantic foreground for unfilled, unchecked buttons; filled and disabled states keep their contrast roles.

Read textColorRole()Write setTextColorRole()Notify textColorRoleChanged()
ButtonLayout fluentLayout

Content layout for text and icon placement.

Read fluentLayout()Write setFluentLayout()Notify fluentLayoutChanged()
bool focusVisual

Controls whether the focus visual frame is painted.

Read hasFocusVisual()Write setFocusVisual()Notify focusVisualChanged()
InteractionState interactionState

Overrides the interaction state for guided demos or visual checks.

Read interactionState()Write setInteractionState()Notify interactionStateChanged()
bool criticalOnHover

Uses the critical semantic color while hovered or pressed.

Read criticalOnHover()Write setCriticalOnHover()Notify criticalOnHoverChanged()
QMargins cornerRadii

Per-corner radii; left/top/right/bottom map to top-left/top-right/bottom-right/bottom-left.

Read cornerRadii()Write setCornerRadii()Reset resetCornerRadii()Notify cornerRadiiChanged()
QPoint iconOffset

Pixel offset applied to iconfont drawing; positive values move right/down.

Read iconOffset()Write setIconOffset()
qreal iconRotation

Clockwise rotation applied to the painted icon in degrees.

Read iconRotation()Write setIconRotation()
qreal iconScale

Uniform scale applied to the painted iconfont glyph (1.0 = no scaling). Drives WinUI-style press feedback (a brief scale-down) without touching geometry.

Read iconScale()Write setIconScale()
qreal contentOpacity

Painter-level opacity for the whole button surface (1.0 = fully opaque). A lightweight fade that avoids QGraphicsOpacityEffect's offscreen compositing.

Read contentOpacity()Write setContentOpacity()

Methods

ButtonStyle fluentStyle() const

Fluent property accessors.

void setFluentStyle(ButtonStyle style)

Visual treatment: Standard, Accent, or Subtle.

ButtonSize fluentSize() const

Density token that controls height and padding, not typography.

void setFluentSize(ButtonSize size)

Density token that controls height and padding, not typography.

Typography::FontRole fontRole() const

Fluent typography role used while the button follows theme fonts.

void setFontRole(Typography::FontRole role)

Fluent typography role used while the button follows theme fonts.

TextColorRole textColorRole() const

Semantic foreground for unfilled, unchecked buttons; filled and disabled states keep their contrast roles.

void setTextColorRole(TextColorRole role)

Semantic foreground for unfilled, unchecked buttons; filled and disabled states keep their contrast roles.

void setFont(const QFont& font)

Sets an explicit font that remains unchanged by later theme refreshes.

ButtonLayout fluentLayout() const

Content layout for text and icon placement.

void setFluentLayout(ButtonLayout layout)

Content layout for text and icon placement.

bool hasFocusVisual() const

Controls whether the focus visual frame is painted.

void setFocusVisual(bool focus)

Controls whether the focus visual frame is painted.

InteractionState interactionState() const

Overrides the interaction state for guided demos or visual checks.

void setInteractionState(InteractionState state)

Overrides the interaction state for guided demos or visual checks.

bool criticalOnHover() const

Uses the critical semantic color while hovered or pressed.

void setCriticalOnHover(bool enabled)

Uses the critical semantic color while hovered or pressed.

QMargins cornerRadii() const

Per-corner radii; left/top/right/bottom map to top-left/top-right/bottom-right/bottom-left.

void setCornerRadii(const QMargins& radii)

Per-corner radii; left/top/right/bottom map to top-left/top-right/bottom-right/bottom-left.

void resetCornerRadii()

Per-corner radii; left/top/right/bottom map to top-left/top-right/bottom-right/bottom-left.

QPoint iconOffset() const

Pixel offset applied to iconfont drawing; positive values move right/down.

void setIconOffset(const QPoint& offset)

Pixel offset applied to iconfont drawing; positive values move right/down.

qreal iconRotation() const

Clockwise rotation applied to the painted icon in degrees.

void setIconRotation(qreal rotation)

Clockwise rotation applied to the painted icon in degrees.

qreal iconScale() const

Uniform scale applied to the painted iconfont glyph (1.0 = no scaling). Drives WinUI-style press feedback (a brief scale-down) without touching geometry.

void setIconScale(qreal scale)

Uniform scale applied to the painted iconfont glyph (1.0 = no scaling). Drives WinUI-style press feedback (a brief scale-down) without touching geometry.

qreal contentOpacity() const

Painter-level opacity for the whole button surface (1.0 = fully opaque). A lightweight fade that avoids QGraphicsOpacityEffect's offscreen compositing.

void setContentOpacity(qreal opacity)

Painter-level opacity for the whole button surface (1.0 = fully opaque). A lightweight fade that avoids QGraphicsOpacityEffect's offscreen compositing.

QSize sizeHint() const override

Size hints include Fluent padding, text, and iconfont content.

Signals

void fluentStyleChanged()

Visual treatment: Standard, Accent, or Subtle.

void fluentSizeChanged()

Density token that controls height and padding, not typography.

void fontRoleChanged()

Fluent typography role used while the button follows theme fonts.

void textColorRoleChanged()

Semantic foreground for unfilled, unchecked buttons; filled and disabled states keep their contrast roles.

void fluentLayoutChanged()

Content layout for text and icon placement.

void focusVisualChanged()

Controls whether the focus visual frame is painted.

void interactionStateChanged()

Overrides the interaction state for guided demos or visual checks.

void criticalOnHoverChanged()

Uses the critical semantic color while hovered or pressed.

void cornerRadiiChanged()

Per-corner radii; left/top/right/bottom map to top-left/top-right/bottom-right/bottom-left.

Enumerations

enum ButtonStyle

Button visual style resolved against Fluent design tokens.

  • Standard
  • Accent
  • Subtle
enum ButtonSize

Button density presets for padding and preferred height.

  • Small
  • StandardSize
  • Large
enum ButtonLayout

Text/icon composition mode.

  • TextOnly
  • IconBefore
  • IconOnly
  • IconAfter
enum class TextColorRole

Semantic text and icon emphasis.

  • Primary
  • Secondary
  • Accent
enum InteractionState

Paint-state override used before falling back to real hover/press state.

  • Rest
  • Hover
  • Pressed
  • Disabled
Inherited from fluent::FluentElement

Methods

static void setTheme(Theme theme)

Updates the global theme and notifies active FluentElement instances.

static void setThemeDeferred(Theme theme)

Schedules a visible-first batched theme refresh without blocking the current interaction.

static Theme currentTheme()

Returns the currently active global theme.

static bool themeUsesDarkAppearance(Theme theme)

Returns whether a theme uses dark-backed chrome and material tokens.

static void refreshTheme()

Re-broadcasts the current theme to repaint after a design-token change.

static int themeGeneration()

Monotonic counter bumped on every theme change, for staleness checks.

Theme effectiveTheme() const

Resolves the theme used by this element, honoring an inherited QWidget override.

bool effectiveThemeUsesDarkAppearance() const

Returns whether this element's effective theme uses dark-backed chrome.

QJsonObject themeOverrides() const

Returns this element's authored overrides.

void clearThemeOverrides()

Restores all token fields to global theme defaults.

const Colors& themeColorsRef() const

Non-copying access to the active color set (for hot paint paths).

Material::AcrylicToken themeAcrylic() const

Material, elevation, and adaptive layout tokens.

QColor themeBackdrop(bool active) const

Window-chrome backdrop color for the given activation state.

virtual void onThemeUpdated()

Called after the global theme changes.

Enumerations

enum Theme

Global visual theme used when resolving design tokens.

  • Light = 0
  • Dark = 1
  • HighContrast = 2

Types and aliases

struct Colors

Design token snapshots returned to components.

Inherited from fluent::QMLPlus

Methods

AnchorLayout::Anchors* anchors()

Returns mutable anchors for the QWidget host.

void setState(const QString& name)

Applies a named state, or clears state when name is empty.

void addState(const QMLState& state)

Registers or replaces a named state definition.

void evaluateStates()

Reevaluates conditions; the first registered true condition wins.

QMLPlusRuntime* runtime()

Returns the lazy host-owned state observation object.

void setAnchors(const AnchorLayout::Anchors& anchors)

Replaces all host anchors and invalidates the parent layout.

void resetAnchors()

Clears all host anchors and invalidates the parent layout.

void addTransition(const StateTransition& transition)

Registers a state transition in precedence order.

void setBehavior(const char* propertyName, const PropertyAnimation& animation)

Sets the default animation for this host's managed property writes.

void clearBehavior(const char* propertyName)

Removes the default animation for future managed writes.

bool writeProperty(const char* propertyName, const QVariant& value)

Writes a host property through Behavior without removing its binding.

All inherited Qt members:QPushButton