Seems to me that you have the problem that you are "confusing the map for the territory", that is, you are not distinguishing between the model for your cards and their contents with the way you display the model on the UI.

Your map is the model that describes the cards and the widgets each one contains. It is a hierarchy of widgets and layouts, with the card widget at the top and any layouts, spin boxes, line edits, etc. under that in a parent-child relationship.

Your territory is the way you display that information on screen. If you want to display your model as a hierarchy, then you would use QTreeWidget. If you want a list, you use QListWidget. For each QWidget in your model, you can retrieve its name (QObject::objectName()) and through the QMetaObject (via QObject::metaObject()) you can retrieve the class name (widget type) through QMetaObject::className(). What you display is the text that describes each of the components in your model.

This is exactly what Qt's "ui" files are all about. The ui file is a description of the widget and layout hierarchy for a dialog or other widget. At runtime, Qt uses the information compiled form that file to create the actual widgets on screen.