Maciej Rosiak – Nastoletni Programiści Thu, 15 Nov 2018 14:35:06 +0000 pl-PL hourly 1 https://wordpress.org/?v=4.9.8 115968029 Qt – Deployment aplikacji na Windowsa [dynamicznie] /qt-deployment-aplikacji-na-windowsa-dynamicznie/ /qt-deployment-aplikacji-na-windowsa-dynamicznie/#respond Wed, 22 Nov 2017 09:00:26 +0000 /?p=788 Czego unikać?

Bardzo popularnym, często powielanym błędem podczas deploymentu na Windowsa jest czekanie na błędy i wrzucanie bibliotek „na pałę” do folderu z binarką aplikacji, jest to pracochłonne, i działa tylko w niektórych przypadkach:

  • Aplikacja konsolowa Qt
  • Prosta aplikacja Qt Widgets (nie mylić z Qt Quick)

Trochę lepszym sposobem jest używanie dependency walker który, skanuje plik exe w poszukiwaniu zależności, i wyświetla brakujące biblioteki.

Prawidłowy i szybki deployment

Zacznę od aplikacji nieużywających komponentów Qt Quick , do tego celu użyjemy narzędzia windeployqt , znajduje się ono w katalogu Qt, podkatalogu wersji, podkatalogu mingw , i wreszcie w folderze bin w moim przypadku jest to C:/Qt/5.9/mingw53_32/bin .

Najczęściej popełnianym błędem, który i ja popełniłem jest użycie złej wersji narzędzia windeployqt , dlatego wcześniej warto się upewnić jakiej wersji Qt użyliśmy do budowy aplikacji.

Teraz czas uruchomić cmd i wywołać windeployqt wraz z odpowiednimi argumentami, w przypadku prostej aplikacji będzie to

Narzędzie automatycznie wykryje potrzebne biblioteki, znajdzie je i dorzuci do katalogu z naszym plikiem exe.

W przypadku aplikacji Qt Quick, należy dodatkowo załączyć adres projektu, wynika to z tego, że aplikacja wymaga dynamicznie zaczepionych plików qml od komponentów które zostały użyte, w tym celu używamy windeployqt zgodnie ze składnią:

Tu warto wspomnieć, że częstym błędem jest mylenie folderu projektu, z folderem qml który znajduje się obok folderu bin .

Przykładowe użycie:

Po więcej argumentów w razie potrzeby należy wywołać:

Polecam też zajrzeć na http://doc.qt.io/qt-5/windows-deployment.html .

]]>
/qt-deployment-aplikacji-na-windowsa-dynamicznie/feed/ 0 788
Qt – Pierwszy projekt – Fake blue screen /qt-pierwszy-projekt-fake-blue-screen/ /qt-pierwszy-projekt-fake-blue-screen/#comments Sun, 25 Sep 2016 11:43:04 +0000 /?p=415 Okej, wstęp już za nami, wypadałoby zrobić jakiś mały programik. W tym poradniku pokażę, jak napisać program, który bardzo przypomina blue screena . Zastosowanie? Można wkręcać znajomych/nauczycieli, u mnie w szkole 4/4 informatyków się nabrało, w tym poradniku wykorzystamy część wiedzy z poprzedniego poradnika, wykorzystamy Qt Quick Controls 2, Qt 5.7.

Dobra, jak się za to zabrać? Zróbmy niebieski ekran, w tym celu do ApplicationWindow podpinamy właściwość, jaką jest kolor i ustawiamy na „blue”, teraz trzeba zrobić, aby nasza aplikacja nie wyglądała jak aplikacja, w tym celu dodajemy właściwość flags i wartość Qt.FramelessWindowHint , kod powinien wyglądać tak:

Teraz wypadałoby zmusić aplikację, aby była na pełnym ekranie. Jest parę sposobów, moim zdaniem najprościej będzie zaimportować moduł od okien import QtQuick.Window 2.0 , następnie ustalić width okna na Screen.width i analogicznie height .

Teraz potrzebny nam jakiś tekst, w tym celu do ApplicationWindow „podłączamy” komponent Text, ustalamy kolor, wielkość, font i inne ficzery.

Całość powinna wyglądać tak:

Nasz program właściwie jest już gotowy, można jeszcze dostosować font, wielkość itp. Co do tzw. deploymentu , czyli doprowadzania aplikacji do stanu, w którym można ją uruchomić na innym komputerze – opiszę ten proces w kolejnym poradniku, jest to głębszy temat.

]]>
/qt-pierwszy-projekt-fake-blue-screen/feed/ 1 415
Qt – Wprowadzenie /qt-wprowadzenie/ /qt-wprowadzenie/#comments Wed, 31 Aug 2016 15:38:14 +0000 http://beta.nastoletni.pl/?p=51

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.

]]>
/qt-wprowadzenie/feed/ 6 51