sobota, 25 września 2010

Qt zabawę czas zacząć!

No tak teraz to dopiero była długa przerwa, aż się źle z tym czuję. Racja nie miałem weny totalnie nie wiedziałem o czym pisać, teraz na szczęście nazbierało się parę tematów, o których chciałbym coś napisać.

Zauważyłem, że coraz więcej osób chciało by się zająć programowaniem okienek wszelkiej maści, ale jako, że mają doczynienia ze mną to wszystko co jest proste i jest do tego całkiem sporo poradników w rodzimym języku, to jest to po prostu dissowane przeze mnie to postanowiłem napisać cosik o Qt. Tak na początek zajmiemy się prosta aplikacją. Nie będzie to nic przełomowego ani w jakiś sposób trudnego do wykonania. Będzie to po prostu okienko z przyciskiem, gdzie po kliknięciu w niego program nam się zamknie. Proste prawda? Okej to czas zająć się za programowanie. Jako, że jestem zwolennikiem nauki programowania prosto z kodu, to też będę starał się podobnie przekazywać wiedzę, czyli najpierw podam cały kod aplikacji, a później go omówię dokładnie. Jeszcze w tym miejscu chciałbym nadmienić, że nie będę się zajmować zagadnieniami czysto z C++, uznaje, że osoby zainteresowane Qt wiedzą co to C++ oraz wiedzą co to klasy, wskaźniki itd. Okej teraz cześć właściwa, czyli kod:

#include <QApplication>
#include <QTextCodec>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QPushButton *button = new QPushButton("Witaj ?wiecie!");
    QObject::connect(button, SIGNAL(clicked()), qApp, SLOT(quit()));
    button->resize(300, 100);
    button->show();
    return app.exec();
}

Teraz zajmijmy się wyjaśnianiem co znaczą poszczególne linie kodu. Tak, więc 3 pierwsze linie to nic innego jak dodanie odpowiednich objektów i ich metod do programu. Pierwsza QApplication dodaje klasę główną okna, która zajmuje się zarządzaniem całą aplikacją. Nastepna, czyli QPushButton dodaje objekt przycisku do programu, a ostatnia trzecia dodaje po prostu odpowiednie kodowanie. Następna część programu to nic specjalnego to tylko zwykła funkcja main ;) Następna linia kodu dodaje główny obiekt aplikacji, czyli po prostu tworzy wątek odpowiedzialny za działanie aplikacji. Następna część odpowiada za kodowanie znaków w aplikacji. Qt domyślnie nie obsługuje polskich znaków i innych specyficznych znaków dla każdego kraju. U nas nie ma ogonków przy znakach, a u Niemców np. nie ma kropek ;) Kolejna część tworzy objekt typu QPushButton z napisem "Witaj Świecie!". Kolejna linijka jest linijką ciekawą, ponieważ odpowiada ona, można powiedzieć za obsługę zdarzeń w programach Qt. Objekt QObject jest obiektem głównym można powiedzieć, że każdy inny objekt w Qt dziedziczy właśnie po nim, więc jest on objektem nadrzędnym. Metoda connect() przyjmuje 4 argumenty pierwszym z nich jest objekt, który wysyła sygnał, czyli w tym przypadku QPushButton, ściślej mówiąc w naszym przypadku button. Następnie wybieramy jaki sygnał emituje button w naszym przypadku jest to clicked(), czyli po prostu kliknięcie. Trzecim argumentem jest odbiorca sygnału w naszym przypadku qApp, jest to po prostu alias do głównej części porgramu. ostatni argument to slot, czyli funkcję, która ma się uruchomić po kliknięciu w naszym przypadku ma się po prostu zamknąć program. następna linia po prostu ustala wielkość przycisku i zarazem okna w naszym przypadku ;) Później nastepuje wyświetlenie. No i zwrócenie wartości. W C++ wystepuje tutaj przeważnie 0, czyli poprawne wykonanie aplikacji. w Qt zwraca exec(), czyli po prostu uruchamia aplikację ;) Tą linię można zapisać też tak:
app.exec();
return 0;

Działanie tego będzie takie samo jak zapisanie w jednej lini tak jak w kodzie, który podałem na początku ;)

Okej to tyle na tą chwilę na temat Qt, przepraszam za moją niezbyt polską polszczyznę, która władam, ale mam nadzieję, że wszystko jest w miarę jasno opisane.

Brak komentarzy:

Prześlij komentarz