Gegenfrage: Warum willst du das wissen?
Du hast irgendwo in den Tiefen des Netzes einen Code gefunden, den du
nicht verstehst, und der verwendet mit Qt eine Lib als Basis, die du
nicht kennst.
Qt bietet u.a. Serialiserung für alle darin bekannten Klassen. Damit das
auch für selbstdefinierte Klassen funktioniert, braucht es die ganzen
oben zu sehenden defines und das ganze trallala drumherum.
Die Doku zu Qt steht komplett online, da könntest du nachlesen, wie das
so alles funktioniert, und warum.
Oliver
>Gegenfrage: Warum willst du das wissen?
Da ich mich weiter in das QMetasystemeinarbeite.
>Die Doku zu Qt steht komplett online, da könntest du nachlesen, wie das>so alles funktioniert, und warum.
Nur weil es irgendwo steht heisst es nicht, dass man es Verstanden hat,
wenn man es gelesen hat, ansonsten bräuchten wir keine Schulen etc. Auch
ein ganzer Industriezweig e.g. Workshops, Trainings etc. wären
überflüssig.
Also falls jemand den Grund versteht, wieso staticMetaObject genutzt
wird und nicht QMetaObject in diesem Beipspiel, dann wäre es hilfreich,
eventuell sieht jemand mit Mehrerfahrung als ich den Grund.
Dirk schrieb:> Also falls jemand den Grund versteht, wieso staticMetaObject genutzt> wird und nicht QMetaObject
1
const QMetaObject QObject::staticMetaObject
2
3
This variable stores the meta-object for the class.
4
...
5
If you have a pointer to an object, you can use metaObject() to retrieve the meta-object associated with that object.
Deine Frage ist zwar jetzt schon etwas präziser, aber immer noch
eigentlich sinnlos. staticMetaObject ist ein statischer member von
QObject, und hat den Typ QMetaObject.
Was also ist jetzt die Frage?
Oliver
Lies doch mal die Doku. Da steht (QMetaObject):
A single QMetaObject instance is created for each QObject subclass that
is used in an application, and this instance stores all the
meta-information for the QObject subclass. This object is available as
QObject::metaObject().
Dirk schrieb:> oder ist mein Verständnis falsch?
Hm. ich sag mal so: Zum Verständnis fehlen da ein paar sehr grundlegende
Grundkentnisse über C++. Ich würde an deiner Stelle einen Schritt zurück
gehen, und erst einmmal davon absehne, so etwas wie Qt "verstehen" zu
wollen. Ein C++ Grundkurs dagegen wäre hilfreich. Ohne Basics wird das
nichts.
Nur soviel: Zeiger oder nicht Zeiger haben damit nichts zu tun.
QMetaObject ist ein Typ.
Oliver
Hier hatte ich ein Teil getestet um mein Verständnis der Dokumentation
und meines Wissenstandes zuprüfen. Leider hapert es daran wann ich
staticMetaObject oder wann metaObject benutzen soll. Wie man im Code
sehen kann benutze ich mal staticMetaObject und mal metaObject und
beides funktioniert.
Du hast meinen Post oben nicht gelesen, oder?
"A single QMetaObject instance is created for each QObject subclass that
is used in an application, and this instance stores all the
meta-information for the QObject subclass. This object is available as
QObject::metaObject()."
Beides ist dasselbe.
Anhand deines Postes hab ich gestern nochmal die Dokumentation zum
QObject gelesen und bin über diesen Abschnitt gestolpert.
Auszug von https://doc.qt.io/qt-5/qobject.html
Example:
Danach hab ich mir den Source code vom QObject angeschaut und somit
wurden beide Eingangsfragen beantwortet bzgl. Makro und
staticMetaObject/Metaobject