Multiplatformní GUI knihovna

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

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

Multiplatformní GUI toolkity

Vývoj multiplatformní aplikace v Qt

Qt na mobilních zařízeních

Ú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

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

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

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

Paralelní výpočetní jádro matematického modelu elektrostatického zvlákňování

PROGRAMOVÁNÍ V C++ CVIČENÍ

PREPROCESOR POKRAČOVÁNÍ

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

PB161 Programování v jazyce C++ Přednáška 10

Fakulta stavební. Grafické rozhraní pro GNU Sqltutor

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Bakalářská práce 2006 Tomáš Satinský

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

Programování v C++ 3, 3. cvičení

Abstraktní třídy, polymorfní struktury

Dědění, polymorfismus

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Jazyk C# (seminář 6)

Embedded vývoj v Clutteru a Mx

Øízený pøeklad - make

1. Programování proti rozhraní

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

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Matematika v programovacích

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7

Programování v C++ První kroky

Generické programování

Programování v C++ 2, 8. cvičení

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Principy objektově orientovaného programování

Více o konstruktorech a destruktorech

PB161 Programování v jazyce C++ Přednáška 10

Jazyk C++ II. Šablony a implementace

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

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

Programování v Javě I. Leden 2008

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

Objektově orientované programování v jazyce Python

Programování v C++ 1, 6. cvičení

Jazyk C# (seminář 3)

Úvod do programovacích jazyků (Java)

Programování v Javě I. Únor 2009

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Dědičnost. seskupování tříd do hierarchie. potomek získá všechny vlastnosti a metody. provádí se pomocí dvojtečky za názvem třídy.

Objektově orientované programování v jazyce Python

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

PB161 Programování v jazyce C++ Přednáška 9

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

Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března

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

Vytváření a použití knihoven tříd

Jazyk C++ I. Šablony 2

PB161 Základy OOP. Tomáš Brukner

Dynamicky vázané metody. Pozdní vazba, virtuální metody

UJO Framework. revoluční architektura beans. verze

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

IRAE 07/08 Přednáška č. 7. Začátek (head)

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

Programování v C++ 1, 5. cvičení

Jazyk C++ I. Polymorfismus

Funkční objekty v C++.

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Programování v C++ 1, 1. cvičení

PB161 Programování v jazyce C++ Přednáška 4

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

Doxygen. Jakub Břečka

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Mělká a hluboká kopie

typová konverze typová inference

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

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

Distribuované systémy a výpočty

Práce s knihovnami. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Programování v C++ 2, 4. cvičení

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

přetížení operátorů (o)

Jazyk C++ II. Výjimky

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Vstupní a vstupní proudy v C++

PB161 Programování v jazyce C++ Přednáška 5

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

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Základy objektové orientace I. Únor 2010

3. Základy programovacího jazyka Java

David Bednárek Jakub Yaghob Filip Zavoral.

MATURITNÍ PRÁCE dokumentace

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

Transkript:

Úvod ke knihovnì Qt Multiplatformní GUI knihovna Qt = jedna ze dvou nejpopulárnìjších multiplatformních knihoven na tvorbu programù s grafickým uživatelským rozhraním. Pomocí Qt jsou naprogramovány napø. : Adobe Photoshop Album, Skype, Google Earth, Opera, KDE a mnoho dalších. - knihovna Qt existuje pro C++, C, C#, Python, Ruby, Perl, Pascal a Javu na Win32, UNIX/Linux, Mac OS, aj. - podporuje lokalizaci aplikací a také SQL, zpracování XML, správu vláken a pøístup k souborùm

Architektura Qt Architektura knihovny Qt detaily na: http://trolltech.com/products/qt/features

Instalace Získání a instalace knihovny Qt (pro C++) - knihovna má nìkolik verzí - jedna z nich je k dispozici zdarma jako Open Source pod GPL; lze stáhnout z http://trolltech.com/downloads/opensource - podporuje pouze pøekladaè MinGW, je tøeba jej nainstalovat (což umí udìlat instalátor Qt, má-li pøístup k i-netu). - úplná instalace Qt má asi 236 MB, MinGW 95 MB - je nutné pøidat /qt/4.3.3/bin a /mingw/bin do PATH - online dokumentace: http://doc.trolltech.com/ Pokud je vše správnì nainstalováno, mìlo by fungovat: E:\Work\QtTest\ qmake E:\Work\QtTest\mingw32-make

Vytvoøení projektu Vytvoøení projektu a pøeklad - v pracovním adresáøi libovolný zdrojový soubor.cpp, napø. hello.cpp (obsah viz dále) X:\>qmake -project X:\> ren xx.pro hello.pro X:\> qmake X:\> mingw32-make - v pøípadì, že bude zdrojový kód ve více souborech, je samozøejmì nutné je prùbìžnì doplòovat do projektového souboru... - pokud se objeví pøi make chyby, je vìtšinou problém s cestami... není nutné, funguje to i s xx.pro ;) TEMPLATE = app TARGET = DEPENDPATH +=. INCLUDEPATH +=. # Input SOURCES += hello.cpp

Minimální aplikace - I. Minimální aplikace v Qt - hello.cpp #include #include int main( int argc, char * argv[]) { QApplication app(argc, argv); QMainWindow mainwin; <QApplication> <QMainWindow> mainwin.show(); return app.exec(); - tøída QApplication vytváøí jen kontext aplikace, není pøímo vázaná na vizuální prvky, proto není s QMainWindow nijak spojená...

Minimální aplikace - II. Pøidávání dalších prvkù #include #include int main( int argc, char * argv[]) { QApplication app(argc, argv); QMainWindow mainwin; QPushButton button("&quit"); mainwin.setwindowtitle("qt Test App"); mainwin.setcentralwidget(&button); mainwin.show(); return <QApplication> <QMainWindow> app.exec(); mít vše staticky je velmi nepraktické až nepoužitelné...

Praktická pøíprava aplikace Praktický zpùsob programování aplikace #include #include <QApplication> "main.h" hello.cpp int main( int argc, char * argv[]) { QApplication app(argc, argv); MainWindow mainwin; #ifndef MAIN_H mainwin.show(); #define MAIN_H main.h return app.exec(); #include <QMainWindow> class MainWindow: main.cpp public QMainWindow { #include <QMainWindow> public: #include "main.h" MainWindow(); ; MainWindow::MainWindow() { setwindowtitle( "Qt Example" #endif );

Ovládací prvky Pøidávání ovládacích prvkù (reálný pøípad) #ifndef MAIN_H #define MAIN_H #include <QMainWindow> class class QPushButton; MainWindow : public QMainWindow { private: QPushButton *quitbutton; public: MainWindow(); ; #include <QMainWindow> #endif #include <QPushButton> #include "main.h" dynamicky MainWindow::MainWindow() { quitbutton = new QPushButton( "&Quit"); setwindowtitle( "Qt Example" ); setcentralwidget(quitbutton);

Q W idget Mechanismus slotù Jak to udìlat, aby to nìco dìlalo: Signály a sloty - nastane-li událost (stisk myšítka, klávesy, atp.), vyšle odpovìdný objekt signál, jiný objekt mùže tento signál zachytit nìkterým ze svých slotù; Qt definuje stovky signálù a slotù: Public Slots bool close() void hide() void lower() void raise() void repaint() void setdisabled(bool) void setenabled(bool) void setfocus() void sethidden(bool) virtual void setvisible(bool) void setwindowmodified(bool) void setwindowtitle(const QString &) void show() void showfullscreen() void showmaximized() void showminimized() void shownormal() void update() Public Signals void customcontextmenurequested( const QPoint &) void destroyed(qobject *obj = 0)

Propojení signálu se slotem Programové propojení signálu se slotem #include <QtGui> #include <QMainWindow> #include <QPushButton> #include "main.h" MainWindow::MainWindow() { quitbutton = new QPushButton( "&Quit"); setwindowtitle( "Qt Example" ); setcentralwidget(quitbutton); QObject::connect(quitButton, SIGNAL(clicked()), qapp, SLOT(quit())); globální promìnná (z knihovny QtGui) typu ukazatel na aktivní instanci tøídy QApplication, tj. právì bìžící Qtaplikaci...

Tvorba slotù - I. Reakce aplikace na události: Vlastní sloty class class QPushButton; QLineEdit; class MainWindow : public QMainWindow { Q_OBJECT private: QPushButton *quitbutton; QPushButton *clearbutton; QPushButton *showbutton; QLineEdit *nameedit; public: MainWindow(); public slots: void showdialogue(); ; tohle pochopitelnì není konstrukce C++, je tøeba zavolat moc (Meta-Object Compiler), který to pøeloží do C++; zahrneme-li jméno headeru do promìnné HEADERS v projektovém souboru.pro, zavolá ho qmake za nás...

Tvorba slotù - II. Implementace slotu jako metody... QObject::connect(showButton, SIGNAL(clicked()), this, SLOT(showDialogue())); void MainWindow::showDialogue() { QString * str = new QString( "Hello "); str->append(nameedit->text()); QMessageBox::warning( this, "Greeting", * str, QMessageBox::Ok, QMessageBox::Ok); delete str; - metodu lze normálnì volat, mùže vracet hodnotu - jako slot je však vždy deklarovaná jako void

Layouty Rozmis ování prvkù GUI: Skupiny a layouty MainWindow::MainWindow() { QGridLayout * mainlayout = new QGridLayout; QGroupBox * group = new QGroupBox( "Greeting"); quitbutton = new QPushButton( "&Quit"); showbutton = new QPushButton( "&Greet me..." ); clearbutton = new QPushButton( "&Clear"); nameedit = new QLineEdit(); mainlayout->addwidget(nameedit, 0, 0); mainlayout->addwidget(clearbutton, 1, 0); mainlayout->addwidget(showbutton, 1, 1); mainlayout->addwidget(quitbutton, 1, 2); group->setlayout(mainlayout); setwindowtitle( "Qt Example" ); setcentralwidget(group);

Qt Designer Rozmis ování prvkù GUI: Qt Designer - aplikace Qt Designer usnadòuje tvorbu uživatelského rozhraní, spouští se /qt/4.3.3/bin/designer

Nápovìda Zdroje informací, pøíkladù a nápovìda - aplikace Qt Assistant obsahuje kompletní dokumentaci celé knihovny Qt s øadou pøíkladù a ukázek, spouští se /qt/4.3.3/bin/assistant - aplikace Qt Examples and Demos obsahuje ukázky, co se dá s knihovnou Qt realizovat - u každé ukázky je uveden odkaz na zdrojový kód a dokumentaci v Assistantu, spouští se /qt/4.3.3/bin/qtdemo