http://alpha-thema-online.uv.ro
Fa-ti si tu propriul forum, pe www.myforum.ro!
Pagina de start a forumului http://alpha-thema-online.uv.ro Autentificare Inregistrare FAQ Membri Cautare

Pagina de start a forumului http://alpha-thema-online.uv.ro » C / C++ / C# » P1: O aplicatie simpla Qt "Hello World" C++
Creaza un subiect nou  Raspunde la subiect Subiectul anterior :: Subiectul urmator 
P1: O aplicatie simpla Qt "Hello World" C++
MesajTrimis: 12/07/2007 21:50 Raspunde cu citat (quote)
Ad_Infinitum
Administrator
Administrator
Ad_Infinitum
Data inscrierii: 23/Iun/2007
Mesaje: 212




P1 este una din cele mai simple aplicatii Qt. Tot codul este scris in fisierul main.cpp:

main.cpp--------------
Citat:


#include <qapplication.h>
#include <qpushbutton.h>

int main(int argc, char **argv)
{
QApplication a(argc, argv);

QPushButton *hello=new QPushButton("Hello world!", 0);
hello->resize(100, 30);

QObject::connect(hello, SIGNAL(clicked()), &a, SLOT(quit()));

a.setMainWidget(hello);
hello->show();

return a.exec();
}




Sa vedem ce face fiecare linie.

QApplication a(argc, argv);

Aceasta bucata de cod creeaza un obiect QApplication care va controla in continuare executia aplicatiei, majoritatea setarilor sistemului si ale aplicatiei etc.

QPushButton *hello=new QPushButton("Hello world!", 0);
hello->resize(100, 30);

Codul de mai sus creaza un obiect QPushButon. Acesta este un buton pe care se poate da clic (nu este un buton care are o stare, precum QRadioButton sau QCheckBox). Va avea ca eticheta textul "Hello world!" si fara parinte. Folosind un widget care nu are parinte indica managerului de ferestre sa aiba grija de acest widget ca de o fereastra de sine statatoare pe pe ecran. De obicei aplicatiile au o singura fereastra fara parinte, numita fereastra principala, dar despre asta vom discuta mai tirziu.

Putem sa modificam dimensiunea widget-ului sa aiba 100 de pixeli latime si 30 inaltime.

QObject::connect(hello, SIGNAL(clicked()), &a, SLOT(quit()));

Ca sa intelegem acest cod ar necesită sa avem ceva cunostinte despre tehnologia semnal-slot. Voi incerca sa va explic acum, dar daca nu intelegeti din explicatia mea cititi in documentatia de la Qt: "Introduction to Signals and Slots".

Toate clasele care mostenesc QObject (direct sau indirect -- adica mosteneste o clasa care la rindul ei a mostenit QObject) pot contine semnale si/sau sloturi. Un obiect poate sa emita un semnal atunci cind isi schimba starea (oricare ar fi). De exemplu, cind dati clic pe un QPushButton acesta emite semnalul clicked() sau cind un QScrollBar este defilat el emite semnalul valueChanged(). Pe de alta parte, un slot este o metoda normala a unui obiect, care poate primi semnale.

Un obiect nu trebuie sa stie daca vreun slot este conectat la vreun semnal de-al lui sau invers, poti conecta un singur semnal la mai multe sloturi sau mai numeroase semnale la un singur slot. Aceasta va da probabilitatea reala de a refolosi componenta in procesul de dezvoltare.

Codul necesar apelarii unui slot, cit si codul care initializeaza metainformatiile despre obiecte, este generat de utilitarul moc. Vom vedea mai tirziu cum sa folosim moc.

Pe scurt, codul de mai sus este întrebuințat sa conecteze semnalul clicked() generat de obiectul hello la slotul quit() al aplicatiei (a) pentru inchide aplicatia.

a.setMainWidget(hello);
hello->show();

Codul de mai sus seteaza obiectul hello ca principalul widget al aplicatiei (cel care va inchide aplicatia) si il pune pe ecran.

return a.exec();

In cele din urma, bucla de evenimente este apelata si de acum utilizatorul primeste controlul aplicatiei. Cind utilizatorul va apasa butonul hello, bucla de evenimente va apela slotul quit() al aplicatiei si bucla va intoarce o valoare care va fi la rindul ei intoarsa catre sistem.

Nu-i asa ca este usor?

raducere de Bogdan Daniel Vatra. Adaptare de Claudiu Costin
Vezi profilul utilizatorului Trimite mesaj privat

P1: O aplicatie simpla Qt "Hello World" C++
 Pagina de start a forumului http://alpha-thema-online.uv.ro » C / C++ / C#
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
Ora este GMT + 3 ore  
Pagina 1 din 1  

  
  
 Creaza un subiect nou  Raspunde la subiect  


Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
    Powered by phpBB © 2001-2004 phpBB Group. phpBB Skin by Vjacheslav Trushkin.