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

[QT] Signali & Slotovi

[es] :: C/C++ programiranje :: [QT] Signali & Slotovi

[ Pregleda: 2604 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.isp.telekom.rs.



+7 Profil

icon [QT] Signali & Slotovi03.02.2012. u 15:08 - pre 148 meseci
Drugari jel ima neko ko ima volje i bar malo vremena da mi pojasni malo bolje samu teoriju i kako funkcionisu signali i slotovi u QT Creatoru.
Citao sam DOC na njihovom sajtu i pokusavao sam da uradim nesto ali opet ne kapiram.
Gledao sam ovaj dijagram :
http://developer.qt.nokia.com/...mages/abstract-connections.png
i kao nesto razumem ali opet ne dovoljno.

Znam cemu sluze, najvise me buni sledece.

Kada napravim neko push dugme na nekoj formi(right-click->go to slots->{akcija}{on_clicked()}
On mi napravi u main.cpp funkciju za klik

Code:
void GlavniProzor::on_findButton_clicked()
{
    //bla bla bla 
}


i u header.h mi definise privatni slot

Nemogu da ukapiram sta je tacno SLOT a sta je SIGNAL u QT. Jednostavno nemogu da povezem sta se i sa cime povezuje. Signal sa slotom ili slot sa signalom. Sve mi se pomesalo
Stvarno mi se napravila neka pobuna u glavi pa ako neko moze po srpski da mi pojasni ili prikaze primer. Preporucljivo da je na srpskom.

Hvala momci unapred.

[Ovu poruku je menjao alfa-pro dana 03.02.2012. u 16:18 GMT+1]
Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

glorius
Damir Nikolic
C++ developer
SR

Član broj: 4366
Poruke: 428
*.dynamic.isp.telekom.rs.

ICQ: 208550327


+14 Profil

icon Re: [QT] Signali & Slotovi03.02.2012. u 19:57 - pre 148 meseci
Moja preporuka je da za pocetak nadjes neku (e-)knjigu za Qt 4 posto tu mozes naci primere sa signalima i slotovima i objasnjenje kako sve to funkcionise.
EOF
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2790 Profil

icon Re: [QT] Signali & Slotovi03.02.2012. u 20:04 - pre 148 meseci
Signal se emituje kao informacija da se nešto desilo. Slotovi povezani sa njim su akcije koje treba preduzeti. Telo signala nikada ne implementiraš, jer njega implementira Qt-ov moc (meta object compiler) i možeš tu implementaciju vodeti u generisanim moc_*.cpp datotekama, a telo slota Qt-ove alatke nikada ne implementoraju. Ti možeš u svom kodu da emituješ signal, a ne i da ga implementiraš.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

alfa-pro
Pancevo

Član broj: 241818
Poruke: 476
*.dynamic.isp.telekom.rs.



+7 Profil

icon Re: [QT] Signali & Slotovi03.02.2012. u 20:58 - pre 148 meseci
@Nedeljko

Signal se emituje kao informacija da se nešto desilo. Slotovi povezani sa njim su akcije koje treba preduzeti. Telo signala nikada ne implementiraš, jer njega implementira Qt-ov moc (meta object compiler) i možeš tu implementaciju vodeti u generisanim moc_*.cpp datotekama, a telo slota Qt-ove alatke nikada ne implementoraju. Ti možeš u svom kodu da emituješ signal, a ne i da ga implementiraš.

Izvini ali ja i dalje nemogu da te razumem, moze neki code primer?
Npr. kako ja to kapiram:

Imam na formi neko push dugme kome dodelim slot klik->show. Nakon dodeljivanja slota generise mi se C++ funkcija i u toj funkciji ja definisem akciju sta da se desi kada neko stisne to push dugme (npr. pop up window ('hello Elitesecurity');

Po mom misljenju znaci slot je akcija nekog objekta(npr. ako ja kliknem na pushBTN_1 pozovi funkciju onClick_pushBTN_1{}) {if($a == 0){return True;}
Ispravi me ako gresim?

E sada sta u celoj ovoj prici je signal? Kakvu ulogu ima on?
Jel to ono Connect itd?

Ja kada definisem slot direktno u form gui desingeru onda podesavam onu crvenu strelicu gde da se emituje taj npr. window posle press buttona. Neznam dali me razumes?




Kada vidjamo uvek ista lica, na kraju ona postaju deo našeg života. A kada postanu
deo našeg života,
onda žele i da nam ga izmene. I ako ne bude po njihovom, nije im pravo. Jer, svaki
čovek ima tačnu predstavu kako bi trebalo da živimo svoj život. A nikad nemaju pojma
kako treba da prožive sopstveni život.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2790 Profil

icon Re: [QT] Signali & Slotovi04.02.2012. u 15:51 - pre 148 meseci
Pa, kad si tako radio, onda naravno da ne vidiš gde je uloga signala.

Pogledaj u generisani ui_*.h fajl i u setupUi metodi ćeš naći poziv funkcije QMetaObject::connectSlotsByName(). Pogledaj u njenu dokumentaciju. Ako si npr. imao glavni prozor koji se zove MainWindow i na njemu dugme pushButton, a klasa glavnog prozora ima slot on_pushButton_clicked(), onda će poziv funkcije QMetaObject::connectSlotsByName(MainWindow) zapravo izvršiti funkciju QObject::connect(pushButton, SIGNAL(clicked()), MainWindow, SLOT(on_pushButton_clicked())).

U ovom slučaju, kada se klikne na dugme, onda to dugme emituje signal clicked(), a posledica toga je izvršavanje slotova povezanih sa tim signalom.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

_ikac
Ivan Raznatovic
Beograd

Član broj: 290105
Poruke: 54
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: [QT] Signali & Slotovi05.02.2012. u 09:58 - pre 148 meseci
Skontao sam kako funkcionise, samo je trebalo malo vise prakse i samo je doslo po sebi.

Napravim pushButton

u main.h definisem slotove

Code:
public slotis:
      void uradiNesto();
      void josNesto();


Onda moram da definisem u kom rezimu SLOTU se pokrece akcija i sta da pozove koju metodu SIGNAL u main.cpp

Code:
connect(ui->pushBtn, SIGNAL(clicked(), this,(SLOT(uradiNesto()));
connect(ui->pushBtn, SIGNAL(clicked(), this,(SLOT(josNesto()));


i onda definisem akciju ovih metoda posto sam povezao dugme i definisao na klik koja akcija da se pozove.

Code:

void MainWindow::uradiNesto(){
      ui->label->setText("Welcome to EX");
}


Ja mislim da je sada to ono sto me je mucilo.
Malo mi je tesko nov sam u QT FW pa citam DOC i ima brdo toga sto mi nije jasno pokusavam na svoj nacin i pomocu googlea ali ono sto mi neide u glavu onda pitam.

Hvala Nedeljko
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2790 Profil

icon Re: [QT] Signali & Slotovi05.02.2012. u 11:14 - pre 148 meseci
Super, shvatio si.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

[es] :: C/C++ programiranje :: [QT] Signali & Slotovi

[ Pregleda: 2604 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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