1.Instalacja środowiska Qt Creator Qt Creator jest wygodnym środowiskiem programistycznym przeznaczonym do tworzenia projektów, czyli aplikacji zarówno konsolowych, jak i okienkowych z wykorzystaniem biblioteki Qt. Przedmiotem zajęć (semestr 1) są wyłącznie aplikacje konsolowe, na zajęciach I (semestr 2) tworzone będą również aplikacje okienkowe. 1. Instalacja środowiska Qt Creator 1.1. Pliki instalacyjne Na zajęciach (zarówno, jak i I) używana będzie wersja Qt 5.0.2 for Windows 32-bit (MinGW 4.7) wykorzystująca kompilator MinGW 4.7. Plik instalacyjny zajmuje 650MB i jest do pobrania z http://download.qt-project.org/archive/qt/5.0/5.0.2/qt-windows-opensource-5.0.2-mingw47_32-x86offline.exe Plik instalacyjny zawiera skompilowaną bibliotekę Qt 5.0.2, środowisko programistyczne Qt Creator (wersja 2.7.0) oraz odpowiednią wersję MinGW. Możliwe jest również zainstalowanie wersji wykorzystującej kompilator Microsoft Visual Studio 2010 oraz wersje na Mac i Linux. Pliki instalacyjne środowiska Qt dla odpowiedniego systemu i kompilatora można znaleźć pod adresem http://qt-project.org/downloads 1.2. Instalacja Instalacja wymaga ok 5GB wolnego miejsca na dysku (ok 4GB po zainstalowaniu i ok 1GB na plik instalacyjny). Ściągnięty plik qt-windows-opensource-5.0.2-mingw47_32-x86-offline.exe należy uruchomić w trybie administratora (kliknąć prawym przyciskiem na ikonie pliku i wybrać z menu podręcznego Uruchom jako administrator). Instalacja odbywa się za pomocą prostego kreatora (wystarczą ustawienia domyślne). Czas trwania instalacji to kilka minut. 1
2.Interfejs 2. Interfejs 2.1. Pierwsze uruchomienie Wraz ze środowiskiem Qt Creator zintegrowany jest rozbudowany system pomocy z przykładami i samouczkami (po angielsku). Zapoznanie się ze środowiskiem najlepiej zacząć od kroków widocznych na ekranie powitalnym. Ekran taki pojawi się przy pierwszym uruchomieniu i zawsze wtedy, gdy wybrana będzie sekcja Zaczynamy nad górną poziomą kreską. 2
2.1.Pierwsze uruchomienie 2.1.1. Sekcje ekranu powitalnego W widoku ekranu powitalnego dostępne są sekcje: Zaczynamy - wprowadzenie dla początkujących Sesje i projekty - widok ostatnio otwartych sesji i projektów oraz opcje utworzenia sesji lub projektu Przykłady - gotowe projekty z opisem (po angielsku) Samouczki - instrukcje krok po kroku (po angielsku) 2.2. Pasek trybu pracy Oprócz typowego menu górnego dostępny jest boczny pasek wyboru trybu pracy, z którego poziomu można wybrać widok: Powitanie Edycja - podstawowy tryb do tworzenia kodu źródłowego programu Design - tryb tworzenia interfejsu graficznego (nieużywany na ) Debug - tryb debugowania programu Projekty ustawienia parametrów budowania i uruchamiania otwartych projektów Analiza - tryb analizy uruchomionego programu (analiza użycia procesora i pamięci) Pomoc 3
2.3.Pasek uruchomienia projektu 2.3. Pasek uruchomienia projektu Poniżej paska wyboru trybu znajduje się pasek uruchomienia i budowania projektu, w którym zaczynając od góry dostępne są opcje: wybór aktywnego projektu budowanie i uruchomienie aplikacji budowanie i uruchomienie aplikacji w trybie debugowania budowanie aplikacji bez uruchamiania 3. Prosta aplikacja konsolowa 3.1. Stworzenie projektu W trybie widoku powitalnego należy wybrać sekcję Sesje i projekty, a następnie wybrać Utwórz projekt. 4
3.1.Stworzenie projektu W oknie tworzenia projektu wybieramy Projekt nieużywający Qt (oznacza to nieużywanie biblioteki Qt, a tylko samego środowiska Qt Creator) i dalej Zwykły projekt C++. Następnie należy nadać projektowi nazwę (bez spacji i polskich znaków) i wybrać katalog projektów (Utwórz w:), w którym utworzony zostanie katalog dla naszego projektu. Proponujemy, aby był to katalog C:\Users\Student\Documents\ZAP\grupa<numer>_imie_nazwisko\ Uwaga: Nie tylko nazwa projektu, ale i cała ścieżka dostępu do katalogu z projektem, nie mogą zawierać polskich znaków. W przeciwnym wypadku debugger dostarczony z MinGW może nie działać poprawnie. Jeżeli chcemy, aby katalog ten był domyślny również dla innych projektów, to zaznaczamy opcję Ustaw jako domyślne położenie projektów. 5
3.1.Stworzenie projektu W następnym kroku utworzone zostaną dwa katalogi, osobno dla wersji release i debug. Wersja release jest to końcowa wersja programu skompilowana z optymalizacją rozmiaru pliku wyjściowego i prędkości działania, którą dostarczamy użytkownikowi programu. Natomiast program skompilowany w wersji debug zawiera dodatkowe informacje umożliwiające programiście śledzenie działania programu w celu usunięcia błędów (tzw. debugowanie). Pozostawiamy tutaj ustawienia domyślne. Dalej jest już ostatni krok tworzenia projektu: jako podsumowanie na ekranie pojawi się ścieżka do utworzonego katalogu zawierającego pliki projektu oraz nazwy domyślnie utworzonych plików: pliku main.cpp z kodem źródłowym oraz pliku z rozszerzeniem.pro zawierającego podstawowe informacje o projekcie (lista plików źródłowych oraz używanych bibliotek). Utworzony katalog będzie zawierał też plik z rozszerzeniem.user zawierający ustawienia projektu specyficzne dla konkretnego komputera (m.in. ścieżki do katalogów). Nas interesować będzie wyłącznie plik main.cpp. 6
3.2.Edycja projektu 3.2. Edycja projektu Po utworzeniu projektu interfejs zostanie automatycznie przełączony w tryb edycji. W trybie tym dostępne są dwa najważniejsze okna: Projekty zawierające listę otwartych projektów okno edycji kodu źródłowego. Dodatkowo mogą pojawić się okna: Otwarte dokumenty z listą otwartych plików, okno komunikatów środowiska. W oknie edycji kodu źródłowego ukazuje się standardowa zawartość pliku main.cpp z prostym programem wypisującym na konsoli napis Hello World!. Kod ten zastępujemy naszym własnym programem, wykorzystując gotowy szkielet. Przykładowo załóżmy, że chcemy napisać program, który poprosi użytkownika o wprowadzenie liczby całkowitej, a następnie wyświetli ją na konsoli. Zmodyfikowany kod będzie miał postać: 7
3.2.Edycja projektu #include <iostream> using namespace std; int main() { int a; cout << "Podaj liczbe: " << endl; cin >> a; cout << "Podana liczba to: " << a << endl; return 0; } 3.3. Uruchomienie projektu (aplikacji) Uruchomienie aktywnego projektu odbywa się za pomocą przycisku z zieloną strzałką Oznacza to, że projekt budowany jest w wersji debug (co oznacza, że może być potem uruchomiony w trybie debug), ale uruchamiany jest w zwykłym trybie release. 3.4. Komunikaty kompilatora Pisząc kod łatwo popełnić błąd składniowy lub literówkę, która uniemożliwi poprawną kompilację programu. W poniższym przykładzie zabrakło średnika na końcu wiersza numer 10, dlatego pojawił się komunikat expected ';' before 'return'. W języku C++ średnik musi pojawić się po każdej instrukcji, ale niekoniecznie w tym samym wierszu, dlatego błąd wystąpił dopiero w wierszu 12. 8
3.4.Komunikaty kompilatora Oprócz błędów, które przerywają kompilację, mogą pojawić się również ostrzeżenia. Dobrze napisany program powinien kompilować się bez ostrzeżeń. Poniżej pokazane zostało ostrzeżenie o dzieleniu przez zero w linii numer 10. 3.5. Błędy wykonania programu W przypadku wystąpienia krytycznego błędu w trakcie działania programu zostaniemy o tym poinformowani odpowiednim komunikatem. Jeżeli uruchomiliśmy program w zwykłym trybie (nie debug) to pozostaje nam zamknięcie programu i okna konsoli. 9
3.6.Edycja i uruchamianie kilku projektów naraz 3.6. Edycja i uruchamianie kilku projektów naraz Qt Creator pozwala na pracę z wieloma projektami jednocześnie. W pasku uruchomienia projektu możemy wybrać aktywny projekt oraz wersję budowania (przycisk z komputerem). Domyślne projekt budowany jest w wersji debug. Nazwa aktywnego projektu wyświetlana jest w oknie Projekty pogrubioną czcionką. W przypadku pracy z wieloma projektami, przycisk uruchomienia projektu (zielona strzałka) uruchomi projekt aktywny w danej chwili. 4. Debugowanie 4.1. Uruchomienie w trybie debug Nawet jeżeli kod źródłowy kompiluje się poprawnie i uruchamia bez błędów wykonania, to może zawierać błąd logiczny, który sprawi, że program nie działa tak jak chcemy. Do wyszukiwania błędów tego typu służy narzędzie zwane debuggerem, które umożliwia prześledzenie działania programu linia po linii, lub zatrzymanie w konkretnym miejscu (zaznaczonym jako tzw. breakpoint). 10
4.1.Uruchomienie w trybie debug Punkt zwany breakpoint ustawiamy klikając z lewej strony numeru linii, w której chcemy zatrzymać wykonanie programu. Uruchomienie aplikacji w trybie debug odbywa się za pomocą klawisza F5 lub przycisku Interfejs zostanie automatycznie przełączony w tryb debugowania. Wykonanie programu zostało zatrzymane w linii z breakpointem (żółta strzałka). W oknie po prawej stronie wypisane są zmienne dostępne w danej funkcji oraz ich wartości. 11
4.1.Uruchomienie w trybie debug W trakcie debugowania przydatne są przyciski z panelu, który pojawił się w widoku debugowania poniżej kodu źródłowego. Zaczynając od lewej strony przyciski to: kontynuacja (uruchomienie) debugowania F5 zatrzymanie debugowania przejście do kolejnej linii F10 wejście do wnętrza funkcji F11 wyjście z aktualnej funkcji Shift+F11 Przejście do kolejnej linii odbywa się za pomocą klawisza F10. Spróbujmy przejść do linii 9 wciskając przycisk F10. Po wciśnięciu F10 na linii 9 zawierającej polecenie wczytania danych z konsoli cin» a; żółta strzałka znika, a program oczekuje na wprowadzenie danych przez użytkownika. Po wprowadzeniu liczby jej wartość można zaobserwować w oknie podglądu zmiennych. 12
4.1.Uruchomienie w trybie debug Po dwukrotnym kliknięciu pola Wartość przy zmiennej l możemy zmodyfikować wartość tej zmiennej. Wciśnięcie F5 spowoduje kontynuację wykonania programu aż do napotkania kolejnego breakpointu lub końca programu. Mimo że w konsoli podaliśmy wartość 5 to wypisana zostanie wartość 7 wprowadzona w trakcie debugowania. 4.2. Błędy wykonania w trybie debug Jeżeli program uruchomiliśmy w trybie debug, to komunikat o błędzie jest bardziej szczegółowy, a miejsce, w którym działanie programu zostało przerwane, wskazane jest za pomocą żółtej strzałki. 13
5.Ustawienie katalogu roboczego 5. Ustawienie katalogu roboczego Kiedy zaczniemy pracować z plikami, istotne będzie dla nas ustawienie katalogu roboczego programu. Domyślnie katalogiem roboczym dla uruchomionej aplikacji jest katalog, w którym przechowywane są pliki tworzone w trakcie kompilacji (patrz str.8), czyli w naszym przypadku jest to:...\zap\grupa<numer>_imie_nazwisko\hello_world-build-desktop_qt_5_0_2_mingw_32bit-debug Oznacza to, że jeżeli aplikacja próbuje otworzyć plik bez podania pełnej ścieżki, to plik szukany jest w tym katalogu. Identycznie, jeżeli aplikacja tworzy jakiś plik wyjściowy bez podania pełnej ścieżki, to plik ten zostanie umieszczony w tym katalogu. Z różnych powodów może być dla nas wygodniej uruchomić aplikację w innym katalogu (np. w takim, w którym przechowujemy jakieś dane wejściowe). Ustawienia katalogu roboczego można zmienić w widoku Projekty, sekcji Budowanie i uruchamianie, i dalej Uruchamianie. Warto stworzyć osobny katalog (np. hello_world-run), tak aby pliki wejściowe i wyjściowe nie znajdowały się razem z kodem źródłowym, ani z plikami generowanymi automatycznie przez środowisko QtCreator. 14