Easiest and quite comftible to use (since it creates some soft of interface) way to for bidriectional BP and C++ communication, is to create C++ base class with things you want to have in C++ and then make blueprint that based of it
So create new class based of UUserWidget, put property variables for widgets you want to control, now create widget BP based of that class or change existing BP class in “Blueprint Settings”. After that go to defaults of BP and set variables you made with widgets that you placed in that BP. Now you can get current user widget that is displayed in viewport and control widget in it via variables you made.