Qt’s graphics/viewarchitecture has a non-visual class for holding the item data as a model (QGraphicsScene), and a class for visualizing the data (QGraphicsView).
The way to add standard QWidgets to a scene is to create a QGraphicsProxyWidget for each QWidget, and add the proxy to the scene.
Structurally, using the graphics/view architecture to provide a mainwindow’s widgets is not so very different from the more conventional approach. The only significant differences are that we must create and add proxy widgets for the actual widgets, and that we must use graphics/view-specific layouts rather than the standard layout classes. Of course, if we wanted to use QGraphicsWidget subclasses there would be no need to create proxies for them, since we can add these directly into a scene.