QtCreator uses a very cleaver way to separate the GUI part of your widget through
(This two steps avoid the inheritance)
1. The generated UI class can help generate all GUI-widgets for you (button, textline)
2. The generated UI class has a setupUi method (taking your non-gui widget as an argument),
and the method will use your non-gui widget as the single parent of all the auto-generated widgets. (very cleaver!)
3. In your non-gui widget constructor,
a. you generate a new UI class
b. call setupUi
4. but now, how do you refer to the auto-generated widgets created in the Ui class?
No problem! remember the Ui class is also a "member" of your non-gui widget.
5. So you can call connect, layout etc. to interact with your Ui class.
6. In the destructor of your non-gui widget, it can free the memory (delete ui) when your non-gui widget is dead or out of scope.