Qt Quick – Dwie proste aplikacje
W zeszłym semestrze w ramach ćwiczeń miałem do przygotowania kilka aplikacji. Większość projektów, które obecnie tworze staram się oprzeć o szkielet programistyczny Qt. Tak było i w tym przypadku. Pierwszy program przygotowałem w ramach przedmiotu wizualizacja informacji i jego zadaniem było przedstawienie metody Buziek Chernoffa. Druga aplikacja została oddana na ćwiczenia z systemów wbudowanych. Ćwiczenia te nie oddawały do końca programu wykładów, ponieważ w praktyce większość rówieśników pisała zwyczajne aplikacje w Javie. Ja wybrałem inny, równie przenośny zestaw narzędzi. Udostępniam źródła tych dwóch różnych projektów. Nie należy ich traktować jako coś wzorcowego, ponieważ jak to zwykle bywa z projektami na uczelnie kod był pisany w pośpiechu. Oba programy wykorzystują technologię Qt Quick. Były to moje pierwsze aplikacje powstałe w oparciu o tą technologię. Dzięki nim mogłem się wiele nauczyć.
Qt Quick
Qt Quick jest zbiorem technologi umożliwiającym tworzenie w prosty oraz szybki sposób zaawansowanych, bogatych wizualnie interfejsów oraz aplikacji. Za pomocą danej technologi możliwe jest przygotowanie kompletnej aplikacji, bez znajomości skomplikowanego języka takiego jak C bądź C++. Podczas pracy z Qt Quick operuje się językiem skryptowym QML oraz JavaScript. Zaawansowani użytkownicy mogą łączyć tą technologię z natywnym kodem w sytuacjach, w których bardzo istotna jest duża wydajność.
Jak przebiega wytwarzanie w danym środowisku? Najlepiej zobrazuje to drobny przykład:
import QtQuick 1.0
Rectangle
{
width: 200
height: 200
color: "blue"
onColorChanged: console.log("Zmieniono kolor:", color)
Image
{
source: "obrazek.png"
anchors.centerIn: parent
}
}
W powyższym przykładzie zaimportowano standardową wersję modułu QtQuick 1.0. Wraz z danym posunięciem programista uzyskał dostęp do zawartych tam komponentów, takich jak Rectangle, Image, MouseArea, Text, TextInput, Behavior i wielu, wielu innych. Kolejno może je umieszczać na scenie i manipulować ich właściwościami, metodami, sygnałami oraz slotami. Tam gdzie jest potrzebna bardziej zaawansowana logika, można się posłużyć językiem JavaScript. Tak też się stało w powyższym przykładzie. Na scenie umieszczono niebieski prostokąt oraz w jego wnętrzu wyśrodkowano obrazek.
Kolejno na zdarzenie onColorChanged zareagowano instrukcją JS console.log.
Qt Quick w wersji pierwszej wykorzystuje do rysowania grafiki klasę QPainter. Mimo iż QPainter słabo sobie radzi z obsługą akcelerowanego API, nawet renderowanie w pełni programowe daje zadowalające efekty. Animacje uzyskane w oparciu o tą technologię są płynne i nie możemy im wiele zarzucić.
Przygotowane programy
Chernoff Faces – Poniższa aplikacja umożliwia wczytywanie plików xml, w których zapisano scenę wraz z wizualizacją metodą Buziek Chernoffa.
Windy – Na ten projekt składają się dwa programy. Klient oraz serwer. Serwer odpowiada za zarządzanie windą, natomiast aplikacje klienckie pokazują stan serwera oraz umożliwiają interakcję z nim. Całość opatrzona jest przyjazną grafiką oraz animacją.
Komentarze
Chcę dodać komentarzsuncoder05-09-2011
Ciekawe przykłady technologii QtQuick. Do „Windy” sam przygotowałeś grafikę?
Marcin Baszczewski06-09-2011
Hej. Nie jestem grafikiem to też posłużyłem się obrazkami znalezionymi w sieci.