folgende Programmstruktur ist vorhanden:
Mehere Verschiedene QWidgets (also QLineEdit, QSpinbox, Q...) wurden zu SWidgets vererbt (neu SLineEdit, SSpinbox, S....). Gleichzeitig sind diese SWidgets auch von der Klasse Saveme (hat eine reinvirtuelle Funktion save()) abgeleitet. (Dabei ist natürlich zubeachten, dass die Saveme Klasse keine QObject Klasse ist (wegen der Multiple inheritance von QObject)).
So nun Erstelle ich eine Form. In dieser Platziere ich viele verschiedene SWidgets. Auch erstelle ich eine QAction welche ich mit der Funktion Saveall der Form verbinde.
Die Saveall Funktion dient dazu, in sämtlichen SWidgets die Funktion save() aufzurufen.
Und so lautet meine Saveall Funktion:
Code: Alles auswählen
void Form::Saveall(){
foreach(QWidget* w, this->findChildren<QWidget*>()){
if(w->inherits("Saveme")
(Saveme*)w->save();
}
}Habe auch ein qobject_cast versucht jedoch geht auch das nicht da die Klasse Saveme keine QObject Klasse ist. Aus dem selben Grund kann ich auch die Suchfunktion "findChildren<Saveme*>()" nicht brauchen.
Kann mir jemand sagen wie ich meine Saveall Funktion gestallten muss, ohne das ich nach jedem SWidget-typ (also SLineEdit etc..) speziell suchen muss?
Vielen Dank
Gruss
mastershybby