Seite 1 von 1

(gelöst) className() gibt als Name nur "QObject" z

Verfasst: 8. März 2011 13:21
von Espresso
Hallo,

ich habe ein paar Klassen, die voneinander abgeleitet sind,

class CAbstractDBAccess : public QObject {}

class CRecipeBaseClass: public CAbstractDBAccess {}

class CRecipe : public CRecipeBaseClass {}

und wenn ich auf den className von CRecipe zugreifen möchte, bekomme ich nur "QObject"

QString str = cRecipe.metaObject()->className();
str ist hierbei "QObject"

erwartet hätte ich "CRecipe" als className

Was mache ich denn da falsch?
den className muss doch das System selbst ermitteln,

Danke für Tipps,

Gruß Tom

Q_OBJECT

Verfasst: 8. März 2011 13:27
von softwaremaker
hast du in der Klasse das
Q_OBJECT
gesetzt

Re: className() gibt als Name nur "QObject" zurück

Verfasst: 8. März 2011 13:28
von franzf
Espresso hat geschrieben:Was mache ich denn da falsch?
Du unterschlägst das Q_OBJECT. Das ist entscheidend für den moc (Meta Object Compiler), der auch dafür sorgt, dass eben nicht der className der BaseClass zurück gegeben wird, sondern der deiner abgeleiteten Klasse.

Verfasst: 8. März 2011 13:48
von Espresso
das war es,
in jeder Klasse, von der man Meta-Infos benötigt muss
Q_Object enthalten sein.

class CRecipe : public CRecipeBaseClass
{
Q_OBJECT
....


Danke euch,

Gruß Tom