Fluent-Qt

Basic input

DropDownButton

A button that reveals a menu of related commands when invoked.

Example

DropDownButton: DropDownButton menu

Usage

DropDownButton menu

A drop-down button opens a menu of related commands without invoking a primary action.

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

auto* button = new DropDownButton("Options", this);
auto* menu = new FluentMenu("Options", button);
menu->addAction("Edit profile");
menu->addAction("Account settings");
menu->addAction("Sign out");
button->setMenu(menu);

fluent::basicinput::DropDownButton

Inherits Button

Fluent button that opens an attached dropdown or flyout.

Constructors

Properties

QMenu* menu

Caller-owned menu opened by the button.

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

Whether the popup, drawer, or notification surface is open.

Read isOpen()Write setIsOpen()Notify openChanged()
QString chevronGlyph

Iconfont glyph used for the chevron affordance.

Read chevronGlyph()Write setChevronGlyph()Notify chevronChanged()
QString iconFontFamily

Iconfont family used for glyph rendering.

Read iconFontFamily()Write setIconFontFamily()Notify chevronChanged()
int chevronSize

Chevron glyph pixel size.

Read chevronSize()Write setChevronSize()Notify chevronChanged()
QPoint chevronOffset

Pixel offset applied to chevron drawing.

Read chevronOffset()Write setChevronOffset()Notify chevronChanged()
qreal pressProgress

Animated press progress used by the painted surface.

Read pressProgress()Write setPressProgress()

Methods

void setMenu(QMenu* menu)

Caller-owned menu opened by the button.

QMenu* menu() const

Caller-owned menu opened by the button.

bool isOpen() const

Whether the popup, drawer, or notification surface is open.

void setIsOpen(bool open)

Whether the popup, drawer, or notification surface is open.

QString chevronGlyph() const

Iconfont glyph used for the chevron affordance.

void setChevronGlyph(const QString& glyph)

Iconfont glyph used for the chevron affordance.

QString iconFontFamily() const

Iconfont family used for glyph rendering.

void setIconFontFamily(const QString& family)

Iconfont family used for glyph rendering.

int chevronSize() const

Chevron glyph pixel size.

void setChevronSize(int size)

Chevron glyph pixel size.

QPoint chevronOffset() const

Pixel offset applied to chevron drawing.

void setChevronOffset(const QPoint& offset)

Pixel offset applied to chevron drawing.

qreal pressProgress() const

Animated press progress used by the painted surface.

void setPressProgress(qreal value)

Animated press progress used by the painted surface.

Signals

void menuChanged()

Caller-owned menu opened by the button.

void openChanged()

Whether the popup, drawer, or notification surface is open.

void chevronChanged()

Iconfont glyph used for the chevron affordance.

Destructors

Subclass interfaces

Methods

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