Qt-dokumentasjon.

Qt-dokumentasjon.

QMetaType-klassen administrerer navngitte typer i meta-objekt-systemet. Mer.

Merk: Alle funksjoner i denne klassen er tradssikre.

Offentlige typer.

Statiske offentlige medlemmer.

Beslektede ikke-medlemmer.

Detaljert beskrivelse.

QMetaType-klassen administrerer navngitte typer i meta-objekt-systemet.

Klassen er brukt som en hjelper til marshalltyper i QVariant og i kos signaler og slotsforbindelser. Det forbinder et typenavn til en type slik at den kan opprettes og odelegges dynamisk pa kjoretid. Erkl re nye typer med Q_DECLARE_METATYPE () for a gjore dem tilgjengelige for QVariant og andre malbaserte funksjoner. Ring qRegisterMetaType () for a lage typen tilgjengelig for ikke-malbaserte funksjoner, for eksempel kossignalet og sporforbindelsene.

Enhver klasse eller struktur som har en offentlig standardkonstruktor, en offentlig kopiekonstruktor og en offentlig destructor kan registreres.

Folgende kode tildeler og odelegger en forekomst av MyClass:

Hvis vi vil at operatoroperatoren for operativsystemet & lt; & lt; () og operatoren & gt; () for a arbeide med QVariant-objekter som lagrer egendefinerte typer, ma den egendefinerte typen gi operatorene & lt; & lt; () og operatoren & gt;

Medlemstype Dokumentasjon.

enum QMetaType :: Type.

Dette er de innebygde typene som stottes av QMetaType:

Flere typer kan registreres ved hjelp av Q_DECLARE_METATYPE ().

Medlemsfunksjon Dokumentasjon.

[statisk] tomrom * QMetaType :: konstruere (int type, const void * kopi = 0)

Returnerer en kopi av kopi, forutsatt at den er av typen. Hvis kopien er null, oppretter en standardtype.

[static] void QMetaType :: destroy (int type, void * data)

Destruerer dataene, forutsatt at den er av typen gitt.

[statisk] bool QMetaType :: isRegistered (int type)

Returnerer sant hvis datatypen med ID-typen er registrert ellers returnerer false.

[statisk] bool QMetaType :: load (QDataStream & stream, int type, void * data)

Les objektet av den angitte typen fra den angitte strommen til data. Returnerer sant hvis objektet er lastet inn ellers returnerer false.

Vanligvis behover du ikke a ringe denne funksjonen direkte. I stedet bruker du QVariants operator & gt;> (), som er avhengig av last () for a streame tilpassede typer.

[statisk] bool QMetaType :: lagre (QDataStream & stream, int type, const void * data)

Skriver objektet pekt pa med data med ID-typen til den gitte strommen. Returnerer sant hvis objektet er lagret ellers returnerer false.

Vanligvis behover du ikke a ringe denne funksjonen direkte. I stedet bruker du QVariants operator & lt; (), som er avhengig av lagre () for a streame tilpassede typer.

[statisk] int QMetaType :: type (const char * typeName)

Returnerer et handtak til typen som heter typeName, eller 0 hvis det ikke finnes en slik type.

[statisk] const char * QMetaType :: typeName (int type)

Returnerer typenavnet som er knyttet til den oppgitte typen, eller 0 hvis ingen tilsvarende type ble funnet. Den returnerte pekeren ma ikke slettes.

[statisk] tomrom QMetaType :: unregisterType (const char * typeName)

Avregistrerer en brukertype, med typenavn.

Denne funksjonen ble introdusert i Qt 4.4.

Beslektede ikke-medlemmer.

int qMetaTypeId ()

Returnerer metatypen ID for type T pa kompileringstidspunktet. Hvis typen ikke ble erkl rt med Q_DECLARE_METATYPE (), vil samlingen mislykkes.

QMetaType :: type () returnerer samme ID som qMetaTypeId (), men gjor et oppslag ved kjoretid basert pa navnet pa typen. QMetaType :: type () er litt tregere, men kompilering lykkes hvis en type ikke er registrert.

Denne funksjonen ble introdusert i Qt 4.1.

int qRegisterMetaType (const char * typeName)

Registrerer typenavnetypenavn for typen T. Returnerer den interne IDen som brukes av QMetaType. Enhver klasse eller struktur som har en offentlig standardkonstruktor, en offentlig kopiekonstruktor og en offentlig destructor kan registreres.

Etter at en type er registrert, kan du opprette og odelegge gjenstander av den typen dynamisk pa kjoretid.

Dette eksemplet registrerer klassen MyClass:

Denne funksjonen er nyttig for a registrere typedefs slik at de kan brukes av QMetaProperty, eller i QueuedConnections.

int qRegisterMetaType ()

Ring denne funksjonen for a registrere typen T. T ma deklareres med Q_DECLARE_METATYPE (). Returnerer metatypen ID.

For a bruke typen T i QVariant, er det nok med Q_DECLARE_METATYPE (). For a bruke typen T i ko-signal og sporforbindelser, ma qRegisterMetaType & lt; T & gt; () kalles for den forste tilkoblingen er opprettet.

For a bruke type T med QObject :: property () API, ma qRegisterMetaType & lt; T & gt; () kalles for den brukes, vanligvis i konstruktoren til klassen som bruker T eller i hovedfunksjonen ().

Denne funksjonen ble introdusert i Qt 4.2.

void qRegisterMetaTypeStreamOperators (const char * typeName)

Registrerer streamoperatorene for typen T som heter typenavn.

Etterpa kan typen streames ved hjelp av QMetaType :: load () og QMetaType :: save (). Disse funksjonene brukes nar du sprer en QVariant.

Stromoperatorene bor ha folgende signaturer:

Makrodokumentasjon.

Q_DECLARE_METATYPE (Type)

Denne makroen gjor typen Type kjent for QMetaType sa lenge den gir en offentlig standardkonstruktor, en offentlig kopi-konstruktor og en offentlig destructor. Det er nodvendig a bruke typen Type som en egendefinert type i QVariant.

Ideelt sett bor denne makroen plasseres under klassen eller strukturens erkl ring. Hvis det ikke er mulig, kan det settes i en privat headerfil som ma inkluderes hver gang denne typen brukes i en QVariant.

Legge til en Q_DECLARE_METATYPE () gjor at typen er kjent for alle malbaserte funksjoner, inkludert QVariant. Merk at hvis du har tenkt a bruke typen i kos-signal og sporforbindelser eller i QObjects eiendomssystem, ma du ogsa ringe qRegisterMetaType () siden navnene er lost ved kjoring.

Dette eksemplet viser et typisk brukstilfelle av Q_DECLARE_METATYPE ():

Hvis MyStruct er i et navneomrade, ma Q_DECLARE_METATYPE () makroen v re utenfor navneomradet:

Siden MyStruct er na kjent for QMetaType, kan den brukes i QVariant:


Hilsener! Vil du spille i det mest heldige kasinoet? Vi forbereder det for deg. Gå her nå!