Weryfikatory, zasoby graficzne

Podobne dokumenty
Zasoby, pliki graficzne

Schemat konstrukcja pliku Makefile

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

Qt sygnały i designer

Praca z aplikacją designer

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

Czujniki PSD i dalmierze triangulacyjne

Czujniki PSD i dalmierze triangulacyjne

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

Dalmierze optyczne. Bogdan Kreczmer.

Wprowadzenie do szablonów klas

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

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

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

Szablony funkcji i szablony klas

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Wartości domyślne, przeciażenia funkcji

Wartości domyślne, przeciażenia funkcji

Qt - podstawowe cechy

Qt hierarchia elementów graficznych

Powłoki systemu operacyjnego i intepretery

Pola i metody statyczne

Wprowadzenie do szablonów szablony funkcji

Dia rysowanie diagramów

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

Qt - edycja, obsługa zdarzeń, rozmieszczenie kontrolek

Konstruktor kopiujacy

Wprowadzenie do szablonów szablony funkcji

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

Referencje do zmiennych i obiektów

Wprowadzenie do biblioteki klas C++

Qt po polsku. Bogdan Kreczmer.

Wyliczanie wyrażenia obiekty tymczasowe

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

Wykład 8: klasy cz. 4

Style programowania - krótki przeglad

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

Podstawy Programowania 2

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

Podstawy programowania w Qt4

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

Qt - dialogi. Bogdan Kreczmer. ZPCiR ICT PWR pokój 307 budynek C3

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

Delphi podstawy programowania. Środowisko Delphi

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

Lista dwukierunkowa - przykład implementacji destruktorów

Wprowadzenie do UML, przykład użycia kolizja

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1 Atrybuty i metody klasowe

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

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w środowiskach RAD Qt i C++

Programowanie, część III

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Język Java część 2 (przykładowa aplikacja)

Praca w środowisku Visual Studio 2008, Visual C

Przesłanianie nazw, przestrzenie nazw

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

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

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

WOJEWÓDZTWO PODKARPACKIE

Diagramy UML, przykład problemu kolizji

Wykład 4: Klasy i Metody

MentorGraphics ModelSim

Język Java część 2 (przykładowa aplikacja)

Podstawy i języki programowania

Javadoc. Piotr Dąbrowiecki Sławomir Pawlewicz Alan Pilawa Joanna Sobczyk Alina Strachocka

Geneza rejestru systemu Windows

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

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

Szablon klasy std::vector

Instrukcja laboratoryjna cz.3

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Dokumentacja kompilacji źródeł aplikacji 1.0

Programowanie obiektowe

Geneza powstania języka C++

Instalacja programu:

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

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

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura

Dziedziczenie i poliformizm

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

Szablon klasy std::list

Języki programowania imperatywnego

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

Lokalizacja Oprogramowania

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Dokumentacja końcowa projektu z ZPR

PARADYGMATY PROGRAMOWANIA Wykład 4

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Backend Administratora

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

Mirror Tool.

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

Geneza powstania języka C++

Transkrypt:

, zasoby graficzne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2019 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ą., zasoby graficzne

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, zasoby graficzne

1 2, zasoby graficzne

Wprowdzanie napisów i liczb Obiekt klasy QLineEdit daje możliwość wprowdzenia tekstu. Nie ma on dodatkowych metod, które zapewniłyby weryfikację składni wprowadzanego tekstu.

Wprowdzanie liczb W przypadku wprowadzania liczb całkowitych, kontrolę poprawności wprowadzanych znaków może zapewnić obiekt klasy QSpinBox (dla liczb całkowitych) lub QDoubleSpinBox (dla liczb zmiennoprzecinkowych).

Przykład użycia QSpinBox i QDoubleSpinBox Kanwa : : Kanwa ( QWidget wrodzic ) : QWidget ( wrodzic ) {... QFormLayout worganizer = new QFormLayout ( t h i s ) ; QLabel wopis1 = new QLabel ( t r ( Wprowadz duza l i c z b e c a l k o w i t a : ), t h i s ) ; QSpinBox winputwnd1 = new QSpinBox ( t h i s ) ; winputwnd1 >setmaximum ( 100000000); QLabel wopis2 = new QLabel ( t r ( Wprowadz duza l i c z b e z m i e n n o p r z e c i n k o w a : ), t h i s ) ; QDoubleSpinBox winputwnd2 = new QDoubleSpinBox ( t h i s ) ; winputwnd2 >setmaximum ( 100000000); worganizer >s e t L a b e l A l i g n m e n t ( Qt : : A l i g n R i g h t ) ; worganizer >addrow ( wopis1, winputwnd1 ) ; worganizer >addrow ( wopis2, winputwnd2 ) ; s e t L a y o u t ( worganizer ) ; // To nie musi byc, gdyz j e s t juz w konstruktorze a d j u s t S i z e ( ) ;... }, zasoby graficzne

Przykład użycia QLineEdit i QIntValidator Kanwa : : Kanwa ( QWidget wrodzic ) : QWidget ( wrodzic ) {... QLabel wopis1 = new QLabel ( t r ( Wprowadz duza l i c z b e : ), t h i s ) ; QLineEdit winputwnd1 = new QLineEdit ( t h i s ) ; winputwnd1 >s e t V a l i d a t o r ( new Q I n t V a l i d a t o r ( ) ) ;... }, zasoby graficzne

Przykład użycia QLineEdit i QIntValidator Kanwa : : Kanwa ( QWidget wrodzic ) : QWidget ( wrodzic ) {... QLabel wopis1 = new QLabel ( t r ( Wprowadz duza l i c z b e : ), t h i s ) ; QLineEdit winputwnd1 = new QLineEdit ( t h i s ) ; winputwnd1 >s e t V a l i d a t o r ( new Q D o u b l e V a l i d a t o r ( ) ) ;... }, zasoby graficzne

Zestawienie weryfikatorów QIntValidator weryfikator dla liczb całkowitych. QDoubleValidator weryfikator dla liczb zmiennoprzecinkowych. QRegExpValidator weryfikator wykorzystujący wyrażenia regularne.

Przykład skojarzenia c l a s s Kanwa : p u b l i c QWidget { Q OBJECT p u b l i c : Kanwa ( QWidget wrodzic = n u l l p t r ) ; } ; Kanwa : : Kanwa ( QWidget wrodzic ) : QWidget ( wrodzic ) { QLineEdit wedycja = new W i e r s z E d y c j i ( t h i s ) ; wedycja >s e t V a l i d a t o r ( new Q I n t V a l i d a t o r ( t h i s ) ) ; }, zasoby graficzne

Przykład połączenia c l a s s Kanwa : p u b l i c QWidget { Q OBJECT p u b l i c : Kanwa ( QWidget wrodzic = n u l l p t r ) ; } ; Kanwa : : Kanwa ( QWidget wrodzic ) : QWidget ( wrodzic ) { QLineEdit wedycja = new W i e r s z E d y c j i ( t h i s ) ; wedycja >s e t V a l i d a t o r ( new Q I n t V a l i d a t o r ( t h i s ) ) ; }, zasoby graficzne

Opis zasobów 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 graficzne

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, zasoby graficzne

Wiele sekcji 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, zasoby graficzne

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, zasoby graficzne

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., zasoby graficzne

Przebieg przetwarzania zasobów, zasoby graficzne

Kompresja zasobów 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, zasoby graficzne

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, zasoby graficzne

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( )., zasoby graficzne

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 ) ;..., zasoby graficzne

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()., zasoby graficzne

Koniec prezentacji Dziękuję za uwagę, zasoby graficzne