Seite 1 von 1
Alle Signals auflisten?
Verfasst: 17. Dezember 2009 21:14
von phlox81
Ich suche eine möglichkeit, alle Signals aufzulisten.
Ungefähr so stelle ich mir das vor:
Alternativ würde mich interessieren, ob diese irgendwo aufgelistet sind.
phlox
Verfasst: 17. Dezember 2009 21:28
von -=Freaky=-
mir ist keine methode bekannt, die dir die signale liefert.
maximal die von moc generierten files (moc_filename.cpp) koennte man durchsehen, da stehen sie (am ende glaube ich) drin.
vllt. gibts aber auch was viel schoeneres.
mfg,
julian
Verfasst: 17. Dezember 2009 21:44
von franzf
-=Freaky=- hat geschrieben:vllt. gibts aber auch was viel schoeneres.
Gibt es, wird sind hier bei Qt

QObject::metaObject() -> QMetaObject.
Da gibt es ein methodCount() und method(int index).
Das zusammenfügen in ner Schleife und nach dem QMetaMethod::methodType() fragen

Verfasst: 17. Dezember 2009 21:46
von upsala
Verfasst: 17. Dezember 2009 22:29
von phlox81
upsala hat geschrieben:Hier gehts los:
Das habe ich auch gesehen, liefert das alle Signals/slots, oder nur für diese eine klasse die Signals/Slots?
Verfasst: 17. Dezember 2009 22:34
von upsala
Natürlich nur für eine Klasse. Was sollte es sonst für einen Sinn machen?
Verfasst: 5. Januar 2010 14:54
von phlox81
Also das habe ich jetzt:
Code: Alles auswählen
void getSignals(QStringList& signallist,const QMetaObject* obj, QMetaMethod::MethodType methodtype)
{
int size = obj->methodCount();
for(int i = 0; i < size; ++i)
{
QMetaMethod m = obj->method(i);
if(m.methodType() == methodtype && !signallist.contains(m.signature()))
signallist.append(m.signature());
}
}
Allerdings würde ich nachwievor gerne ALLE Signals haben. Will jetzt aber nicht ALLE Klassen instanzieren (Momentan sind das nur 4 Aufrufe mit QPushButton, LineEdit, ComboBox und Label).
Das gibt zwar schon ne menge, aber so richtig glücklich macht das mich natürlich nicht
phlox
Verfasst: 5. Januar 2010 19:01
von upsala
Du bekommst doch alle Signale eines Objektes. Egal ob du es als QObject übergibst oder z.B. als QLabel.
Oder willst du alle Signale, aller Objekte deiner Anwendung?
Verfasst: 5. Januar 2010 20:45
von phlox81
upsala hat geschrieben:Du bekommst doch alle Signale eines Objektes. Egal ob du es als QObject übergibst oder z.B. als QLabel.
Oder willst du alle Signale, aller Objekte deiner Anwendung?
Jein. Ich will eigentlich eine Liste der "Standard Signale", ich brauche dies für meinen Codegenerator, um entsprechende SLOT(_signalname_) Elemente generieren zu können.
Arbeite gerade an einem Plugin der Code für Qt 4.6 generiert.