Zasoby, pliki graficzne

Podobne dokumenty
Weryfikatory, zasoby graficzne

Schemat konstrukcja pliku Makefile

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Praca z aplikacją designer

Czujniki PSD i dalmierze triangulacyjne

Qt sygnały i designer

Czujniki PSD i dalmierze triangulacyjne

Dalmierze optyczne. Bogdan Kreczmer.

Wprowadzenie do szablonów klas

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

GStreamer. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Szablony funkcji i szablony klas

Wartości domyślne, przeciażenia funkcji

Wartości domyślne, przeciażenia funkcji

Pola i metody statyczne

Powłoki systemu operacyjnego i intepretery

Dia rysowanie diagramów

Wprowadzenie do szablonów szablony funkcji

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Style programowania - krótki przeglad

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do biblioteki klas C++

Referencje do zmiennych i obiektów

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Operacje wejścia/wyjścia (odsłona druga) - pliki

Qt - podstawowe cechy

Wyliczanie wyrażenia obiekty tymczasowe

Qt po polsku. Bogdan Kreczmer.

Qt hierarchia elementów graficznych

Konstruktor kopiujacy

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wykład 8: klasy cz. 4

Przesłanianie nazw, przestrzenie nazw

Wprowadzenie do UML, przykład użycia kolizja

Lista dwukierunkowa - przykład implementacji destruktorów

Podstawy Programowania 2

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Aplikacja po polsku. Bogdan Kreczmer. ZPCiR ICT PWr pokój 307 budynek C3.

Szablon klasy std::vector

Podstawy programowania w Qt4

Delphi podstawy programowania. Środowisko Delphi

Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C

Tytuły Wykonawcze. Opis systemu tworzenia dokumentacji TW-1

Operacje wejścia/wyjścia odsłona pierwsza

nie trzeba pobierać wszystkich plików z serwera na stację roboczą. Teraz można pobierać tylko te

Mirror Tool.

Diagramy UML, przykład problemu kolizji

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Windows

Geneza rejestru systemu Windows

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Instalacja programu:

Dokumentacja kompilacji źródeł aplikacji 1.0

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

Java jako język programowania

Praca w środowisku Visual Studio 2008, Visual C

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Zaawansowane programowanie w języku C++ Klasy w C++

Geneza powstania języka C++

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Organizacja kursu, paradygmaty, ogólnie o C i C++

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla System Mac OS

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Dokumentacja końcowa projektu z ZPR

kk-cms System Zarządzania Treścią - prezentacja intensys - agencja interaktywna tel

MentorGraphics ModelSim

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Szablon klasy std::list

PROE wykład 1. dr inż. Jacek Naruniec

Instalacja SAS 9.4 Foundation i SAS Enterprise Guide

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Geneza powstania języka C++

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program

SPIS TREŚCI: KARTY GRAFICZNE... 15

WOJEWÓDZTWO PODKARPACKIE

Acronis Universal Restore

DOS COMMAND.COM. Rys. 2. Główne moduły programowe systemu operacyjnego DOS. Interpreter poleceń. Rys. 3. Warstwowa struktura systemu DOS

Dodawanie wzorca graficznego do programów linii InsERT GT

Dziedziczenie i poliformizm

PROE wykład 1. dr inż. Jacek Naruniec

Problemy techniczne. Jak udostępnić dane na potrzeby wykonania usługi serwisowej lub wdrożeniowej? Zabezpieczanie plików hasłem

Instrukcja laboratoryjna cz.3

Wstęp do programowania

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows

Instrukcja uŝytkownika

ELEKTRONICZNA KSIĄŻKA ZDARZEŃ

Archiwum DG 2016 PL-SOFT

Historia modeli programowania

Wykład 4: Klasy i Metody

Programowanie aspektowe na przykładzie AspectJ JUG Poznań, Jacek Pospychała

Windows Serwer 2008 R2. Moduł 8. Mechanizmy kopii zapasowych

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Wysyłka wniosko w ZUS - EKS. Instrukcja użytkownika aplikacji Wysyłka wniosków ZUS EKS

Transkrypt:

Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową.

Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer: http://latex-beamer.sourceforge.net

1 Zasoby

Opis zasobów Zasoby Zasoby skojarzone z daną aplikacją muszą znajdować się w pliku z rozszerzeniem *.qrc. Zawiera on opis w formacie XML dostępnych zasobów. Podawana ścieżka dostępu do pliku w opisie zasobów jest ścieżką względem kartoteki, w której znajduje się plik *.qrc. <!DOCTYPE RCC><RCC v e r s i o n= 1. 0 > <q r e s o u r c e> < f i l e>img/ l e d / l e d b l u e. png</ f i l e> < f i l e>img/ l e d / l e d g r e e n. png</ f i l e> < f i l e>img/ l e d / l e d l i g h t G r a y. png</ f i l e> < f i l e>img/ l e d / l e d r e d. png</ f i l e> < f i l e>img/ l e d / l e d y e l l o w. png</ f i l e> </ q r e s o u r c e> </RCC>

Zasoby Zasoby mogą być skompilowane do binarnej formy i dostępne bezpośrednio w kodzie. Mogą również zostać w formie binarnej i zarejestrowane później przez system zarządzający zasobami. Dostęp do zasobów Ścieżka względna :/img/led/led green.png URL qrc:///img/led/led green.png Możliwe jest tworzenie skróconych odwołań poprzez aliasy < f i l e a l i a s= LED g r e e n. png >img/ l e d / l e d g r e e n. png</ f i l e> Dostęp do zasobów Ścieżka względna :/LED-green.png URL qrc:///led-green.png

Wiele sekcji Zasoby W danym pliku może być kilka sekcji opisujących zasoby. Można dodać prefiksy, które rozróżnią poszczególne sekcje. <!DOCTYPE RCC> <RCC v e r s i o n= 1. 0 > <q r e s o u r c e p r e f i x= LED > < f i l e a l i a s= g r e e n. png >img/ l e d g r e e n. png</ f i l e> </ q r e s o u r c e> <q r e s o u r c e p r e f i x= i c o n s > < f i l e>img/ f i l e. png</ f i l e> </ q r e s o u r c e> </RCC> Dostęp do zasobów :/LED/img/led green.png qrc:///led/img/led green.png :/LED/green.png :/icons/img/file.png

Zróżnicowanie ze względu na lokalizację Tworzenie różnych sekcji może być wykorzystane do umieszczania zasobów, które będą zróżnicowane ze względu na używany język i lokalizację. <q r e s o u r c e> < f i l e>f l a g a. png</ f i l e> </ q r e s o u r c e> <q r e s o u r c e l a n g= en > < f i l e a l i a s= f l a g a. png >img/ f l a g e n. png</ f i l e> </ q r e s o u r c e> Dostęp do zasobów :/flaga.png qrc:///flaga.png

Wkompilowywanie zasobów Wszystkie wykorzystywane zasoby możemy umieścić w kodzie aplikacji. Dzięki temu nie będzie ona wymagała dodatkowej informacji o lokalizacji zasobów. Aby to było możliwe, w projekcie aplikacji (plik *.pro) musi się pojawić odpowiedni wpis. Wpis w pliku *.pro RESOURCES = application.qrc Dodatkowy wpis powoduje utworzenie odpowiednich reguł w pliku Makefile (w dostarczanych przykładach jest to plik Makefile.app), które wymuszają uruchomienie programu rcc. Narzędzie to tworzy moduł qrc NazwaProgramu.cpp, w którym umieszczane są odpowiednie mapy bitowe w formacie XPM.

Przebieg przetwarzania zasobów

Kompresja zasobów Zasoby Program rcc domyślnie kompresuje zasoby. Można jednak ją wyłączyć wykorzystując parametr -no-compress. To może być użyteczne, gdy dołączamy zasoby, które już są skompresowane, np. pliki *.png Wywołanie program rcc rcc -no-compress zasoby.qrc Można też kontrolować poziom kompresji wykorzystując parametry -compress i -threshold Wywołanie program rcc rcc -compress 2 -threshold 3 zasoby.qrc

Parametry wywołania programu rcc Jeżeli korzystamy z programu qmake do zbudowania wszystkich reguł (jest to najwygodniejsze), to parametry wywołania programu rcc można zadawać poprzez zmiennę QMAKE RESOURCE FLAGS. Wywołanie program rcc QMAKE RESOURCE FLAGS += -compress 2 -threshold 3 Inne zmienn programu qmake dla ustawień rcc RCC DIR kartoteka, w której znajdą się produkty kompilacji programu rcc. RESOURCES zbiór plików.qrc

Odwołanie się do zasobów Z zasobów graficznych można skorzystać w obiektach takich klas jak QIcon, QImage, QPixmap. Przykład użycia QLabel Etykieta; Etykieta.setPixmap(QPixmap(":/flaga.png")); W pamięci komputera zasoby są przechowywane w strukturze drzewiastej. Struktura ta jest budowana automatycznie w momencie startu aplikacji. Do lokalizacji zasobu w tej strukturze wykorzystywane są obiekty QFile. Można też wykorzystać obiekt QDir. Inicjalizując go ścieżką ":/" można przeglądać i nawigować po całej strukturze drzewiastej zasobów. System zasobów wspiera również mechanizm zbioru automatycznie przeszukiwanych ścieżek. Odpowiednie ścieżki można dodawać wykorzystując metodę QDir::addSearchPath( ).

Użycie zasobów wewnątrz biblioteki Gdy zasoby są wykorzystywane w module bibliotecznym konieczne jest ich zainicjalizowanie. Należy to zrobić przed ich pierwszym użyciem. K l a s a W B i b l i o t e c e : : K l a s a W B i b l i o t e c e ( ) : KlasaBazowa ( ) { Q INIT RESOURCE ( z a s o b y ) ; // z a soby. q r c } Q F i l e P l i k ( : / f l a g a. dat ) ;...

Użycie zasobów biblioteki w programie głównym Gdy zasoby biblioteki są wykorzystywane w programie głównym, to należy je tam zainicjalizować. i n t main ( i n t argc, char a r g v [ ] ) { Q A p p l i c a t i o n app ( argc, a r g v ) ; Q INIT RESOURCE ( g r a p h l i b ) ; } Q F i l e f i l e ( : / f l a g a. png ) ;... r e t u r n app. e x e c ( ) ; Ten typ inicjalizacji może być również wykonany w przypadku bibliotek dynamicznie ładowanych (plugin ów). Gdy są one zwalniane, zasoby należy jawnie usunąć wywołując polecenie Q CLEANUP RESOURCE().

Koniec prezentacji Dziękuję za uwagę