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:

Code: Alles auswählen

QStringList signals = getSignals();
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 :P
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
Hier gehts los:

Code: Alles auswählen

const QMetaObject * QObject::metaObject () const 

Verfasst: 17. Dezember 2009 22:29
von phlox81
upsala hat geschrieben:Hier gehts los:

Code: Alles auswählen

const QMetaObject * QObject::metaObject () const 
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.