Qt Dialogs
Dobrodošli, Gost. Molim vas prijavite se ili se registrujte.
Da li ste izgubili vaš aktivacioni e-mail?

Prijavite se sa korisničkim imenom, lozinkom i dužinom sesije

Linuxo Forumi

Stranice: [1]   Idi dole
  Štampaj  
Autor Tema: Qt Dialogs  (Pročitano 1495 puta)
0 članova i 1 posetilac pregledaju ovu temu.
burga
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 568


Meet Linus


WWW
« poslato: 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?
Prijavi uredniku   Sačuvana

Нема Бога, и Дирак је његов пророк
jboban
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 843



« Odgovor #1 poslato: 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.
« Poslednja izmena: 05 Мај 2008, 13:09:45 od jboban » Prijavi uredniku   Sačuvana
burga
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 568


Meet Linus


WWW
« Odgovor #2 poslato: 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?
Prijavi uredniku   Sačuvana

Нема Бога, и Дирак је његов пророк
RiSK
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 628


sleep`walker


« Odgovor #3 poslato: 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.
Prijavi uredniku   Sačuvana

Gradimo
Narodu
Unix
jboban
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 843



« Odgovor #4 poslato: 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.
Prijavi uredniku   Sačuvana
RiSK
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 628


sleep`walker


« Odgovor #5 poslato: 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).
Slazem se. Samo je covek pitao da li je vazeca nakon poziva metode exec, tj iza if naredbe. Zato sam srocio ovako.
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.
I sa ovim se slazem, ali je u gornjem primeru staticka. Obrati paznju na operator (.) pri pozivanju metode exec. I takodje kazem da je dobra praksa sve koristiti pointere za sve objekte i dinamicki ih alocirati.
Prijavi uredniku   Sačuvana

Gradimo
Narodu
Unix
burga
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 568


Meet Linus


WWW
« Odgovor #6 poslato: 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?
Prijavi uredniku   Sačuvana

Нема Бога, и Дирак је његов пророк
RiSK
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 628


sleep`walker


« Odgovor #7 poslato: 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 Smiley)
Prijavi uredniku   Sačuvana

Gradimo
Narodu
Unix
jboban
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 843



« Odgovor #8 poslato: 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...
Prijavi uredniku   Sačuvana
burga
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 568


Meet Linus


WWW
« Odgovor #9 poslato: 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...
Prijavi uredniku   Sačuvana

Нема Бога, и Дирак је његов пророк
jboban
Hero Member
*****
Van mreže Van mreže

Pol: Muškarac
Poruke: 843



« Odgovor #10 poslato: 07 Мај 2008, 00:51:01 »

swap ne koristiš? Moraš li sve da držiš u memoriji?
Prijavi uredniku   Sačuvana
Stranice: [1]   Idi gore
  Štampaj  
 
Prebaci se na: