I'm relatively new to egui and I have a project using it and eframe where I'd like a few labels floating within a layout (i.e. not locked to a grid, and able to be dragged to different locations with the mouse) and I have most of the functionality established but I don't know how to set the location of a widget to a screen space position. I haven't found any documentation that describes how to do this and .with_new_rect() has no noticeable effect. Putting the labels within a layout and using ui.add_space() could work but since spacing only works along a single axis it would be too limiting.
The docs of Ui::label
note:
Shortcut for
add(Label::new(text))
That is, ui.label("foobar")
is ui.add(Label::new("foobar"))
. The docs of Ui:add
note:
See also
Self::add_sized
andSelf::put
.
The latter says:
Add a
Widget
to thisUi
at a specific location (manual layout).
So, to place a label at a particular position x
, y
with size w
, h
:
ui.put(egui::Rect::from_min_max(
egui::pos2(x, y),
egui::vec2(w, h),
), egui::Label::new("foobar"));
Note that you say "screen space" position, but this is still relative to the window. I assume that's what you meant; otherwise you would additionally have to offset the position by the window's current position.