Trait rerun::external::eframe::egui::Widget

pub trait Widget {
    // Required method
    fn ui(self, ui: &mut Ui) -> Response;
}
Expand description

Anything implementing Widget can be added to a Ui with Ui::add.

Button, Label, Slider, etc all implement the Widget trait.

You only need to implement Widget if you care about being able to do ui.add(your_widget);.

Note that the widgets (Button, TextEdit etc) are builders, and not objects that hold state.

Tip: you can impl Widget for &mut YourThing { }.

|ui: &mut Ui| -> Response { … } also implements Widget.

Required Methods§

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

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

Note that this consumes self. This is because most widgets (Button, TextEdit etc) are builders

Tip: you can impl Widget for &mut YourObject { }.

Implementations on Foreign Types§

§

impl Widget for Map<'_, '_, '_>

§

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

§

impl<'a> Widget for ImmutableCheckbox<'a>

§

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

Implementors§

§

impl Widget for &PaintStats

§

impl Widget for &mut TessellationOptions

§

impl Widget for &mut FontTweak

§

impl Widget for &mut Frame

§

impl Widget for &mut Margin

§

impl Widget for &mut Rounding

§

impl Widget for &mut Shadow

§

impl Widget for &mut Stroke

§

impl Widget for Button<'_>

§

impl Widget for Label

§

impl Widget for ProgressBar

§

impl Widget for RadioButton

§

impl Widget for SelectableLabel

§

impl Widget for Separator

§

impl Widget for Spinner

§

impl<'a> Widget for Checkbox<'a>

§

impl<'a> Widget for DragValue<'a>

§

impl<'a> Widget for Image<'a>

§

impl<'a> Widget for ImageButton<'a>

§

impl<'a> Widget for Slider<'a>

§

impl<'t> Widget for TextEdit<'t>

§

impl<F> Widget for F
where F: FnOnce(&mut Ui) -> Response,

This enables functions that return impl Widget, so that you can create a widget by just returning a lambda from a function.

For instance: ui.add(slider_vec2(&mut vec2)); with:

pub fn slider_vec2(value: &mut egui::Vec2) -> impl egui::Widget + '_ {
   move |ui: &mut egui::Ui| {
       ui.horizontal(|ui| {
           ui.add(egui::Slider::new(&mut value.x, 0.0..=1.0).text("x"));
           ui.add(egui::Slider::new(&mut value.y, 0.0..=1.0).text("y"));
       })
       .response
   }
}