Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilVlasta Navrátilová
1
13.11.2009 Tvorba uživatelských rozhraní Knihovny pro tvorbu GUI Jozef Mlích – Department of Computer Graphics and Multimedia Faculty of Information Technology, Brno University of Technology Božetěchova 2, 612 66 Brno, Czech Republic imlich@fit.vutbr.cz
2
ITU: Knihovny pro tvorbu GUI | 2 http://www.fit.vutbr.cz/~imlich/ Agenda wxWidgets GTK Qt
3
ITU: Knihovny pro tvorbu GUI | 3 http://www.fit.vutbr.cz/~imlich/ wxWidgets – features Cross-platform ability Open source Documentation and samples Wide range of control and window classes Powerful event system Printing facilities Debugging facilities Compiler support Database functionality Document/view classes Drag and drop Easy UI update Configuration files Multithreading Network programming HTML classes OpenGL integration Diagramming application support OLE automation support Multiple language support A user community
4
ITU: Knihovny pro tvorbu GUI | 4 http://www.fit.vutbr.cz/~imlich/ wxWidgets Julian Smart, University of Edinburgh – 1992 - první uvolněná verze multiplatformní framework pro návrh GUI – Windows, Linux, *NIX, MacOS využívatí nativního vzhledu systému návrh vychází z MFC – vše se chová jako třída různé porty a binding do rozličných jazyků – wxPython, wxPerl, wxX11, wxGTK… vývojové prostředí pod MS Windows – wxDevCpp
5
ITU: Knihovny pro tvorbu GUI | 5 http://www.fit.vutbr.cz/~imlich/ wxWidgets – nasazení Audacity AVG Code::Blocks RapidSVN Jedno z GUI pro VLC BitTorrent Filezilla
6
ITU: Knihovny pro tvorbu GUI | 6 http://www.fit.vutbr.cz/~imlich/ wxWidgets – hierarchie tříd
7
ITU: Knihovny pro tvorbu GUI | 7 http://www.fit.vutbr.cz/~imlich/ wxWidgets třídy na nižší úrovni pro nevizuální objekty – wxHashMap, wxString, wxList, wxPathList a mnohé další podpora RTTI – meta-informace o třídách (wxClassInfo) vnitřní počítání referencí některých objektů podpora unicode (závisí na parametrech při kompilaci samotné knihovny) – makro wxT pro převod znaků do správné vnitřní reprezentace RichText editační prvky, regulární výrazy, apod.
8
ITU: Knihovny pro tvorbu GUI | 8 http://www.fit.vutbr.cz/~imlich/ wxWidgets možnost lokalizace aplikací pomocí makra _T() nebo _() – podpora pro hypertextovou nápovědu –.HLP soubory (wxHelpController) tvorba vícevláknových aplikací – wxThread, wxMutex, wxCriticalSection, wxCondition síťové aplikace – sockety, http/ftp, wxURL zobrazení základního HTML – wxHTML podpora pro připojení k databázi – wxDb, wxODBC...
9
ITU: Knihovny pro tvorbu GUI | 9 http://www.fit.vutbr.cz/~imlich/ wxWidgets – wxString efektivní, optimalizované použití, podpora unicode, velké množství dostupných metod (AfterFirst, BeforeLast, operator<< popř. Printf, Format...) – wxString str1(”test1”); – wxString str2(”test2”); – wxString str3(”234.765”); str1.Upper(); // převod řetězce na velké znaky str1.Cmp(str2); // porovnání dvou řetězců (case sensitive) str1.Freq(”e”); // počet znaků 'e' v řetězci str3.ToDouble(&dbl); // převod řetězce na číslo str.Trim(); odstranění přebytečných bílých znaků wxString::Format(wxT(”%s=%d\n”), str1.c_str(), dbl);
10
ITU: Knihovny pro tvorbu GUI | 10 http://www.fit.vutbr.cz/~imlich/ wxWidgets – pozicování vlastní XML resource soubory (XRC) – značkovací jazyk pro definici uživatelského rozhraní layout systém rozložení prvků – nevyužívá se fixního rozložení, ale tzv. Sizers uživatelské rozhraní mění své rozložení a velikost prvků podle předem specifikovaných podmínek – snadné přizpůsobení nastavení uživatele více typů rozložení, podle použitého typu kontejneru - wxGridSizer, wxBoxSizer a další možnost uložení návrhu GUI do speciálního souboru zdrojů
11
ITU: Knihovny pro tvorbu GUI | 11 http://www.fit.vutbr.cz/~imlich/ wxWidgets – příklad Co vidíme – události – _T() – layouty
12
ITU: Knihovny pro tvorbu GUI | 12 http://www.fit.vutbr.cz/~imlich/ GTK Stability Cross Platform Language Bindings Mobile Accommodating Interfaces – Buttons, menus, combo boxes, layouts, trees, lists Foundations – Main loop, thread support, dynamic loading modules, lists, arrays, lexical scanner, base64
13
ITU: Knihovny pro tvorbu GUI | 13 http://www.fit.vutbr.cz/~imlich/ GTK – nasazení Gnome Inkscape GIMP (The Gimp Toolkit == GTK) Firefox Pidgin
14
ITU: Knihovny pro tvorbu GUI | 14 http://www.fit.vutbr.cz/~imlich/ GTK – struktura GLib - pomocné funkce a datové struktury GDK - wrapper funkcí Xlib, popř. jiného grafického systému GObject - generický typový a objektový systém, signály GTK+ - jádro toolkitu GTK+ a definice widgetů Pango - zobrazování textu ATK - Accessibility Toolkit, zpřístupnění pro postižené
15
ITU: Knihovny pro tvorbu GUI | 15 http://www.fit.vutbr.cz/~imlich/ GTK Aplikace je tvořena stromem instancí objektů a běh je zajištěn doručováním událostí do odpovídajících objektů. aplikace obsahuje: – inicializaci knihovny, – sestavení stromu instancí objektů, – registraci akčních funkcí, – realizace a mapování – nastartování aplikační smyčky inicializace aplikace – gtk_init(argc, argv);
16
ITU: Knihovny pro tvorbu GUI | 16 http://www.fit.vutbr.cz/~imlich/ GTK vytváření objektů – knihovna zavádí pojem grafický objekt (widget) – chování a styl objektu je definováno třídou objektu – kód třídy objektu autonomně zpracovává většinu operací – grafický objekt je identifikován datovým typem GtkWidget – pro každou třídu je definována funkce pro vytvoření instance – základem všech grafických objektů je třída GtkWidgetClass
17
ITU: Knihovny pro tvorbu GUI | 17 http://www.fit.vutbr.cz/~imlich/ GTK kontejnery – instance objektu, do kterého je možné vkládat další objekty a umožňuje např. jejich pozicování – přesná funkce je určena typem kontejneru – gtk_container_add(GTK_CONTAINER(main), button);
18
ITU: Knihovny pro tvorbu GUI | 18 http://www.fit.vutbr.cz/~imlich/ GTK – vlastnosti objektů pomocí funkcí definováných pro každou třídu – gtk_třída_get_xxx(...);, gtk_třída_set_xxx(...); nebo pomocí obecných funkcí – g_object_get(...);,g_object_set(...); každá třída objektů má v manuálu seznam všech vlastností, typů těchto vlastností a funkcí pro zjišťování a nastavování těchto vlastností gtk_widget_set_name(main, "main"); gtk_container_set_border_width(GTK_CONTAINER(main), 10);
19
ITU: Knihovny pro tvorbu GUI | 19 http://www.fit.vutbr.cz/~imlich/ GTK – zpětné volání signály (signal) – zpráva vyslaná instancí GtkObject jako reakce na určitý prvek v prostředí události (event) – nepřetržitý tok zpráv ohledně změn prostředí ve spodní vrstvě zobrazovacího systému
20
ITU: Knihovny pro tvorbu GUI | 20 http://www.fit.vutbr.cz/~imlich/ GTK – zpětné volání registrace je v obou případech stejná – g_signal_connect(G_OBJECT(tlacitko), "clicked", G_CALLBACK(click_action), user_value); – proměnná typu GtkWidget – jméno signálu v řetězcové podobě – adresa funkce odpovídajícího typu – přetypování G_CALLBACK() – uživatelská hodnota přetypovaná na gpointer funkce pro signál – void click_action(GtkWidget *widget, gpointer user_data); funkce pro událost – void delete_action(GtkWidget *widget, GdkEvent *event, gpointer user_data);
21
ITU: Knihovny pro tvorbu GUI | 21 http://www.fit.vutbr.cz/~imlich/ GTK – podmínky pro zobrazení widgetu realizace a mapování – gtk_widget_show(...); – gtk_widget_show_all(...); – gtk_widget_hide(...); správa – po vytvoření jsou objekty vloženy nikam, jsou tedy nespravované, – po vložení do kontejneru se stanou spravovanými – gtk_widget_show(button); – gtk_widget_show(main); nastartování aplikační smyčky – hlavní cyklus je skryt ve funkci – gtk_main();
22
ITU: Knihovny pro tvorbu GUI | 22 http://www.fit.vutbr.cz/~imlich/ GTK – glade podpora tvorby GUI – skeleton vytvářené aplikace, do kterého se pouze doplní akční kód – nebo XML soubor, který obsahuje definici uživatelského rozhraní Nyní je preferována pouze druhá výše zmíněná možnost – GUI se nahraje z XML soubor za běhu aplikace pomocí knihovny libglade
23
ITU: Knihovny pro tvorbu GUI | 23 http://www.fit.vutbr.cz/~imlich/ Qt Intuitive C++ class library Portability across desktop and embedded operating systems Integrated development tools with cross-platform IDE High runtime performance and small footprint on embedded
24
ITU: Knihovny pro tvorbu GUI | 24 http://www.fit.vutbr.cz/~imlich/ Qt – nasazení KDE ( + KOffice) Google Earth VLC VariCAD Skype (linux) Amarok 2
25
ITU: Knihovny pro tvorbu GUI | 25 http://www.fit.vutbr.cz/~imlich/ Qt – nástroje Qt Designer – Vytváření gui Qt Assistant – dokumentace Qt Linguist – Lokalizace qmake – makefile
26
ITU: Knihovny pro tvorbu GUI | 26 http://www.fit.vutbr.cz/~imlich/ Qt – součásti core (included by default)QtCore module gui (included by default)QtGui module networkQtNetwork module openglQtOpenGL module phononPhonon Multimedia Framework sqlQtSql module svgQtSvg module xmlQtXml module webkitWebKit integration qt3supportQt3Support module (.pro “QT += xml”, apod. )
27
ITU: Knihovny pro tvorbu GUI | 27 http://www.fit.vutbr.cz/~imlich/ Qt – MOC Meta Object Compiler rozšíření C++ pro snadnější tvorbu GUI na bázi makro jazyka – Nuný preprocessing – meta object compiler (moc) třída QObject – základní třída všech objektů v Qt makro Q_OBJECT – deklarace v privátní části třídy; umožňuje použití – dynamické vlastnosti objektů – signálů a slotů (viz dále) – doporučeno použití u všech tříd odvozených od Qobject. klíčová slova ve standardním C++ kódu
28
ITU: Knihovny pro tvorbu GUI | 28 http://www.fit.vutbr.cz/~imlich/ Qt – Qobject Organizace objektů do stromu – rodiče objektu lze určit při jeho konstrukci; při destrukci objektu jsou automaticky uvolněny i všichni potomci Podpora pro reflexi – možnost získat meta objekt (QMetaObject) popisující daný QObject => lze zkoumat dědičnost, vlastnosti objektů apod. Přijímání a filtrace událostí – události zaslány vláknu, kde byl objekt vytvořen Základní podpora pro časovače – po spuštění (startTimer(interval)) je periodicky volána metoda timerEvent(QTimerEvent *event) Dynamické vlastnosti Mechanismus signálů a slotů
29
ITU: Knihovny pro tvorbu GUI | 29 http://www.fit.vutbr.cz/~imlich/ Qt – signály a sloty komunikace mezi objekty náhrada callbacků; typově bezpečné ovšem pomalejší Signál je emitován při definované události Slot je metoda volaná jako reakce na zachycený signál propojení:
30
ITU: Knihovny pro tvorbu GUI | 30 http://www.fit.vutbr.cz/~imlich/ Qt – demo Překlad Generování GUI Lokalizace a funkce tr() Signaly a Sloty Layouty
31
ITU: Knihovny pro tvorbu GUI | 31 http://www.fit.vutbr.cz/~imlich/ Poděkování http://www.root.cz/clanky/programovani-x-window-system-gtk- plus/ http://www.wxwidgets.org/ http://www.gtk.org/ http://qt.nokia.com/products Smart J., Hock K., Csomor S.: Cross-Platform GUI Programming with wxWidgets. 2005, ISBN 0131473816, 744 pages.
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.