Multiplatformní GUI toolkity



Podobné dokumenty
Embedded vývoj v Clutteru a Mx

Vývoj multiplatformní aplikace v Qt

Multiplatformní GUI knihovna

25. listopadu 2014, Brno Připravil: David Procházka. Qt a QML. Programovací jazyk C++

Úvod 13 O čem je tato kniha? Pro koho je tato kniha? Jak studovat tuto knihu? Poděkování 16 Zpětná vazba od čtenářů Zdrojové kódy ke knize Errata 17

Emulátor psaní SMS na mobilním telefonu. (projekt do předmětu ITU)

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Programování pro X Window System

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Jazyk C# (seminář 9)

Základní informace. Operační systém (OS)

Free & Open Source software. Liberix. prezentací. Open Source. software. Free Software. projektů pro studenty. Rekapitulace. Liberix o.p.s.

Knihovna QT4 a moºnosti jejího vyuºití

Grafická uživatelská rozhraní

Matematika v programovacích

Projekt Datové schránky

Uživatelská rozhraní 10. cvičení. Martin Němec A

GRAFICKÁ PROSTŘEDÍ GNU/LINUXU

POROVNÁNÍ IMPLEMENTACE GUI V RŮZNÝCH KNIHOVNÁCH V OS LINUX

KNIHOVNA QT4, PROSTŘEDÍ QTCREATOR A MOŽNOSTI JEJICH VYUŽITÍ

Mac OS X z pohledu uživatele Linuxu. Klokan Petr Přidal klokan@seznam.cz

Tabulka základních vlastností nástroje C++Builder dle edice

Mac OS X z pohledu uživatele Linuxu. Klokan Petr Přidal klokan@seznam.cz

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

faktura, LaTeX, open source, freeware, Python, multiplatformní program

úvod Historie operačních systémů

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

Tvorba moderních multiplatformních rozhraní v jazyce Python

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Linux na mobilních telefonech

Vývoj aplikací v Qt pro mobilní zařízení

Software Operaèní systém autorské dílo licenci multilicenci Aplikaèní software Komerèní programy upgrade OEM software Demoverze a zku ební verze

Software Operaèní systém autorské dílo licenci multilicenci Aplikaèní software Komerèní programy upgrade OEM software Demoverze a zku ební verze

Software Operaèní systém autorské dílo licenci multilicenci Aplikaèní software Komerèní programy upgrade OEM software Demoverze a zku ební verze

Qt na mobilních zařízeních

Telekomunikační koncová zařízení

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Svět svobodného softwaru

Vývoj Internetových Aplikací

SOFTWARE. Programové vybavení počítače

Vývoj software pro Linuxové distribuce. Installfest Praha,

Pokročilé programování v jazyce C pro chemiky (C3220) Knihovna Qt část 2

Zobrazte si svazy a uspořádané množiny! Jan Outrata

modrana: flexibilní navigační systém Martin Kolman

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 12.2.

C2184 Úvod do programování v Pythonu podzim Mgr. Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita.

Software Základní pojmy a rozdělení. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1123_Software Základní pojmy a rozdělení_pwp

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

Gammu a Wammu. Michal Čihař <michal@cihar.com>

Alternativní operační systémy. Martin Drlík, Daniel Krotil OSY2A, ITV

Aplikace s grafickým uživatelským rozhraním

Nové jazykové brány do Caché. Daniel Kutáč

Úvod do programovacího jazyka Python

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13

Úvod do programovacího jazyka Python

Profil firmy. PSE. Intelligent Net Working. ANF DATA spol. s r.o. Siemens IT Solutions and Services PSE

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Skriptovací jazyky. Obsah

Uživatelská rozhraní cvičení

VY_32_INOVACE_INF.19. Inkscape, GIMP, Blender

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY

D2 - GUI design. Radek Mečiar

Linux pro uživatele. Arcibiskupské gymnázium v Praze 2

Úvod do operačního systému Linux Mgr. Josef Horálek

Programovací jazyky Přehled a vývoj

IUJCE 07/08 Přednáška č. 1

OPEN SOURCE MICHAL ČERNÝ DIGITÁLNÍ KOMPETENCE 2016

Vzdálený přístup k počítačům

Svobodný software a zrakově postižení uživatelé

IT ESS II. 1. Operating Systém Fundamentals

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

09. Operační systémy PC 1. DOS. Nejdůležitější zástupci DOSu:

Projekt. Jan Outrata. listopad Jan Outrata (KI UP) Projekt - analýza a návrh listopad / 13

Mozilla pro vývojáře. David Majda LinuxExpo 2005, Praha

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Základní principy Open Source

1. Programování proti rozhraní

MOST MEZI GLUT A KNIHOVNOU PRO TVORBU

1.2 Operační systémy, aplikace

Software je ve světě IT vše, co není Hardware. Do softwaru patří aplikace, program, proces, algoritmus, ale i data (text, obrázky), operační systém

Liberix o.p.s. Free & Open Source software. Jazyky C, C++ Autotools. Jazyky Perl, Python, Ruby. Knihovny pro tvorbu oken.

Minimální požadavky na systém Linux a Windows na jednom disku Zrušení instalace Mandriva Linuxu... 23

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Počítačová síť Katedry informatiky UP v Olomouci

C2184 Úvod do programování v Pythonu podzim Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita. Úvod.

Studentská tvůrčí a odborná činnost STOČ Petr Čápek

05. Operační systémy PC 1. DOS. Nejdůležitější zástupci DOSu:

Využití opensource při stavbě infrastrukturního cloudu Martin Kopta

Identifikátor materiálu: ICT-1-17

Univerzita Karlova v Praze Matematicko-fyzikální fakulta. Katedra aplikované matematiky

Domino 10 nové komponenty a související témata (node.js, ES )

MULTIPLATFORMNÍ PŘEHRÁVAČ ZVUKOVÝCH SIGNÁLŮ

OPERAČNÍ SYSTÉM ZLÍNSKÝ KRAJ. Obchodní akademie, Vyšší odborná škola a Jazyková škola s právem státní jazykové zkoušky Uherské Hradiště

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Transkript:

Multiplatformní GUI toolkity GTK+ a Qt Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI

GUI toolkit (widget toolkit) (1) = programová knihovna (nebo kolekce knihoven) implementující prvky GUI = widgety (tlačítka, seznamy, menu, posuvník, bary, dialog, okno atd.) a umožňující tvorbu GUI (grafického uživatelského rozhraní) aplikace vlastní jednotný nebo nativní (pro platformu/systém) vzhled widgetů, možnost stylování nízkoúrovňové (Xt a Xlib v X Windows System na unixových systémech, Windows API, Quartz a Carbon v Apple Mac OS) a vysokoúrovňové (MFC, WTL, WPF a Windows Forms v MS Windows, Cocoa v Apple Mac OS X, Motif/Lesstif, Xaw a XForms na unixových systémech) multiplatformní = pro více platforem (MS Windows, GNU/Linux, Apple Mac OS X, mobilní) nebo platformově nezávislé (Java) aplikace může být také (většinou) událostmi řízené programování (event-driven programming) toolkit v hlavní smyčce zachytává události (uživatelské od myši nebo klávesnice, od časovače, systému, aplikace samotné atd.) a umožňuje implementaci vlastních obsluh (even handler, callback function), objektově orientované programování (objekty = widgety aj.) nevyžaduje OO programovací jazyk! Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 1 / 10

GUI toolkit (widget toolkit) (2) language binding = API (aplikační programové rozhraní) toolkitu v jiném prog. jazyce než původní API a toolkit samotný GUI designer/builder = WYSIWYG nástroj pro tvorbu GUI s využitím toolkitu, hierarchicky skládáním prvků, z uloženého XML pak generuje kód nebo GUI vytvoří za běhu aplikace nekomerční (GNU (L)GPL, MIT, open source) i komerční licence např. GTK+ (C), Qt (C++), wxwidgets (C++), FLTK (C++), CEGUI (C++), Swing/JFC (Java), SWT (Java), JavaFX (Java), Tcl/Tk (Tcl), XUL (XML) aj. (http://en.wikipedia.org/wiki/list_of_widget_toolkits) Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 2 / 10

GTK+ (GIMP Toolkit), http://www.gtk.org primárně pro X Window System a Wayland na unixových systémech (vč. GNU/Linuxu), portovaný na MS Windows, Apple Mac OS X a mobilní a embedded platformy (Openmoko) v C, language bindings pro C++ (gtkmm), C#/.NET (Gtk#, projekt Mono, jen verze 2), Javu (java-gnome), Python, Ruby, PHP (jen verze 2) a další části GTK+, Pango, ATK, GDK, využívá knihovny Glib a Cairo GUI designery Glade i součást vývojového prostředí (IDE) Anjuta, Stetic pro Gtk#, součást IDE MonoDevelop licence GNU LGPL, free software, součást projektů GNU a GNOME použití v linuxových desktopových prostředích GNOME, Unity, Xfce, LXDE, ROX aj. a mnoha aplikacích (GNOME, GIMP, Evolution, GNU Emacs, Pidgin, Wireshark aj.) Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 3 / 10

GTK+: Glade Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 4 / 10

GTK+: Hello World helloworld.c (1): #i n c l u d e <gtk / gtk. h> #i n c l u d e < g l i b / g i 1 8 n. h> #i n c l u d e < g l i b / g p r i n t f. h> gchar h e l l o s t r ; void window_destroy ( GtkWidget widget, g p o i n t e r data ) gtk_main_quit ( ) ; } void b u t t o n _ c l i c k e d ( GtkWidget widget, g p o i n t e r data ) g _ p r i n t f ( "%s \n", h e l l o s t r ) ; } Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 5 / 10

GTK+: Hello World helloworld.c (2): GtkWidget h e l l o w o r l d _ n e w ( ) GtkWidget window, button ; h e l l o s t r = g _ l o c a l e _ t o _ u t f 8 (_ ( " H e l l o World " ), 1, NULL, NULL, NULL ) ; window = gtk_window_new (GTK_WINDOW_TOPLEVEL) ; g _ s i g n a l _ c o n n e c t (G_OBJECT ( window ), " d e s t r o y ", G_CALLBACK ( window_ destroy ), NULL ) ; button = gtk_button_new_with_label ( h e l l o s t r ) ; g _ s i g n a l _ c o n n e c t (G_OBJECT ( button ), " c l i c k e d ", G_CALLBACK ( b u t t o n _ c l i c k e d ), NULL ) ; g_signal_connect_swapped (G_OBJECT ( button ), " c l i c k e d ", G_CALLBACK ( window_ destroy ), G_OBJECT ( window ) ) ; gtk_container_add (GTK_CONTAINER ( window ), button ) ; gtk_widget_show ( button ) ; r e t u r n window ; } Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 5 / 10

GTK+: Hello World helloworld.c (3): i n t main ( i n t argc, char a r g v [ ] ) GtkWidget h e l l o w o r l d ; g t k _ i n i t (& argc, &a r g v ) ; h e l l o w o r l d = h e l l o w o r l d _ n e w ( ) ; gtk_widget_show ( h e l l o w o r l d ) ; gtk_main ( ) ; } r e t u r n 0 ; Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 5 / 10

GTK+: překlad programu 1 v rámci IDE (Anjuta) 2 ručně překladačem C s pomocí nástrojů pro cesty k hlavičkovým souborům a knihovnám: pkg-config cflags libs gtk+-3.0 Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 6 / 10

Qt, http://www.qt.io pro unixové systémy (X Window System a Wayland, vč. GNU/Linuxu), MS Windows, Apple Mac OS X a mobilní a embedded platformy (Android, ios, Windows Phone, Embedded Linux) v C++ (rozšířeném o komunikaci mezi objekty, pro události a jejich obsluhy, překladač Metaobject compiler, moc, do C++), language bindings pro C#/.NET (QtSharp, Qyoto pro verzi 4), Javu (Qt Jambi, jen verze 4), Python, Ruby, PHP, Common Lisp a další části Essential (Coce, GUI, Widgets, Network, Multimedia, SQL aj.) a add-on (OpenGL, Script, XML aj.) GUI designer Qt Designer i součást vývojového prostředí (IDE) Qt Creator licence GNU LGPL/GPL (edice Community) a Qt Commercial (30 dní vyzkoušení), firemní (Trolltech, Nokia, Digia/Qt Company) a open source (Qt Project) vývoj použití v linuxovém desktopovém prostředí KDE a mnoha aplikacích (KDE, Google Earth, Skype, VirtualBox, VLC, Autodesk, Mathematica aj.) Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 7 / 10

Qt: Qt Designer Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 8 / 10

Qt: Hello World main.c: #i n c l u d e " h e l l o w o r l d. h" #i n c l u d e <q a p p l i c a t i o n. h> 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 ) ; } HelloWorld h e l l o w o r l d ; // app. setmainwidget (& h e l l o w o r l d ) ; h e l l o w o r l d. show ( ) ; app. exec ( ) ; r e t u r n 0 ; helloworld.cc Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 9 / 10

#e n d i f // HELLOWORLD_H Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 9 / 10 Qt: Hello World helloworld.h: #i f n d e f HELLOWORLD_H #d e f i n e HELLOWORLD_H #i n c l u d e <qpushbutton. h> #i n c l u d e <qmainwindow. h> c l a s s HelloWorld : p u b l i c QMainWindow Q_OBJECT p u b l i c : HelloWorld ( ) ; v i r t u a l ~ H elloworld ( ) ; p r o t e c t e d : QString h e l l o s t r ; QPushButton button ; p r o t e c t e d s l o t s : v i r t u a l void b u t t o n _ c l i c k e d ( ) ; } ;

Qt: Hello World helloworld.cc (1): #i n c l u d e " h e l l o w o r l d. h" #i n c l u d e <q l a y o u t. h> #i n c l u d e <s t d i o. h> HelloWorld : : HelloWorld ( ) : h e l l o s t r ( t r ( " H e l l o World " ) ), button ( h e l l o s t r, t h i s ) QObject : : c onnect (&button, SIGNAL ( c l i c k e d ( ) ), t h i s, SLOT ( b u t t o n _ c l i c k e d ( ) ) ) ; QObject : : c onnect (& button, SIGNAL ( c l i c k e d ( ) ), t h i s, SLOT ( c l o s e ( ) ) ) ; } button. s e t S i z e P o l i c y ( Q S i z e P o l i c y : : Minimum, Q S i z e P o l i c y : : Minimum ) ; button. setminimumsize ( button. s i z e ( ) ) ; s e t C e n t r a l W i d g e t (& button ) ; a d j u s t S i z e ( ) ; button. show ( ) ; Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 9 / 10

Qt: Hello World helloworld.cc (2): HelloWorld : : ~ HelloWorld ( ) } void HelloWorld : : b u t t o n _ c l i c k e d ( ) p r i n t f ( "%s \n ", h e l l o s t r. t o A s c i i ( ). data ( ) ) ; } Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 9 / 10

Qt: překlad programu 1 v rámci IDE (Qt Creator) 2 ručně překladačem C++ (+ moc) se zadáním cest k hlavičkovým souborům a knihovnám nebo s generováním Makefile ze souboru projektu pomocí qmake: qmake -project -o project.pro qmake project.pro moc -o moc_*.cc *.h -I<qt_include_dir> -L<qt_lib_dir> -lqt Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 10 / 10