Qt Forum.

(absolutt nybegynner) QCoreApplication.

Jeg har nettopp begynt a bruke Qt IDE, og jeg blir kjent med Qt under Linux 64b. Etter at jeg valgte konsollprogrammet IDE, genererte dette et stykke kode:

int main (int argc, char * argv [])

QCoreApplication a (argc, argv);

Dette programmet slutter aldri. Skal det v re slik at automatisk generert program ma stoppes? Hva mangler og er virkelig nodvendig QCoreApplication klasse for a fa programmet til a kjore?

Det eneste du fortalte det var a begynne og ikke gjore noe. Du fortalte ikke det a stoppe! Eller er det mer til koden du ikke har vist?

Det er bare hele programmet generert av QtIDE. Hvordan fortelle den a stoppe? Sporsmalet gjenstar: er QCoreApplication nodvendig for a utvikle applikasjoner? Skal jeg bruke signal / socket mekanisme for a skrive trivielle programmer?

Jeg tror du burde begynne med a lese litt.

For a svare pa sporsmalet ditt:

a stoppe et program du bare forteller det a slutte. 🙂

Ga gjennom veiledningene. De forklarer denne typen ting.

For et veldig enkelt program trenger du ikke QCoreApplication. Men sa snart du begynner a bruke noe som ikke er trivielt (nettverk, venter pa hendelser, interaksjon med andre programmer, etc.), trenger du det. Men for noe som er trivielt, trenger du sannsynligvis ikke Qt til a begynne med.

Greit. Jeg forteller programmet for a slutte:

int main (int argc, char * argv [])

QCoreApplication a (argc, argv);

Det vil ikke igjen slutte. Har jeg gjort noe galt?

Ja. a.exec () returnerer ikke for programmet er avsluttet, og dermed nar du aldri linje 9 til programmet allerede har avsluttet.

int main (int argc, char * argv [])

Nar du bruker QCoreApplication, bruker du en hendelseslokke.

Sa du ma lage en handteringsklasse for a gjore noe med hendelsene eller hva du vil gjore. Hvis du bare vil gjore litt enkelt inn / ut, bruk ikke QCoreApplication som Andre fortalte deg. Det er bare distraherende for deg.

Nar du stiller en variabel for a v re et funksjonsanrop (linje 8), blir funksjonen kalt i det oyeblikket. og gi sin returverdi til variabelen. Hvis det er en hendelse, far du bare en verdi tilbake nar hendelsen stopper.

Hva vil du gjore med dette programmet? Hvorfor leser du ikke og prover veiledningene (linkene er allerede publisert. Noen innlegg ovenfor)?

Sa hva er den enkleste maten a fortelle exec a slutte i over programmet? Tutorials dekker mer sofistikerte eksempler pa a bruke Qt. Det er bare for begynnelsen a bli kjent med Qt. Beklager for bryderiet.

[sitatforfatter = «v ske» dato = «1303164808»] Sa hva er den enkleste maten a fortelle exec a slutte med i programmet ovenfor? Tutorials dekker mer sofistikerte eksempler pa a bruke Qt. Det er bare for begynnelsen a bli kjent med Qt. Beklager ulempe. [/ Quote]

Koble sporavslutningen til QApplication-objektet.

Men siden programmet ikke har noen andre metoder, har du ikke mulighet til a gjore det.

For a bli kjent med Qt, studer og prov oppl ringen som er nevnt tidligere i denne traden. Hvis du har en deja-vu leser dette, sa ja, du har rett. Du har blitt fortalt sa ikke bare for moro skyld, vi mener det.

Ok, hvordan er dette for et absolutt grunnleggende eksempel:

int main (int argc, char * argv [])

QCoreApplication a (argc, argv);

// notat at vi ma bruke t.connect, som hoved er ikke et QObject.

t.connect (& t, SIGNAL (timeout ()), & amp; SLOT (avslutte ()));

Denne applikasjonen vil starte, vente et sekund, og deretter avslutte, ikke gjore noe nyttig arbeid i mellomtiden. Programmet bruker imidlertid hendelseslokken, da timeren trenger en. Vi bruker en signal-slotsforbindelse for a gjore timeout-signalet til timeren utlose avslutningsmetoden (som er definert som et spor) i QCoreApplication-forekomsten.

Mange takk, Andre. Jeg tror det var sporsmal om Qt IDE som genererte skjelettet til et program som aldri stopper og dermed skaper darlig program. Som jeg jobbet med VS IDE, hver gang det genererte et skjelett, gjorde det ingenting, men alltid avsluttet. Videre foreslar docs at du alltid bruker QCoreApplication-klassen i programmer. Dette forslaget er imidlertid misvisende.

Na etter «hard begynnelse», skal jeg studere eksempler og oppl ringsprogrammer. Takk til alle.

QCoreApplication gjor mer enn hendelseslokken. Selv om du ikke trenger det, kan du fa fordeler fra QCoreApplication, f.eks. med sin kommandolinjeparagraf (du far en fin QStringList), oversettelsesalternativene og mange flere. Bare ring ikke app.exec ().

Det er bra poeng. Takk.

hvorfor unngar alle svaret her (jeg vet at det er et gammelt innlegg, men kom igjen). Bare opprett en klasse som underklasse QObject med et spor som du kan koble til en QTimer :: singleShot, deretter bam, nar .exec blir kalt, vil startmetoden bli kalt og deretter bare ringe slutt nar du er ferdig.

Ser ut som din forbindelse til Qt Forum var tapt, vent mens vi forsoker a koble til igjen.