You do have a viewport, everybody does ;). Add to viewport does not do anything to the widget’s location, these are the anchors, offsets, parent hierarchy, canvas position, that control widget screen space; you have full control over them and you can also directly set viewport position.
If you want to use a 3d widget instead:
- create a 2d widget
- add a widget component to the actor that will control it
- assign the above-mentioned 2d widget class to that component
- moving component moves the widget (moving the embedded 2d widget will also move the widget, but in relative space)
If you want to effortlessly swap the embedded widgets often, do so in a macro.