EliteHackers
SALUT 2022!! NE-AM MUTAT PE DISCORD ! Vrei să inviți un prieten? [T]eoria [H]aosului [C]ontrolat - https://discord.com/invite/U4HBCHzm7r Acesta aste link-ul oficial al acestui server.
Lista Forumurilor Pe Tematici
EliteHackers | Reguli | Inregistrare | Login

POZE ELITEHACKERS

Nu sunteti logat.
Nou pe simpatie:
Mada_m99 pe Simpatie.ro
Femeie
23 ani
Bacau
cauta Barbat
24 - 53 ani
EliteHackers / Programare / O aplicatie simpla Qt "Hello World" C++ Moderat de Ad_Infinitum, AntiKiler, Puscas_marin, r3v
Autor
Mesaj Pagini: 1
Ad_Infinitum
Moderator

Inregistrat: acum 17 ani
Postari: 84
P1 este una din cele mai simple aplicatii Qt. Tot codul este scris in fisierul main.cpp:

main.cpp--------------



#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 trebui 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 multe semnale la un singur slot. Aceasta va da posibilitatea 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 folosit 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


Tutorialul nu este prea bun .. dar ma gandesc ca poate fi de folos cuiva ..


_______________________________________
Vizitati pentru mai multe tutoriale )

pus acum 17 ani
   
Pagini: 1  

Mergi la