c ++ - Qt QApplication :: commitData, Windows shutdown, forvirrende dokumentation

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er meget forvirret med hvad der skal og skal ikke gøres i QApplication::commitData. Navnet indebærer, at jeg bare skal gemme staten, og doktoren siger, at det ikke bør lukke ansøgningen. alle vinduer derved lukker applikationen. Hvis dette ikke er en måde at registrere Windows-shutdown, ser jeg ikke nogen anden måde at fortælle, at Windows faktisk er afbrudt.


Der er også de relaterede saveState. Funktionsnavnet betyder det samme, og dokumentationen er også meget ens.


Hvordan skal jeg opdage korrekt, når systemet lukkes, og både gemme min tilstand og lukke min ansøgning? Er commitData faktisk den rigtige måde og bare lider af et meget dårligt navn og dårlig dokumentation?

Bedste reference


I min praksis for at opdage en afbrydelse af applikationen forbinder jeg normalt med slot void QCoreApplication::aboutToQuit (). Som det står i dokumentet:



  Signalet er særligt nyttigt, hvis din ansøgning skal gøre nogle sidste oprydning. Bemærk at ingen brugerinteraktion er mulig i denne tilstand.



Hidtil så godt har det fungeret korrekt for mig

Andre referencer 1


commitData () og saveState () kan virke overflødige.


Men dokumentationen
siger [5]



  Desuden vil de fleste sessionsledere meget sandsynligt anmode om en gemt tilstand umiddelbart efter at applikationen er startet. Dette tillader session manager at lære om programmets genstartspolitik.



Måske forklarer det, hvorfor begrebet 'data' og 'stat' er adskilt. Under det første opkald ville det ikke være brugervenligt at interagere med brugeren.


Standard svaret til afbrydelse af applikationen ser ud til at være et godt design, fordi hvis du ikke genimplementerer, så er det sikreste at lukke appen (som om brugeren havde valgt Afslut handlingen), som også skal gemme brugeren s data.


Er OS slukket, eller kun sessionen? Så vidt din app skal være bekymret, er det kun sessionen (siden teknisk set kan brugeren logge af og OS fortsætter med at køre.) Og brugeren kan overveje at appen ikke skal 'lukkes', bare 'pauset med data safet. '


Overvej også mobile platforme som iOS, hvor et program tilsyneladende kører for evigt.