Qt-tilkoblingsspor ikke kalt

Qt-tilkoblingsspor ikke kalt h1>

Fa via App Store Les dette innlegget i var app!

Min signal / sporforbindelse virker ikke.

Jeg ser gjentatte ganger folk som har problemer med slots som ikke blir kalt. Jeg vil gjerne samle noen av de vanligste arsakene. Sa kanskje jeg kan hjelpe folk og unnga mange overflodige sporsmal.

Hva er arsakene til at signal / sporforbindelser ikke fungerer? Hvordan kan slike problemer unngas?

Det er noen regler som gjor livet lettere og slar lettere og dekker de vanligste arsakene til defekte tilkoblinger. Hvis jeg glemte noe, vennligst fortell meg.

1) Bruk full signatur av signal og spor:

og sjekk stavematen og bokstaveringen.

Kontroller noye om du bruker onsket overbelastning av signal og spor, og hvis overbelastningene du brukte egentlig eksisterer.

3) Ditt signal og spor ma v re kompatibelt:

Dette betyr spesielt at parametrene ma v re av samme type (referanser tolereres) og har samme rekkefolge.

Syntaks for kompileringstid trenger ogsa det samme antall parametere. Gamle runtime syntaks gjor det mulig a koble signaler til spor med mindre parametere.

4) Kontroller alltid returverdi for tilkoblingsmetode (programmerere bor aldri overse returverdier):

bruk alltid noe som.

Eller hvis du vil kaste unntak eller implementere full feilhandtering. Du kan ogsa bruke en makro slik:

5) Du trenger en hendelseslokke for koforbindelser:

Dvs. nar du kobler til signaler / spor av to objekter som eies av forskjellige trader (sakalte koforbindelser), ma du ringe exec (); i sporets trad!

Arrangementsloyfen ma ogsa faktisk bli servert. Nar spaltens trad er fast i en slags opptatt sloyfe, blir ikke kjoreforbindelser utfort!

6) Du ma registrere egendefinerte typer for koforbindelser:

Sa nar du bruker egendefinerte typer i koforbindelser ma du registrere dem for dette formalet.

Forst erkl rer du typen ved hjelp av folgende makro:

Bruk deretter ett av folgende samtaler:

7) Foretrekker ny kompileringstidssyntax over gammel kontrollert syntaks:

bruk denne syntaksen

som kontrollerer signal og spor under kompileringstid og til og med trenger ikke at bestemmelsesstedet er en faktisk spalte.

Hvis signalet ditt er overbelastet, bruk folgende syntaks:

Ogsa bland ikke const / non-const-signaler / spor for den syntaksen (normalt signaler og spor vil ikke v re konstant).

8) Dine klasser trenger en Q_OBJECT makro:

I klasser der du bruker «signaler» og «slots» spesifikasjoner ma du legge til en Q_OBJECT makro slik:

Denne makroen legger til nodvendig metainformasjon i klassen.

9) Dine gjenstander ma v re i live:

Sa snart enten avsenderobjektet eller mottakerobjektet er odelagt, vil Qt automatisk kaste bort forbindelsen.

Hvis signalet ikke sendes ut: Finnes avsenderobjektet fortsatt? Hvis sporet ikke kalles: Er mottakerobjektet fortsatt?

For a sjekke levetiden til begge objektene, bruk et feilsokingsbruddspunkt eller noe qDebug () -utgang i konstruktorene / destruktorer.

For a gjore en veldig rask og skitten kontroll av tilkoblingen avgir signalet selv ved a bruke noen dummy-argumenter og se om det kalles:

Endelig er det selvsagt mulig at signalet ganske enkelt ikke sendes ut. Hvis du fulgte de ovennevnte reglene, er det sannsynligvis noe feil i programmets logikk. Les dokumentasjonen. Bruk debuggeren. Og hvis det er na en annen mate, spor ved stackoverflow.


Hi! Want to play in the most lucky casino? We found it for you. Play here now!