@activeLearner
There are many ways to do it
StackedWidgets
It is simplest way to do the things that you have said. It may take memory but it is easiest method to solve this.
How it works
First Create buttons
Add stacked widgets then you can create specific widgets such as human elephant in living beings. (You can promote widgets in ui too)
Again you can add another stacked widgets inside that widget so it's most easy way to do so
https://doc.qt.io/qt-5/qstackedwidget.html
Simple dialogs || windows
You can create windows on clicking the buttons and again inside it you can do same and achieve it. I don't recommend it as it looks so untidy
3.tabWidget
It's similar to stacked widgets but it looks more like your browser tabs
You can create tabWidget inside it and do same for more deep
https://doc.qt.io/qt-5/qtwidgets-dialogs-tabdialog-example.html
4.Simple Widgets
Another approach to get this is you can simply create widgets and
use
setVisible property to show on the basis of user clicks
There is nothing that is best option. I like stackedWidget the most and can handle almost all things for simple development