Seite 1 von 1

meta type

Verfasst: 29. Juli 2011 18:04
von DBGTMaster
Hallo,

bin gerade dabei, eine Software, welche in QT geschrieben wurde, zu studieren... Hierbei bin ich auf Code gestoßen, den ich irgendwie nicht so recht verstehen mag... Habs auch schon mit der DOC versucht, aber vielleicht könnt ihr mir helfen :=)

Was passiert hier genau?

Code: Alles auswählen

	qRegisterMetaType<QModelIndex>( "QModelIndex" );
	qRegisterMetaType<quint16>( "quint16" );
danke!

lG

Re: meta type

Verfasst: 29. Juli 2011 18:23
von franzf
Was passiert hier genau?

Code: Alles auswählen

template <typename T>
int qRegisterMetaType(const char *typeName
#ifndef qdoc
    , T * dummy = 0
#endif
)
{
    const int typedefOf = dummy ? -1 : QtPrivate::QMetaTypeIdHelper<T>::qt_metatype_id();
    if (typedefOf != -1)
        return QMetaType::registerTypedef(typeName, typedefOf);

    typedef void*(*ConstructPtr)(const T*);
    ConstructPtr cptr = qMetaTypeConstructHelper<T>;
    typedef void(*DeletePtr)(T*);
    DeletePtr dptr = qMetaTypeDeleteHelper<T>;

    return QMetaType::registerType(typeName, reinterpret_cast<QMetaType::Destructor>(dptr),
                                   reinterpret_cast<QMetaType::Constructor>(cptr));
}
-> qmetatype.h

Re: meta type

Verfasst: 29. Juli 2011 18:26
von upsala
http://doc.qt.nokia.com/latest/qmetatyp ... erMetaType

Dies ist z.B. notwendig um Daten des entsprechenden Datentyps in einem QVariant zu speichern oder damit Qt bei asynchronen Signal-Slot-Verbindungen die Daten austauschen kann.

Wobei bei deinen genannten Datentypen dies Qt-intern passieren sollte.

Re: meta type

Verfasst: 29. Juli 2011 18:38
von DBGTMaster
Hallo,

danke, irgendetwas in dieser Richtung habe ich mir schon gedacht, nur hat es eben keinen Sinn ergeben, da diese schon existieren :)

danke!

lG