Qt – Wprowadzenie

Qt – zestaw przenośnych bibliotek i narzędzi programistycznych dedykowanych dla języków C++, QML i Java. Ich podstawowym składnikiem są klasy służące do budowy graficznego interfejsu programów komputerowych, począwszy od wersji 4.0 Qt zawiera też narzędzia do tworzenia programów konsolowych i serwerów. – Wikipedia

Może zacznę od motywacji, pisząc w C++ największym problemem jest multipletowość, niby jest, ale w praktyce trzeba się natrudzić żeby przepisać średnio zaawansowaną aplikacje z np. windowsa na linuksa, z pomocą przychodzi Qt, gdzie mamy gotową obsługę sieci, baz danych, zapytań, obsługi wielu wątków, obsługę jsona, xmla i wielu innych bardzo przydatnych pierdół. Przekonany?

Ale halo? Qt jest płatne, na co ty mnie naciągasz? Owszem, przy próbie pobrania na pierwszy rzut widać tylko możliwość kupienia/subskrypcji na zasadach trial, ale niżej jest opcja pobrania wersji otwartej, Community która prawie się nie różni od wersji płatnej.

No dobra, pobrałem Qt, odpalam Qt Creator, co teraz?

Jeżeli znasz już podstawy C++ to super, jeżeli nie to odsyłam do książek lub Zelenta, ale i bez tego na start sobie poradzisz, no dobra, chcesz stworzyć projekt, ale tyle opcji do wybrania, co wybrać? I tu pojawia się kolejny problem z jakim początkujący walczą.
Najprostszym rozwiązaniem wydaje się Qt Widgets, ale czy aby na pewno? W Qt Widgets wszystko piszemy C++, ktoś może pomyśleć że super, znam C++ będzie łatwo, projektowanie interfejsu aplikacji używając samego C++ to jakieś nieporozumienie, cytując klasyka, co prawda jest opcja tworzenia interfejsu używając Designera, czyli specjalnego narzędzia dołączonego do Qt Creatora, jednak przy średnio zaawansowanych projektach designer często się crashuje i są duże problemy, lepiej się od niego nie uzależniać. Co więc wybrać na początek? Zdecydowanie polecam stworzenie projektu używając Qt Quick Controls, obecna najnowsza wersja to Qt Quick Controls 2, interfejs można malować używając banalnego języka frontendowego QML który składnią bardzo przypomina CSS.

Pierwsza aplikacja z Qt Quick

Ujrzymy chaos, nasz projekt składa się z:

  • projekt.pro – W nim są informacje o modułach używanych przez aplikacje, w przypadku np. działania przy sieci trzeba dodać moduł network, ale to w innym poradniku/w dokumentacji
  • deployment.pri – Tam są wskazówki dla kompilatora, najlepiej tego nie dotykać na początku
  • main.cpp – Backend aplikacji, w tym miejscu będziemy importować klasy cpp itp.
  • main.qml – Główny plik z designem
  • mainform – Układ designu, polecam usunąć, na początku wprowadza tylko niepotrzebny chaos i niezrozumienie.

Zróbmy czerwony kwadrat na środku ekranu a w nim napis Witam.
W tym celu skracamy nasz kod do:

  • visible – proporcja która definiuje to czy dany komponent jest widoczny
  • width / height – szerokość / wysokość komponentu
  • title – tytuł

Teraz dodajmy prostokąt, jak nazywa się prostokąt po angielsku? – rectangle, nazwy komponentów zawsze piszemy z dużej litery, a zmiennych z małej.

Więc zróbmy prostokąt

Dobra, właściwości width i height chyba nie muszę ponownie tłumaczyć. color, definiuje kolor, można go zapisać na wiele sposobów, czytaj więcej.

Pojawiła się nowa zmienna – anchors.centerIn, zmienna ta definiuje to, że obiekt ma być w środku jakiegoś innego obiektu, parent to id obiektu na którego środku ma się znajdować nasz prostokąt, parent oznacza obiekt nadrzędny, ten który w hierarchii jest wyżej, warto zapamiętać. Równie dobrze w tym miejscu można wpisać jakieś id, każdy komponent może przyjmować wartość id, zaprezentuje to w kolejnym przykładzie niżej.

No okej, mamy okno, mamy jakiś brzydki, czerwony prostokąt, czas na tekst, jak to zrobić?
Analogicznie, do komponentu Rectangle należy „podczepić” komponent Text, robimy to w taki sam sposób jak Rectangle do ApplicationWindow’a, wypadałoby go wycentrować, użyj do tego anchors.centerIn, tekst ustalamy zmienna text, przykład text: Witam
To twoje zadanie domowe 🙂 Możesz też poeksperymentować i zamiast tekstu dać Button, w tym celu zajrzyj do dokumentacji Qt Quick.

Maciej Rosiak

Mam 17 lat, od paru lat interesuje się programowaniem i informatyką, zaczynałem od Unity w którym tworzyłem gry przez 2 lata, teraz pisze aplikacje desktopowe / mobilne w C++ i Qt.

Zobacz wszystkie posty tego autora →

Komentarze