Change ZOrder of widget in viewport at runtime.

Is it possible without destroying and creating widget again?

You can for example create a SOverlay and use AddSlot() with Zorder input. Then move the actual widget to that slot.