Qobject-slot arv

Fa via App Store Les dette innlegget i var app!

I Qt, hvordan bruker jeg Q_OBJECT-spor og signaler med flere arv?

Jeg sa gjennom de relaterte sporsmalene og kunne ikke finne noe som adresserer akkurat det jeg snakket om, sa la meg beskrive.

Jeg har en klasse, la oss si foo som ma ha sine egne spor og signaler, men ma ogsa arve fra QXmlDefaultHandler (hores ganske rart, men jeg opplevde denne situasjonen nar jeg provde a bruke QHttp for a lese et nettsted direkte inn i en QBuffer).

Denne koden, hvis den ledsages av en cpp for a koble til et signal et annet sted, vil ikke kompilere. Du far feil om noen medlemmer av QObject ikke er medlem av QXmlDefaultHandler. I tillegg kan du ikke flytte Q_OBJECT eller ellers far du vtable-feil for ikke a implementere noen ting (fortsett! Prov det!).

Vennligst se svaret mitt for (veldig enkelt) reparasjon. Jeg vil underholde a stemme deg som det aksepterte svaret hvis jeg tror du forklarer det bedre enn jeg gjor.

rediger: for deg c ++ og Qt dyr, vennligst send svar hvis du kan forklare det bedre. Jeg brukte litt tid pa a se denne informasjonen opp, sa v r sa snill a hjelpe noen andre hvis du kan gjore det bedre enn meg.

Dokumentasjonen for moc sier at i tilfelle av flere arv, bor klassen som gir QObject forst vises.

Hvis du bruker flere arv, antar moc at den forste arvelige klassen er en underklasse av QObject. V r ogsa sikker pa at bare den forste arvelige klassen er et QObject.

Virtual arv med QObject stottes ikke.

Sa enkelt som det hores ut, hvis du ikke setter QObject forst i arvslisten, er denne oppgaven umulig. Det er en begrensning i Qts meta objekt system. Hvis du ikke gjor dette, vil kompilatoren forsoke a bruke noen medlemmer av QObject som en del av QXmlDefaultHandler.


Hei! Vil du spille i det mest heldige kasinoet? Vi samlet det for deg. Trykk her nå!