For each panel that is not an out-of-the-box widget you create a HeaderWidget/BodyWidget/FooterWidget class derived from QWidget (or whatever). In the constructor you build the UI (sub-widgets and layout) that the widget should contain. That construction code would be the same as whatever you intended to be in the dock widgets.
In your main window constructor you create an object of each of the three widgets classes, and add them to a QSplitter and add that QSplitter to the main window layout to make your main UI.
All of that can be done with Designer or by hand coding. There are buckets of hand-coded examples in the documentation.
Bookmarks