|
Naslov: Qt Dialogs Poruka od: burga 02 Мај 2008, 18:57:07 Kako da iz QtDialoga izvučem neku povratnu vrednost a da to nije Qt::Accepted i Qt::Rejected. Konkretno, imam dijalog koji sadrži listu QDateTimeEdit-ova i hoću da mi se vrati lista QDateTime-ova. Ne bih da koristim connect za svaku promenu, a nije mi jasno zašto si standardni dijalozi idu preko statičkih funkcija. Na kraju, može li to modeless dijalogom ako ne može modalnim?
Naslov: Odg: Qt Dialogs Poruka od: jboban 05 Мај 2008, 13:07:33 Qt::Accepted i Qt::Rejected dobijaš kao povratnu vrednost od samog poziva, ali možeš da dodaš razne getOvo(), getOno() metode.
Svaki tvoj dijalog je izveden iz QDialog-a. Kao i u svakoj drugoj klasi deklarišeš metode i podatke članove. Pristupaš im isto kao i u svakoj drugoj klasi. Dakle, tvoj klasa je npr. class MyDialog: public QDialog. Dodaš podatke članove npr. int m_nVal1, int m_nVal2 i metode int getVal1() const { return m_nVal1; } i int getVal2() const { return m_nVal2; } i sl. Naslov: Odg: Qt Dialogs Poruka od: burga 05 Мај 2008, 21:28:55 Sve je to u redu, ali evo pratičnog primera. Recimo da imam
MojaKlasa MojDijalog::getOno() const; Onda u matičnom prozoru pozovem MojDijalog(this); i kažem Kod: if (instancaMojegaDijaloga.exec()==QDialod::Accepted) .ono = instancaMojegaDijaloga.getOno() Praktično pitanje je da li još uvek postoji instancaMojegaDijaloga kada se završi exec funkcija? Naslov: Odg: Qt Dialogs Poruka od: RiSK 05 Мај 2008, 21:43:09 Da, naravno.
"instancaMojegaDijaloga" je validna promenljiva u delu iza naredbe if. Kako je ovo staticka promenljiva, objekat je smesten na steku i instanca postoji u celoj metodi (ili sta je vec) u kojoj je definisana ova promenljiva, a brise se na kraju metode. Naslov: Odg: Qt Dialogs Poruka od: jboban 06 Мај 2008, 01:53:52 "instancaMojegaDijaloga" je validna promenljiva u delu iza naredbe if. Ne, ona je validna i ispred if() jer je ispred i nastala. U if() se samo izvršava jedna od njenih metoda (exec).Kako je ovo staticka promenljiva, objekat je smesten na steku i instanca postoji u celoj metodi Obično nije statička već dinamička ili kao podatak član neke druge klase.Oblast važenja je ista kao i za svaki drugi tip promenljive, npr. int, a zavisi od načina deklarisanja. Najšešći način je kada je u nekoj drugoj, glavnoj ili ne, klasi definisan pointer na dijalog klasu kao MyDialog *m_dlgMain; Onda u konstruktoru te klase se instancira kao m_dlgMain = new MyDialog(...); Ovako je m_dlgMain vidljiv unutar cele nadredjene klase. Naslov: Odg: Qt Dialogs Poruka od: RiSK 06 Мај 2008, 09:30:45 "instancaMojegaDijaloga" je validna promenljiva u delu iza naredbe if. Ne, ona je validna i ispred if() jer je ispred i nastala. U if() se samo izvršava jedna od njenih metoda (exec).Citat: jboban Kako je ovo staticka promenljiva, objekat je smesten na steku i instanca postoji u celoj metodi Obično nije statička već dinamička ili kao podatak član neke druge klase.Oblast važenja je ista kao i za svaki drugi tip promenljive, npr. int, a zavisi od načina deklarisanja. Naslov: Odg: Qt Dialogs Poruka od: burga 06 Мај 2008, 17:35:30 Ma to se tiče pokazivača, sve i radim preko njih. Nego me kopka još jedna stvar upravo oko steka i slobodnog memorijskog prostora. Recimo da imam klasu MojaKlasa koja sadrži promenljivu članicu NekaKlasa članica (dakle, ne kao pointer). Ako sada tu klasu instanciram preko pokazivača (MojaKlasa * mojaInstanca = new MojaKlasa()) šta je na steku a šta u slobodnoj memoriji?
Naslov: Odg: Qt Dialogs Poruka od: RiSK 06 Мај 2008, 19:53:07 Pa na steku ostaje samo pointer na instancu MojaKlasa. Sve ostalo je na heapu
(ako sam dobro razumeo sta si napisao :)) Naslov: Odg: Qt Dialogs Poruka od: jboban 06 Мај 2008, 21:50:55 šta je na steku a šta u slobodnoj memoriji? Moj ti je savet da o tome ne razmišljaš bez debelog razloga. Davno su prošla ta vremena. Ako baš imaš razlog, navedi da tumačimo...Naslov: Odg: Qt Dialogs Poruka od: burga 06 Мај 2008, 22:16:36 Pa radi se o sledećem: u jednoj klasi mi se kao promenljiva članica nalazi lista od 4500 objekata, tako da čak i sa 512MB RAMa može da mi iskrsne pitanje memorije...
Naslov: Odg: Qt Dialogs Poruka od: jboban 07 Мај 2008, 00:51:01 swap ne koristiš? Moraš li sve da držiš u memoriji?
Powered by SMF 1.1.7 |
SMF © 2005, Simple Machines LLC |
Srpski prevod uredio: tomaja [linuxo.org]
Joomla Bridge by JoomlaHacks.com |