Hi @XDePedro,
My first piece of advice is to articulate on paper exactly what you want to do. This will help you gather your thoughts, break down what is needed, and make it easier to explain your ideas to other people.
This is funny, as I am trying to do a very similar thing. The delegate can be tricky to deal with, but if you break down what it does, the task becomes simpler.
I would advise surfing through this free online PDF about QML: https://qmlbook.github.io/assets/qt5_cadaques.pdf
It contains a ton of great info. One section, on page 93, talks specifically about the delegate property:
Each delegate gets access to a number of attached properties, some from the data model, others from the view. From the model, the properties convey the data for each item to the delegate. From the view, the properties convey state information related to the delegate within the view.
Now, I have not tested this idea, but hear me out.
-Assign enumerations to each different data type you might want to display in a particular item in this ListView (QString, Image, Graph, etc).
-Create a separate .qml file that is, at its root, of type Component, which then contains a Rectangle. You will use this class for your ListView delegate.
-Write a function (either in a C++ class that is registered as a singleton type or a context property, or directly embedded in QML as Javascript) that, based off of the enumeration it is given, displays the desired content in the form of an Item that, either contains some text, an image, or something else.
Pretty sure this is feasible. Your best friend is the internet. Look for examples of people attempting similar feats, & read through Qt Docs. You will figure it out!
Edit: Check out the QML types documentation on Item Delegate: http://doc.qt.io/qt-5/qml-qtquick-controls2-itemdelegate.html
This is exactly what you are looking for. It inherits the API from AbstractButton, meaning you can display text, icons, and checkables.