Qt hierarchia elementów graficznych

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

Praca z aplikacją designer

Qt sygnały i designer

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

Weryfikatory, zasoby graficzne

Zasoby, pliki graficzne

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

Zaawansowane programowanie w C++

Schemat konstrukcja pliku Makefile

Szablony funkcji i szablony klas

Qt - podstawowe cechy

Programowanie, część III

Wprowadzenie do szablonów klas

Wprowadzenie do szablonów szablony funkcji

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

Wprowadzenie do szablonów szablony funkcji

Pola i metody statyczne

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

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

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

Dodanie nowej formy do projektu polega na:

Wprowadzenie do środowiska Qt Creator

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

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

C++ - [1-3] Debugowanie w Qt Creator

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

Programowanie w środowiskach RAD Qt i C++

Dalmierze optyczne. Bogdan Kreczmer.

Czujniki PSD i dalmierze triangulacyjne

Wartości domyślne, przeciażenia funkcji

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

Wartości domyślne, przeciażenia funkcji

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

Konstruktor kopiujacy

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

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

Podstawy programowania w Qt4

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

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

Czujniki PSD i dalmierze triangulacyjne

Wyliczanie wyrażenia obiekty tymczasowe

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

Programowanie obiektowe

Architektura interfejsu użytkownika

Laboratorium z Grafiki InŜynierskiej CAD. Rozpoczęcie pracy z AutoCAD-em. Uruchomienie programu

Wykład :37 PP2_W9

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Tworzenie prezentacji w MS PowerPoint

Qt po polsku. Bogdan Kreczmer.

Visual Studio instalacja

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

I - Microsoft Visual Studio C++

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

Komputery I (2) Panel sterowania:

Podręcznik użytkownika programu. Ceremonia 3.1

Programowanie aplikacji na urządzenia mobilne

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Dokumentacja WebMaster ver 1.0

DARMOWA PRZEGLĄDARKA MODELI IFC

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

POMOC / INSTRUKCJA OBSŁUGI

Podstawy języka skryptowego Lua

2017 Electronics For Imaging, Inc. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym

Podstawy technologii cyfrowej i komputerów

Programowanie Obiektowe GUI

1. Opis okna podstawowego programu TPrezenter.

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

I Tworzenie prezentacji za pomocą szablonu w programie Power-Point. 1. Wybieramy z górnego menu polecenie Nowy a następnie Utwórz z szablonu

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Dziedziczenie i poliformizm

Programowanie komputerowe. Zajęcia 1

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM

Programowanie C++ Wykład 1 - Aplikacje konsowlowe w środowisku QT. dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

Wykład VII PASCAL - grafika;

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Kolory elementów. Kolory elementów

Przesłanianie nazw, przestrzenie nazw

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Programowanie w językach

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Delphi podstawy programowania. Środowisko Delphi

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

Część 4 życie programu

Klasa, metody, rozwijanie w linii

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Dia rysowanie diagramów

Wirtualizacja panelu HMI w systemie LOGO!

Programowanie w środowiskach RAD QtCreator, Qt i C++

Programowanie w języku C++

Klasa, metody, rozwijanie w linii

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Platformy Programowania

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie w środowisku graficznym GUI

Janusz Ganczarski. OpenGL Pierwszy program

Transkrypt:

Qt hierarchia elementów graficznych Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2015 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ą. Qt hierarchia elementów graficznych

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

1 Ogólny schemat struktury aplikacji wykorzystującej Qt 2 Tworzenie hierarchii widget ów Główne okno aplikacji Qt hierarchia elementów graficznych

Ogólna struktura funkcji main Przykład prezentowany w pliku hamlet.cpp nie pokazuje typowej konstrukcji aplikacji pisanej z wykorzystaniem biblioteki Qt. Zwykle w funkcja main każdej z aplikacji tworzonej na bazie Qt możemy wyróżnić kilka kluczowych operacji: 1 Utworzenie obiektu klasy QApplication i wstępne przetworzenie argumentów z linii wywołania 2 Utworzenie okna aplikacji 3 Wymuszenie ukazania się okna 4 Uruchomienie obsługi pętli zdarzeń dla całej aplikacji. Nie jest to najogólniejszy schemat (o ile taki w ogóle istnieje) funkcji main. Niemniej zawiera najważniejsze elementy jej konstrukcji.

Ogólna struktura funkcji main Przykład prezentowany w pliku hamlet.cpp nie pokazuje typowej konstrukcji aplikacji pisanej z wykorzystaniem biblioteki Qt. Zwykle w funkcja main każdej z aplikacji tworzonej na bazie Qt możemy wyróżnić kilka kluczowych operacji: 1 Utworzenie obiektu klasy QApplication i wstępne przetworzenie argumentów z linii wywołania 2 Utworzenie okna aplikacji 3 Wymuszenie ukazania się okna 4 Uruchomienie obsługi pętli zdarzeń dla całej aplikacji. Nie jest to najogólniejszy schemat (o ile taki w ogóle istnieje) funkcji main. Niemniej zawiera najważniejsze elementy jej konstrukcji.

Ogólna struktura funkcji main Przykład prezentowany w pliku hamlet.cpp nie pokazuje typowej konstrukcji aplikacji pisanej z wykorzystaniem biblioteki Qt. Zwykle w funkcja main każdej z aplikacji tworzonej na bazie Qt możemy wyróżnić kilka kluczowych operacji: 1 Utworzenie obiektu klasy QApplication i wstępne przetworzenie argumentów z linii wywołania 2 Utworzenie okna aplikacji 3 Wymuszenie ukazania się okna 4 Uruchomienie obsługi pętli zdarzeń dla całej aplikacji. Nie jest to najogólniejszy schemat (o ile taki w ogóle istnieje) funkcji main. Niemniej zawiera najważniejsze elementy jej konstrukcji.

Ogólna struktura funkcji main Przykład prezentowany w pliku hamlet.cpp nie pokazuje typowej konstrukcji aplikacji pisanej z wykorzystaniem biblioteki Qt. Zwykle w funkcja main każdej z aplikacji tworzonej na bazie Qt możemy wyróżnić kilka kluczowych operacji: 1 Utworzenie obiektu klasy QApplication i wstępne przetworzenie argumentów z linii wywołania 2 Utworzenie okna aplikacji 3 Wymuszenie ukazania się okna 4 Uruchomienie obsługi pętli zdarzeń dla całej aplikacji. Nie jest to najogólniejszy schemat (o ile taki w ogóle istnieje) funkcji main. Niemniej zawiera najważniejsze elementy jej konstrukcji.

Ogólna struktura funkcji main Przykład prezentowany w pliku hamlet.cpp nie pokazuje typowej konstrukcji aplikacji pisanej z wykorzystaniem biblioteki Qt. Zwykle w funkcja main każdej z aplikacji tworzonej na bazie Qt możemy wyróżnić kilka kluczowych operacji: 1 Utworzenie obiektu klasy QApplication i wstępne przetworzenie argumentów z linii wywołania 2 Utworzenie okna aplikacji 3 Wymuszenie ukazania się okna 4 Uruchomienie obsługi pętli zdarzeń dla całej aplikacji. Nie jest to najogólniejszy schemat (o ile taki w ogóle istnieje) funkcji main. Niemniej zawiera najważniejsze elementy jej konstrukcji.

Ogólna struktura funkcji main Przykład prezentowany w pliku hamlet.cpp nie pokazuje typowej konstrukcji aplikacji pisanej z wykorzystaniem biblioteki Qt. Zwykle w funkcja main każdej z aplikacji tworzonej na bazie Qt możemy wyróżnić kilka kluczowych operacji: 1 Utworzenie obiektu klasy QApplication i wstępne przetworzenie argumentów z linii wywołania 2 Utworzenie okna aplikacji 3 Wymuszenie ukazania się okna 4 Uruchomienie obsługi pętli zdarzeń dla całej aplikacji. Nie jest to najogólniejszy schemat (o ile taki w ogóle istnieje) funkcji main. Niemniej zawiera najważniejsze elementy jej konstrukcji.

Ogólna struktura funkcji main Przykład prezentowany w pliku hamlet.cpp nie pokazuje typowej konstrukcji aplikacji pisanej z wykorzystaniem biblioteki Qt. Zwykle w funkcja main każdej z aplikacji tworzonej na bazie Qt możemy wyróżnić kilka kluczowych operacji: 1 Utworzenie obiektu klasy QApplication i wstępne przetworzenie argumentów z linii wywołania 2 Utworzenie okna aplikacji 3 Wymuszenie ukazania się okna 4 Uruchomienie obsługi pętli zdarzeń dla całej aplikacji. Nie jest to najogólniejszy schemat (o ile taki w ogóle istnieje) funkcji main. Niemniej zawiera najważniejsze elementy jej konstrukcji.

Przykład nieprzyzwoicie prostej aplikacji

Przykład nieprzyzwoicie prostej aplikacji Nazwa pojawiająca się w nagłówku okienka jest w tym przypadku nazwą pliku wykonywalnego.

Nieprzyzwoicie prosta aplikacja w szczegółach #include <QApplication> #include <QWidget> int main( int argc, char argv[ ] ) { QApplication App( argc, argv ); QWidget Okno; Okno.show(); } return App.exec();

Nieprzyzwoicie prosta aplikacja w szczegółach #include <QApplication> #include <QWidget> int main( int argc, char argv[ ] ) { QApplication App( argc, argv ); QWidget Okno; Okno.show(); } return App.exec(); 1. Utworzenie obiektu klasy QApplication i wstępne przetworzenie argumentów wywołania

Nieprzyzwoicie prosta aplikacja w szczegółach #include <QApplication> #include <QWidget> int main( int argc, char argv[ ] ) { QApplication App( argc, argv ); QWidget Okno; Okno.show(); } return App.exec(); 2. Utworzenie okna aplikacji

Nieprzyzwoicie prosta aplikacja w szczegółach #include <QApplication> #include <QWidget> int main( int argc, char argv[ ] ) { QApplication App( argc, argv ); QWidget Okno; Okno.show(); } return App.exec(); 3. Wymuszenie ukazania się okna

Nieprzyzwoicie prosta aplikacja w szczegółach #include <QApplication> #include <QWidget> int main( int argc, char argv[ ] ) { QApplication App( argc, argv ); QWidget Okno; Okno.show(); } return App.exec(); 4. Uruchomienie obsługi pętli zdarzeń dla całej aplikacji

Nieprzyzwoicie prosta aplikacja w szczegółach #include <QApplication> #include <QWidget> int main( int argc, char argv[ ] ) { QApplication App( argc, argv ); QWidget Okno; Okno.show(); } return App.exec(); Na czym polega przetwarzanie argumentów wywołania aplikacji?

Przetwarzanie argumentów wywołania Biblioteka umożliwia rozpoznanie i odpowiednie przetworzenie Qt opcji z linii wywołania, które są standardowe dla danej platformy. W systemie X Window należą do nich m.in.: -geometry, -fg, -bg, -display, -title, -fn. Przetworzenie argumentów tych opcji powoduje nadanie domyślnych wartości zasobom graficznym, którymi dysponuje aplikacja. Programista może zawsze jawnie wymusić wybór przez siebie zadanych wartości.

Przetwarzanie argumentów wywołania Biblioteka umożliwia rozpoznanie i odpowiednie przetworzenie Qt opcji z linii wywołania, które są standardowe dla danej platformy. W systemie X Window należą do nich m.in.: -geometry, -fg, -bg, -display, -title, -fn. Przetworzenie argumentów tych opcji powoduje nadanie domyślnych wartości zasobom graficznym, którymi dysponuje aplikacja. Programista może zawsze jawnie wymusić wybór przez siebie zadanych wartości.

Przetwarzanie argumentów wywołania Biblioteka umożliwia rozpoznanie i odpowiednie przetworzenie Qt opcji z linii wywołania, które są standardowe dla danej platformy. W systemie X Window należą do nich m.in.: -geometry, -fg, -bg, -display, -title, -fn. Przetworzenie argumentów tych opcji powoduje nadanie domyślnych wartości zasobom graficznym, którymi dysponuje aplikacja. Programista może zawsze jawnie wymusić wybór przez siebie zadanych wartości.

Przetwarzanie argumentów wywołania Biblioteka umożliwia rozpoznanie i odpowiednie przetworzenie Qt opcji z linii wywołania, które są standardowe dla danej platformy. W systemie X Window należą do nich m.in.: -geometry, -fg, -bg, -display, -title, -fn. Przetworzenie argumentów tych opcji powoduje nadanie domyślnych wartości zasobom graficznym, którymi dysponuje aplikacja. Programista może zawsze jawnie wymusić wybór przez siebie zadanych wartości.

Efekt wywołania aplikacji

Efekt wywołania aplikacji Wywołanie aplikacji:./puste okno -geometry 100x30+10 -title "Wiosenne okno"

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11).

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11).

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Określa monitor do komunikacji użytkownika z serwerem X Window, tzn. ekran, klawiatura, urządzenie wskazujące (np. mysz). Przykład użycia opcji: xterm -display sequoia.ict.pwr.wroc.pl:0.0

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Definiuje geometrię okienka, tzn. szerokość, wysokość, przesunięcie x i y względem górnego rogu ekranu. Przykład użycia opcji: xterm -geometry 200x80+10-2

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Definiuje domyślny kolor tekstu poprzez nazwę (zbiór nazw kolorów patrz: /usr/x11r6/lib/x11/rgb.txt) lub wartości RGB. Przykład użycia opcji: xterm -fg DarkSlateGray

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Definiuje domyślny kolor tła poprzez nazwę (zbiór nazw kolorów patrz: /usr/x11r6/lib/x11/rgb.txt) lub wartości RGB. Przykład użycia opcji: xterm -bg "light gray"

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Definiuje domyślny czcionkę. Lista nazw czcionek (i innych o nich informacji) dostępny jest poprzez polecenie xlsfonts. Przykład użycia opcji: xterm -fn "lucidasans-bold-10"

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Definiuje domyślny kolor przycisków. Przykład użycia opcji:./hamlet -btn red

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Przyporządkowuje aplikacji nazwę. Pozwala to zdefiniować dla niej zasoby w ~/.Xresorces. Przykład użycia opcji:./hamlet -name "XHamlet"

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Zmienia tytuł nagłówka okienka. Przykład użycia opcji: xterm -title "Moj XTerm"

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Dotyczą wyświetlaczy 8-bitowych.

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11).

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse. Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko dla X11), -sync (tylko dla X11). Ustala styl aplikacji (postać klawiszy, ikon, suwaków itd.). Dopuszczalne style to: motif, windows, platinum. Przykład użycia opcji:./hamlet -style motif

Style GUI domyślny motif windows platinum

Style GUI domyślny motif windows platinum Sposób wywołania aplikacji:./hamlet

Style GUI domyślny motif windows platinum Sposób wywołania aplikacji:./hamlet -style motif

Style GUI domyślny motif windows platinum Sposób wywołania aplikacji:./hamlet -style windows

Style GUI domyślny motif windows platinum Sposób wywołania aplikacji:./hamlet -style platinum

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko X11), -sync (tylko X11). Przywraca wygląd aplikacji z podanej sesji.

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko X11), -sync (tylko X11). Po zamknięciu aplikacji wyświetla liczbę nie zniszczonych widget ów i maksymalną ich liczbę w trakcie pracy. Przykład użycia opcji:./hamlet -widgetcount

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko X11), -sync (tylko X11). Po zamknięciu aplikacji wyświetla liczbę nie zniszczonych widget ów i maksymalną ich liczbę w trakcie pracy. Przykład użycia opcji:./hamlet -widgetcount Widgets left: 0 Max widgets: 7

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko X11), -sync (tylko X11). Powoduje ustawienie stylu rozkładu tekstu i elementów aplikacji z prawa na lewo (patrz Qt::RightToLeft).

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko X11), -sync (tylko X11).

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko X11), -sync (tylko X11). Zabrania aplikacji zawłaszczenia klawiatury i myszki. Operacja zawłaszczenia powoduje, że wszystkie zdarzenia generowane w systemie okienkowym przechwytywane są przez aplikację, która dokonuje zawłaszczenia. Operacja ta może uniemożliwiać debugowanie aplikacji.

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko X11), -sync (tylko X11). Aplikacje pracujące pod debugerem mogą być niejawnie ustawiane w trybie nograb. Opcja -dograb powoduje unieważnienie tego trybu i jawne zezwolenie dla aplikacji na dokonywanie zawłaszczenia klawiatury i myszki.

Ważniejsze rozpoznawane opcje wywołania Opcje X11 tradycyjne opcje systemu X Window: -display, -geometry, -fg, -bg, -fn, -btn, -name, -title, -visual, -ncols, -cmap. Opcje Qt są one rozpoznawane przez każdy program pisany z wykorzystaniem biblioteki Qt: -style, -session, -widgetcount, -reverse Opcje debugowania dostępne jeśli Qt zostało skompilowane ze zdefiniowanym symbolem QT DEBUG: -nograb, -dograb (tylko X11), -sync (tylko X11). Przełącza aplikację w tryb pracy synchronicznej na potrzeby debugowania.

Ustawianie wartości parametrów Wartości parametrów poszczególnych opcji wywołania aplikacji można zignorować zadając własne wartości. Operację tę zawsze należy wykonać po przetworzeniu argumentów wywołania przez obiekt klasy QApplication. Zazwyczaj jest również konieczne, aby wykonać tę operację po wywołaniu metody show.

Ustawianie wartości parametrów Wartości parametrów poszczególnych opcji wywołania aplikacji można zignorować zadając własne wartości. Operację tę zawsze należy wykonać po przetworzeniu argumentów wywołania przez obiekt klasy QApplication. Zazwyczaj jest również konieczne, aby wykonać tę operację po wywołaniu metody show.

Ustawianie wartości parametrów Wartości parametrów poszczególnych opcji wywołania aplikacji można zignorować zadając własne wartości. Operację tę zawsze należy wykonać po przetworzeniu argumentów wywołania przez obiekt klasy QApplication. Zazwyczaj jest również konieczne, aby wykonać tę operację po wywołaniu metody show.

Ustawianie wartości parametrów #include <QApplication> #include <QWidget> int main( int argc, char argv[ ] ) { QApplication App(argc,argv); QWidget Okno; } Okno.show(); Okno.setWindowTitle( Bardzo proste okno ); Okno.setGeometry(0, 100, 300, 150); return App.exec();

Ustawianie wartości parametrów #include <QApplication> #include <QWidget> int main( int argc, char argv[ ] ) { QApplication App(argc,argv); QWidget Okno; } Okno.show(); Okno.setWindowTitle( Bardzo proste okno ); Okno.setGeometry(0, 100, 300, 150); return App.exec(); Jawnie zadany zostaje tytuł okienka oraz jego geometria, tzn. położenie względem lewego górnego rogu ekranu oraz rozmiar.

Efekt wywołania aplikacji

Efekt wywołania aplikacji Wywołanie aplikacji:./puste okno -geometry 300x5 -title "Wiosenne okno" Mimo zadania parametrów, tytuł i geometria okienka nie uległy zmianie.

Efekt wywołania aplikacji Wywołanie aplikacji:./puste okno -geometry 300x5 -title "Wiosenne okno" Mimo zadania parametrów, tytuł i geometria okienka nie uległy zmianie.

Ustawianie własnych parametrów zalecenie Z punktu widzenia programisty łatwiej jest zignorować ustawienia użytkownika i nadać aplikacji stałe cechy. Jednak z punktu widzenia użytkownika znacznie zmniejsza to jej funkcjonalność (wystarczy sobie wyobrazić co byłoby gdyby xterm pracował tylko z jedną paletą barw i jednym rozmiarem czcionki). Z tego powodu, o ile jest to tylko możliwe, należy zachować funkcjonalności związanę ze zmianą parametrów GUI przez użytkownika, tak aby mógł on dostosować wygląd interfejsu do swoich potrzeb.

Ustawianie własnych parametrów zalecenie Z punktu widzenia programisty łatwiej jest zignorować ustawienia użytkownika i nadać aplikacji stałe cechy. Jednak z punktu widzenia użytkownika znacznie zmniejsza to jej funkcjonalność (wystarczy sobie wyobrazić co byłoby gdyby xterm pracował tylko z jedną paletą barw i jednym rozmiarem czcionki). Z tego powodu, o ile jest to tylko możliwe, należy zachować funkcjonalności związanę ze zmianą parametrów GUI przez użytkownika, tak aby mógł on dostosować wygląd interfejsu do swoich potrzeb.

Ustawianie własnych parametrów zalecenie Z punktu widzenia programisty łatwiej jest zignorować ustawienia użytkownika i nadać aplikacji stałe cechy. Jednak z punktu widzenia użytkownika znacznie zmniejsza to jej funkcjonalność (wystarczy sobie wyobrazić co byłoby gdyby xterm pracował tylko z jedną paletą barw i jednym rozmiarem czcionki). Z tego powodu, o ile jest to tylko możliwe, należy zachować funkcjonalności związanę ze zmianą parametrów GUI przez użytkownika, tak aby mógł on dostosować wygląd interfejsu do swoich potrzeb.

Przetwarzania argumentów wywołania kilka pytań Co się dzieje z przetwarzanymi argumentami z linii wywołania (o ile w ogóle coś się z nimi dzieje)? Jeżeli będziemy chcieli użyć również własnych argumentów wywołania, to jak je odróżnić od tych, które są właściwe dla danej platformy? Czy można w jakiś sposób odróżnić te argumenty, które zostały przetworzone od tych, które nie zostały przetworzone?

Przetwarzania argumentów wywołania kilka pytań Co się dzieje z przetwarzanymi argumentami z linii wywołania (o ile w ogóle coś się z nimi dzieje)? Jeżeli będziemy chcieli użyć również własnych argumentów wywołania, to jak je odróżnić od tych, które są właściwe dla danej platformy? Czy można w jakiś sposób odróżnić te argumenty, które zostały przetworzone od tych, które nie zostały przetworzone?

Przetwarzania argumentów wywołania kilka pytań Co się dzieje z przetwarzanymi argumentami z linii wywołania (o ile w ogóle coś się z nimi dzieje)? Jeżeli będziemy chcieli użyć również własnych argumentów wywołania, to jak je odróżnić od tych, które są właściwe dla danej platformy? Czy można w jakiś sposób odróżnić te argumenty, które zostały przetworzone od tych, które nie zostały przetworzone?

Przetwarzania argumentów wywołania kilka pytań Co się dzieje z przetwarzanymi argumentami z linii wywołania (o ile w ogóle coś się z nimi dzieje)? Jeżeli będziemy chcieli użyć również własnych argumentów wywołania, to jak je odróżnić od tych, które są właściwe dla danej platformy? Czy można w jakiś sposób odróżnić te argumenty, które zostały przetworzone od tych, które nie zostały przetworzone?

testargs.cpp przetwarzania argumentów wywołania void WyswietlArgumenty( int argc, char argv[ ] ) { cout << ====================== << endl; } for (int i=0; i < argc; ++i) cout << argv[ << i << ] = << argv[ i ] << endl; int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv);

testargs.cpp przetwarzania argumentów wywołania void WyswietlArgumenty( int argc, char argv[ ] ) { cout << ====================== << endl; } for (int i=0; i < argc; ++i) cout << argv[ << i << ] = << argv[ i ] << endl; int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania void WyswietlArgumenty( int argc, char argv[ ] ) { cout << ====================== << endl; } for (int i=0; i < argc; ++i) cout << argv[ << i << ] = << argv[ i ] << endl; int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania void WyswietlArgumenty( int argc, char argv[ ] ) { cout << ====================== << endl; } for (int i=0; i < argc; ++i) cout << argv[ << i << ] = << argv[ i ] << endl; int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania void WyswietlArgumenty( int argc, char argv[ ] ) { cout << ====================== << endl; Wynik działania programu: } for (int i=0; i < argc; ++i) cout << argv[ << i << ] = << argv[ i ] << endl; int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja ====================== Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja ======================???? Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja ====================== argv[0] =./testargs argv[1] = -x argv[2] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja ====================== argv[0] =./testargs argv[1] = -x argv[2] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja ====================== argv[0] =./testargs argv[1] = -x argv[2] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja ====================== argv[0] =./testargs argv[1] = -x argv[2] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

testargs.cpp przetwarzania argumentów wywołania Wynik działania programu: ====================== void WyswietlArgumenty( int argc, char argv[ ] ) argv[0] =./testargs { cout << ====================== << endl; argv[1] = -display for (int i=0; i < argc; ++i) argv[2] = rab:0 cout << argv[ << i << ] = << argv[ i ] << endl; argv[3] = -title } int main( int argc, char argv[ ] ) { WyswietlArgumenty(argc, argv); } QApplication App(argc, argv); WyswietlArgumenty(argc, argv); argv[4] = Idzie wiosna argv[5] = -x argv[6] = moja opcja ====================== argv[0] =./testargs argv[1] = -x argv[2] = moja opcja Rozważmy następujące wywołanie programu:./testargs -display rab:0 -title "Idzie wiosna" -x moja opcja

QApplication najważniejsze cechy W aplikacji może być tylko jeden obiekt tej klasy. Jest on odpowiedzialny za zainicjowanie zasobów domyślnych dla całej aplikacji, na podstawie aktualnych ustawień desktopu. Przetwarza argumenty z linii wywołania. Realizuje obsługę zdarzeń dla całej aplikacji rozsyłając informacje o zdarzeniach do odpowiednich okienek. Dostarcza informacji o lokalizacji napisów, które są wyświetlane poprzez funkcję translate(). Udostępnia specjalne obiekty poprzez metody desktop() i cliboard().

QApplication najważniejsze cechy W aplikacji może być tylko jeden obiekt tej klasy. Jest on odpowiedzialny za zainicjowanie zasobów domyślnych dla całej aplikacji, na podstawie aktualnych ustawień desktopu. Przetwarza argumenty z linii wywołania. Realizuje obsługę zdarzeń dla całej aplikacji rozsyłając informacje o zdarzeniach do odpowiednich okienek. Dostarcza informacji o lokalizacji napisów, które są wyświetlane poprzez funkcję translate(). Udostępnia specjalne obiekty poprzez metody desktop() i cliboard().

QApplication najważniejsze cechy W aplikacji może być tylko jeden obiekt tej klasy. Jest on odpowiedzialny za zainicjowanie zasobów domyślnych dla całej aplikacji, na podstawie aktualnych ustawień desktopu. Przetwarza argumenty z linii wywołania. Realizuje obsługę zdarzeń dla całej aplikacji rozsyłając informacje o zdarzeniach do odpowiednich okienek. Dostarcza informacji o lokalizacji napisów, które są wyświetlane poprzez funkcję translate(). Udostępnia specjalne obiekty poprzez metody desktop() i cliboard().

QApplication najważniejsze cechy W aplikacji może być tylko jeden obiekt tej klasy. Jest on odpowiedzialny za zainicjowanie zasobów domyślnych dla całej aplikacji, na podstawie aktualnych ustawień desktopu. Przetwarza argumenty z linii wywołania. Realizuje obsługę zdarzeń dla całej aplikacji rozsyłając informacje o zdarzeniach do odpowiednich okienek. Dostarcza informacji o lokalizacji napisów, które są wyświetlane poprzez funkcję translate(). Udostępnia specjalne obiekty poprzez metody desktop() i cliboard().

QApplication najważniejsze cechy W aplikacji może być tylko jeden obiekt tej klasy. Jest on odpowiedzialny za zainicjowanie zasobów domyślnych dla całej aplikacji, na podstawie aktualnych ustawień desktopu. Przetwarza argumenty z linii wywołania. Realizuje obsługę zdarzeń dla całej aplikacji rozsyłając informacje o zdarzeniach do odpowiednich okienek. Dostarcza informacji o lokalizacji napisów, które są wyświetlane poprzez funkcję translate(). Udostępnia specjalne obiekty poprzez metody desktop() i cliboard().

QApplication najważniejsze cechy W aplikacji może być tylko jeden obiekt tej klasy. Jest on odpowiedzialny za zainicjowanie zasobów domyślnych dla całej aplikacji, na podstawie aktualnych ustawień desktopu. Przetwarza argumenty z linii wywołania. Realizuje obsługę zdarzeń dla całej aplikacji rozsyłając informacje o zdarzeniach do odpowiednich okienek. Dostarcza informacji o lokalizacji napisów, które są wyświetlane poprzez funkcję translate(). Udostępnia specjalne obiekty poprzez metody desktop() i cliboard().

QApplication najważniejsze cechy W aplikacji może być tylko jeden obiekt tej klasy. Jest on odpowiedzialny za zainicjowanie zasobów domyślnych dla całej aplikacji, na podstawie aktualnych ustawień desktopu. Przetwarza argumenty z linii wywołania. Realizuje obsługę zdarzeń dla całej aplikacji rozsyłając informacje o zdarzeniach do odpowiednich okienek. Dostarcza informacji o lokalizacji napisów, które są wyświetlane poprzez funkcję translate(). Udostępnia specjalne obiekty poprzez metody desktop() i cliboard().

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji Aplikacja zawiera dwa komponenty, które są położone na bazowym obiekcie klasy QWidget. Są nimi: obiekt klasy QLabel zawierający napis oraz obiekt klasy QPushButton tworzący przycisk.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji Aplikacja zawiera dwa komponenty, które są położone na bazowym obiekcie klasy QWidget. Są nimi: obiekt klasy QLabel zawierający napis oraz obiekt klasy QPushButton tworzący przycisk.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji Aplikacja zawiera dwa komponenty, które są położone na bazowym obiekcie klasy QWidget. Są nimi: obiekt klasy QLabel zawierający napis oraz obiekt klasy QPushButton tworzący przycisk.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( );

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Utworzenie obiektu klasy QApplication i przetworzenie argumentów wywołania aplikacji.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Utworzenie widget u, który będzie kanwą dla następnych elementów.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Utworzenie widget u, który będzie kanwą dla następnych elementów.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Utworzenie etykiety z napisem (etykieta może być również skojarzona z obrazkiem lub animacją, patrz metoda setpicture). Etykieta zostaje położona na widget cie Okno (staje się jego potomkiem).

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Utworzenie etykiety z napisem (etykieta może być również skojarzona z obrazkiem lub animacją, patrz metoda setpicture). Etykieta zostaje położona na widget cie Okno (staje się jego potomkiem).

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Utworzenie etykiety z napisem (etykieta może być również skojarzona z obrazkiem lub animacją, patrz metoda setpicture). Etykieta zostaje położona na widget cie Okno (staje się jego potomkiem).

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Ulokowanie etykiety w pożądanym miejscu.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Utworzenie przycisku z napisem (przycisk może być również skojarzona z ikoną poprzez wywołanie odpowiedniego konstruktora). Przycisk zostaje położona na widget cie Okno (staje się jego potomkiem).

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Utworzenie przycisku z napisem (przycisk może być również skojarzona z ikoną poprzez wywołanie odpowiedniego konstruktora). Przycisk zostaje położona na widget cie Okno (staje się jego potomkiem).

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Utworzenie przycisku z napisem (przycisk może być również skojarzona z ikoną poprzez wywołanie odpowiedniego konstruktora). Przycisk zostaje położona na widget cie Okno (staje się jego potomkiem).

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Przesunięcie przycisku do pożądanego miejsca.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Ustalenie nowego rozmiaru okienka.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Wymuszenie ukazania się okienka.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Wymuszenie ukazania się okienka.

Tworzenie hierarchii widget ów Główne okno aplikacji Przykład nieco bardziej złożonej aplikacji nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel(QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(QObject::tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Uruchomienie pętli obsługi zdarzeń.

Tworzenie hierarchii widget ów Główne okno aplikacji Diagram obiektów graficznych Pojawiające się okienko jest komponentem co najmniej dwu składników.

Tworzenie hierarchii widget ów Główne okno aplikacji Diagram obiektów graficznych Są nimi: okienko samej aplikacji i obramowanie dostarczane przez Window Manager.

Tworzenie hierarchii widget ów Główne okno aplikacji Diagram obiektów graficznych Samo okienko aplikacji jest także komponentem wielu elementów graficznych. Ich sposób organizacji ma strukturę drzewiastą, przy czym elementy potomne leżą w obrębie swojego przodka.

Tworzenie hierarchii widget ów Główne okno aplikacji Diagram obiektów graficznych W ten sposób logiczna reprezentacja układu komponentów pozwala utworzyć reprezentację graficzną finalnego okienka.

Tworzenie hierarchii widget ów Główne okno aplikacji Diagram obiektów graficznych Należy jednak pamiętać, że obramowanie okienka nie jest częścią tej reprezentacji.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel( QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( );

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel( QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Nie jest dobrym rozwiązaniem tworzenie wszystkich elementów niezależnie. W takim przypadku gubią się związki logiczne między poszczególnymi komponentami.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel( QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); Zdecydowanie lepszym rozwiązaniem jest uwypuklenie wspomnianych związków logicznych w postaci osobnej klasy, która będzie modelowała dany obiekt graficzny.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych nt main( int argc, char argv[ ] ) QApplication App( argc, argv ); QWidget Okno; QLabel wetyk = new QLabel( QObject::tr( Nikt nie wmowi nam, ze biale to biale... ), &Okno); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton(tr( Opierajacy sie naciskom ), &Okno); wprzycisk->move(30,50); Okno.resize( 230, 90 ); Okno.show( ); return App.exec( ); W takim przypadku kod odpowiedzialny za utworzenie okna powinien znaleźć się w konstruktorze danej klasy.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90);

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Klasa ProsteOkno definiujemy jako specjalizację klasy QWidget.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Definiując konstruktor nie powinno się wykluczać możliwości położenia danego elementu graficznego na innym elemencie.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90);

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Konstruktor elementu graficznego należy jawnie wywołać w liście inicjalizacyjnej, aby móc mu przekazać odpowiedni parametr (w tym przypadku wskaźnik na rodzica).

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Uruchomienie konstruktora tworzy właściwy obiekt graficzny, który będzie rodzicem dla wszystkich innych elementów graficznych utworzonych w ciele konstruktora.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Tworzenie etykiety i odpowiednie jej ulokowanie.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Tym razem rodzicem jest tworzony obiekt, gdyż zawiera on (dzięki dziedziczeniu) podobiekt klasy QWidget.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Tworzenie przycisku i odpowiednie jego ulokowanie.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Ponownie rodzicem jest tworzony obiekt.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Ustalenie rozmiaru.

Tworzenie hierarchii widget ów Główne okno aplikacji Modelowanie obiektów graficznych lass ProsteOkno: public QWidget { public : ProsteOkno( QWidget wrodzic = nullptr ); }; rosteokno::prosteokno(qwidget wrodzic): QWidget(wRodzic) { QLabel wetyk = new QLabel (tr( Nikt nie wmowi nam, ze biale to biale... ), this); wetyk->move(10,10); QPushButton wprzycisk = new QPushButton (tr( Opierajacy sie naciskom ), this); wprzycisk->move(30,50); resize(230,90); Jeśli utworzony element graficzny nie będzie miał rodzica, to stanie się osobnym okienkiem.

Tworzenie hierarchii widget ów Główne okno aplikacji Funkcja main po zdefiniowaniu klasy ProsteOkno int main( int argc, char argv[ ] ) { QApplication App( argc, argv ); ProsteOkno Okno; } Okno.show( ); return App.exec( );

Tworzenie hierarchii widget ów Główne okno aplikacji Funkcja main po zdefiniowaniu klasy ProsteOkno int main( int argc, char argv[ ] ) { QApplication App( argc, argv ); ProsteOkno Okno; } Okno.show( ); return App.exec( ); Kod funkcji main znacząco się upraszcza. W ten sposób wracamy do standardowego prostego schematu konstrukcji tej funkcji. Wystarczy teraz utworzyć obiekt graficzny i wymusić jego ukazanie się.

Tworzenie hierarchii widget ów Główne okno aplikacji Funkcja main po zdefiniowaniu klasy ProsteOkno int main( int argc, char argv[ ] ) { QApplication App( argc, argv ); ProsteOkno Okno; } Okno.show( ); return App.exec( ); Kod funkcji main znacząco się upraszcza. W ten sposób wracamy do standardowego prostego schematu konstrukcji tej funkcji. Wystarczy teraz utworzyć obiekt graficzny i wymusić jego ukazanie się.

Tworzenie hierarchii widget ów Główne okno aplikacji Widget w okienku głównym