Skip to main content

SegmentedControl

Struct SegmentedControl 

Source
pub struct SegmentedControl<'a> { /* private fields */ }
Expand description

A row of mutually-exclusive segments sharing a single rounded track.

Bind to a &mut usize index. Click selects; the selected index is updated in place and the response is marked changed. Use SegmentedControl::new for plain text segments and SegmentedControl::from_segments when you need icons, dots, counts, or per-segment disabled state.

let mut selected = 1usize;
ui.add(SegmentedControl::new(&mut selected, ["Day", "Week", "Month"]));
ui.add(
    SegmentedControl::new(&mut selected, ["Compact", "Comfortable", "Spacious"])
        .size(SegmentedSize::Small),
);

Rich segments with status dots and counts:

let mut selected = 0usize;
ui.add(
    SegmentedControl::from_segments(
        &mut selected,
        [
            Segment::text("Open").dot(SegmentDot::Amber).count("12"),
            Segment::text("Triaged").dot(SegmentDot::Neutral).count("84"),
            Segment::text("Resolved").dot(SegmentDot::Green).count("1,204"),
            Segment::text("Rejected").dot(SegmentDot::Red).count("31"),
        ],
    )
    .fill(),
);

Implementations§

Source§

impl<'a> SegmentedControl<'a>

Source

pub fn new<I, S>(selected: &'a mut usize, items: I) -> Self
where I: IntoIterator<Item = S>, S: Into<WidgetText>,

Build a text-only segmented control. Each item is converted into a plain-label Segment.

Source

pub fn from_segments( selected: &'a mut usize, segments: impl IntoIterator<Item = Segment>, ) -> Self

Build a segmented control from explicit Segments. Use this when you need icons, dots, counts, or disabled states.

Source

pub fn size(self, size: SegmentedSize) -> Self

Pick a size preset. Default: SegmentedSize::Medium.

Source

pub fn fill(self) -> Self

Force every segment to the same width and stretch the control to fill the available horizontal space. Useful as a row affordance.

Trait Implementations§

Source§

impl<'a> Debug for SegmentedControl<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Widget for SegmentedControl<'a>

Source§

fn ui(self, ui: &mut Ui) -> Response

Allocate space, interact, paint, and return a Response. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for SegmentedControl<'a>

§

impl<'a> RefUnwindSafe for SegmentedControl<'a>

§

impl<'a> Send for SegmentedControl<'a>

§

impl<'a> Sync for SegmentedControl<'a>

§

impl<'a> Unpin for SegmentedControl<'a>

§

impl<'a> UnsafeUnpin for SegmentedControl<'a>

§

impl<'a> !UnwindSafe for SegmentedControl<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(value: T, _simd: S) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.