Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

QT Pitanja i objasnjenja

[es] :: C/C++ programiranje :: QT Pitanja i objasnjenja

Strane: < .. 1 2 3 4 5

[ Pregleda: 11276 | Odgovora: 84 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FantasticFour

Član broj: 267424
Poruke: 53
..106.109.adsl.dyn.beotel.net.



+10 Profil

icon Re: QT Pitanja i objasnjenja09.11.2010. u 15:37 - pre 163 meseci
a da li bi radilo ovako

QDialog dialog = new QDialog(this);
dialog.show();

cisto me zanima
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2790 Profil

icon Re: QT Pitanja i objasnjenja10.11.2010. u 15:40 - pre 163 meseci
Radilo bi, ali treba rešiti i problem uništavanja stvorenih objekata.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: QT Pitanja i objasnjenja10.11.2010. u 15:59 - pre 163 meseci
Mozes da dodas ovo

dialog->setAttribute(Qt::WA_DeleteOnClose);

da bi se dialog sam obrisao kada se zatvori.

Ali pazi neke metode ne mogu da se pozivaju ako koristis ovaj atribut.
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
206.155.48.*



+1 Profil

icon Re: QT Pitanja i objasnjenja10.11.2010. u 21:58 - pre 163 meseci
@Nedeljko
I ako ne unisti rucno dijalog trebalo bi sam da nestane kada mu se roditelj unistava, zar ne? Dakle, ne bi trebalo da curi memorija ako izostavi delete.

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: QT Pitanja i objasnjenja10.11.2010. u 22:41 - pre 163 meseci
To je tacno, ali ako imas situaciju u kojoj se cesce otvara (kreira) taj neki dijalog, dok se njegov parent redje unistava, doci ce do memory leak-a.

Primer bi bio mainWindow nekog programa koji je parent nekim dialozima, a taj mainWindow je nosilac applikacije (kada se on zatvori zatvara de cela aplikacija).
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: QT Pitanja i objasnjenja11.11.2010. u 09:51 - pre 163 meseci
Pa dobro, main window bi imao pokazivac na taj dijalog, ako je null onda znaci da nije napravljen pa pozove new, inace ga samo prikaze. Dakle, nesto tipa
Code:

void MainWindow::showHelpDialog()
{
    if (this->helpDialog == NULL)
        this->helpDialog = new HelpDialog(this);
    this->helpDialog->show();
}

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.dynamic.sbb.rs.



+395 Profil

icon Re: QT Pitanja i objasnjenja11.11.2010. u 10:26 - pre 163 meseci
operator new nad dijalog objektima i kreiranje prozora kao sistemskog objekta nije ista stvar .
Parent prozor ce obrisati svoj child prozor kao sistemski objekat ali sigurno nece unistiti objekat (klasu) tog child prozora .
Operator new je neophodan zbog toga kao i takodje zbog ovog :
Citat:

To je tacno, ali ako imas situaciju u kojoj se cesce otvara (kreira) taj neki dijalog, dok se njegov parent redje unistava, doci ce do memory leak-a.



Viva lollapalooza
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: QT Pitanja i objasnjenja11.11.2010. u 11:20 - pre 163 meseci
Citat:

Parent prozor ce obrisati svoj child prozor kao sistemski objekat ali sigurno nece unistiti objekat (klasu) tog child prozora .

Ne razumem te - tvrdis da roditeljski prozor nece unistiti prozor deteta? Tj. destruktor roditelja nece pozvati destruktor deteta?
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: QT Pitanja i objasnjenja11.11.2010. u 11:59 - pre 163 meseci
Ne tvrdim da nece, obrisace, ali tek kada korisnik zatvori roditeljski prozor, sto se moze desiti nakon sto je 100 puta otvorio neki child dialog i svaki put ga kreirao. Naravno ovo se odnosi na onog ko ne zeli da ima pokazivace na child dialoge kao atribute u roditeljskoj klasi.

I ako ne zelis da mislis o tome da li je dialog obrisan onda je dobro resenje koristiti

dialog->setAttribute(Qt::WA_DeleteOnClose);

I kada ti treba neki dialog kreiras ga sa new i dodelis mu gore navedeni atribut, on ce se delete-ovati sam kada se zatvori.

http://doc.qt.nokia.com/4.7/qt.html#WidgetAttribute-enum
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: QT Pitanja i objasnjenja11.11.2010. u 12:08 - pre 163 meseci
@BinaryRuler
Ok, to je jasno, nisam razumeo deerbeer-a.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.dynamic.sbb.rs.



+395 Profil

icon Re: QT Pitanja i objasnjenja11.11.2010. u 12:34 - pre 163 meseci
http://doc.qt.nokia.com/4.7/qdialog.html
Citat:

QDialog::~QDialog ()

Destroys the QDialog, deleting all its children.


Sta mu tacno znaci "deleting all its children" ??

Da li poziva destruktor klase prozora koju sam ja definisao?
npr/

class CParentDialog : public QDialog

class CChildDialog : public QDialog ...

pa recimo imamo :

Code:

CChildDialog * pChild = new CChildDialog (this);  


i QT automatski pozove destruktor CChildDialog ili to moram manuelno da uradim u parent klasi ?

Hocu da kazem da sa ovom konstrukcijom gore iznad samo je child dialog svestan parenta ali ne i obrnuto
da je parent "svestan" childa pa da moze pozvati neki delete nad njim jer samo child objekti biraju ko ce da im bude parent ,
a onda QT kroz svoj sistem prozora sakrivenog u nekom internom api-iju imaju listu childova parent prozora koju posle automatski brisu ili dodaju .
Ili ja negde gresim ?













[Ovu poruku je menjao deerbeer dana 11.11.2010. u 14:03 GMT+1]
Viva lollapalooza
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: QT Pitanja i objasnjenja11.11.2010. u 13:26 - pre 163 meseci
Nije najsvezija verzija ali to bi trebalo da je isto: http://doc.qt.nokia.com/4.6/objecttrees.html
Citat:

When QObjects are created on the heap (i.e., created with new), a tree can be constructed from them in any order, and later, the objects in the tree can be destroyed in any order. When any QObject in the tree is deleted, if the object has a parent, the destructor automatically removes the object from its parent. If the object has children, the destructor automatically deletes each child. No QObject is deleted twice, regardless of the order of destruction.

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.dynamic.sbb.rs.



+395 Profil

icon Re: QT Pitanja i objasnjenja11.11.2010. u 13:40 - pre 163 meseci
OK , ako sam dobro shvatio znaci radi otprilike ovako :
Code:

// ako pozovem ovo : 
CChildDialog * pChild = new CChildDialog (this);   

//onda se ustvari izvrsava otprilike sledece : 
QDialog::QDialog(QWidget* parent) 
{
  parent->children()->push_back(this) ; 

}


i time se odrzava lista parent/child elemenata u strukturi ...

Viva lollapalooza
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: QT Pitanja i objasnjenja11.11.2010. u 13:52 - pre 163 meseci
Tako i ja razumem tu hijerarhiju. Uglavnom, roditeljski widget ce pocistiti decu i bez pozivanja delete.
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

FantasticFour

Član broj: 267424
Poruke: 53
212.178.235.*



+10 Profil

icon Re: QT Pitanja i objasnjenja12.11.2010. u 12:57 - pre 163 meseci
evo novo pitanje
kako odrediti nasumican broj u qt-u
znam da se koristi qrand funkcija koja se nalazi u QGlobal
ali kako odrediti nasumican broj od 10 do 99
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: QT Pitanja i objasnjenja12.11.2010. u 14:09 - pre 163 meseci
Nemas funkciju koja to radi ali mozes i sam da izracunas sa
Code:

qrand() % 89 + 10

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2790 Profil

icon Re: QT Pitanja i objasnjenja12.11.2010. u 16:45 - pre 163 meseci
Ispravka

Code:
qrand() % 90 + 10

Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2790 Profil

icon Re: QT Pitanja i objasnjenja12.11.2010. u 18:24 - pre 163 meseci
Evo elegantnijeg rešenja koje ti uzgred daje onoliko ravnomernu raspodelu, koliko je generator pseudoslučajnih brojeva ima.

Code:
template<int min, int max>
int rnd() {
    const unsigned int num = max - min + 1;
    const unsigned int bad = (RAND_MAX + 1)/num*num - 1;
    unsigned int ret;

    do {
        ret = rand();
    } while (ret > bad);

    return ret%num + min;
}


Da bi dobijao brojeve u opsegu od 10 do 99, koristi funkciju rnd<10,99>().

Uz izvesnu žrtvu ravnomernosti raspodele može i ovako:

Code:
template<int min, int max>
int rnd() {
    return rand()%(max - min + 1) + min;
}

Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2790 Profil

icon Re: QT Pitanja i objasnjenja12.11.2010. u 21:19 - pre 163 meseci
Moguće su i flekdibilnije, nijansu sporije varijante

Code:
int rnd(int min, int max) {
    unsigned int num = max - min + 1;
    unsigned int bad = (RAND_MAX + 1)/num*num - 1;
    unsigned int ret;

    do {
        ret = rand();
    } while (ret > bad);

    return ret%num + min;
}


Da bi dobijao brojeve u opsegu od 10 do 99, koristi poziv rnd(10,99).

Uz izvesnu žrtvu ravnomernosti raspodele, a dobitak u brzini može ovako:

Code:
int rnd(int min, int max) {
    return rand()%(max - min + 1) + min;
}


Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

FantasticFour

Član broj: 267424
Poruke: 53
212.178.241.*



+10 Profil

icon Re: QT Pitanja i objasnjenja13.11.2010. u 13:49 - pre 163 meseci
evo malo slozenijeg pitanja
koristim linux 2.6.35 ARCH
okruzenje gnome 2.32
QT 4.7.1-1
i sad ja stavim ikonu na neko dugme u qtcreatoru
ta ikona je ustvari ikonica list-add tj ikonica sa plusicem
ali kad promenim ikonice ona i dalje ostaje stara
kako da ikonica na dugmetu bude ikona za dodavanje izabrane teme
hvala
 
Odgovor na temu

[es] :: C/C++ programiranje :: QT Pitanja i objasnjenja

Strane: < .. 1 2 3 4 5

[ Pregleda: 11276 | Odgovora: 84 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.