Vývoj multiplatformní aplikace v Qt



Podobné dokumenty
Multiplatformní GUI toolkity

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

Qt na mobilních zařízeních

Multiplatformní GUI knihovna

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

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

Ú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

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

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

1 Webový server, instalace PHP a MySQL 13

Jak používat statistiky položkové v systému WinShop Std.

Analýza a Návrh. Analýza

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

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

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

Formy komunikace s knihovnami

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

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

O projektu OpenOffice.org a IBM OS/2 OS/2 a Open Source

Možnosti reportingu v produktech řady EPM

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

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

PREPROCESOR POKRAČOVÁNÍ

O projektu Nasazení OpenOffice.org v praxi

MBI - technologická realizace modelu

TÉMATICKÝ OKRUH TZD, DIS a TIS

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

Softwarové komponenty a Internet

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

TÉMATICKÝ OKRUH Softwarové inženýrství

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

GUI. Systémová integrace pro desktopové aplikace

Představuje. Technický Informační Systém nové generace

Základy objektové orientace I. Únor 2010

SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek

Prezentace CRMplus. Téma: CRMplus jako nástroj pro kontrolu a vyhodnocení rozpracovanosti dílů na zakázkách

1. Webový server, instalace PHP a MySQL 13

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

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

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Možnosti využití dat RÚIAN poskytovaných VDP pomocí webových služeb

TIA na dosah. Safety funkce - SIMATIC S7-1500F a SINAMICS G120 v TIA Portálu v13. Siemens AG Alle Rechte vorbehalten. siemens.

Stručný obsah. K2118.indd :15:27

ŘÍZENÍ POHLEDÁVEK A AUTOMATICKÉ UPOMÍNKY. Katalogový doplněk ABRA Gen

Vzdělávací obsah vyučovacího předmětu

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Otevřený katastr (OK)

Novinky ve Visual Studio Tomáš Kroupa

Student s Life. Návrhová dokumentace (Design) Lukáš Barák, Jakub Ječmínek, Jaroslav Brchel, Jiří Zmeškal

Knot DNS Resolver. Modulární rekurzivní resolver. Karel Slaný

Komponenty v.net. Obsah přednášky

RMI Remote Method Invocation

Unifikovaný modelovací jazyk UML

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST. Obor SOČ: 18. Informatika. Školní sdílení PC obrazovek. School sharing PC screens

Provozní dokumentace. Seznam orgánů veřejné moci. Formuláře. Vytvořeno dne: Aktualizováno: Verze: 1.

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.

Android 100% Java telefon. Petr Musil

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

Geoportál DMVS využití a další rozvoj

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Wonderware Information Server 4.0 Co je nového

Stručný obsah. Část I. Část II. Část III. Úvod do vývoje v prostředí Visual Studio 25. Návrh uživatelského rozhraní 127

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

QAD Business Intelligence

8 Třídy, objekty, metody, předávání argumentů metod

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

Rozhraní pro tvorbu doplňků v moderních prohlížečích. Martin Straka martin.straka@nic.cz

Maturitní témata Školní rok: 2015/2016

Pohled pod pokličku spíš než na UI Využití jako platformy pro vývoj aplikací PV219 Jakub Kolář FI MU

Výčtový typ strana 67

Platební systém XPAY [

Logování zaznamenávání informací o průběhu programu, ladících a chybových informací

Tvorba informačních systémů

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.

Obsah. Úvod 11. Vytvoření emulátoru 20 Vytvoření emulátoru platformy Android 4.4 Wearable 22 Spouštění aplikací na reálném zařízení 23

Microsoft Access tvorba databáze jednoduše

Programátorská příručka

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

UNIVERZITA PARDUBICE

konec šedesátých let vyvinut ze systému Multics původní účel systém pro zpracování textů autoři: Ken Thompson a Denis Ritchie systém pojmnoval Brian

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Archivace relačních databází

CMS LARS VIVO VERZE 1.2 Z POHLEDU VIVOJÁŘE

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Obsah. Úvodem 15. Zaměření knihy 15 Co v knize najdete 15 Doprovodné CD 17 Poděkování 18

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

Doxygen. Jakub Břečka

PROGRAMOVÁNÍ PRO MS WINDOWS 1

Jazyk C# (seminář 6)

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Nástroje pro vývoj a publikaci mobilní aplikace v Qt. Martin Straka

Možnosti reakce na události na rozhraních (Interface Events)

PROGRAMOVÁNÍ PRO MS WINDOWS 2

Transkript:

Vývoj multiplatformní aplikace v Qt z pohledu vývoje Datovky Karel Slaný karel.slany@nic.cz 13. 11. 2015

Obsah Co je Qt Nástroje Qt Koncepty Qt Problémy při vývoji Datovky Balíčkování aplikace

Datovka Desktopová aplikace pro příjem a odesílání datových zpráv. Dovoluje spravovat více účtů současně. Podobnost s poštovním klientem Zprávy se ukládají do lokální databáze. Částečně nahrazuje datový trezor. Export korespondence za vybrané časové období. Podpora všech přihlašovacích metod. Multiplatformí Windows, UNIX-like (Linux, FreeBSD,...), OS X

Qt Sada knihoven a nástrojů pro vývoj multiplatformních grafických aplikací v C++. Windows, X11(Linux, UNIX-like), OS X Přenositelné datové typy Kontejnerové třídy Abstrakce nad službami OS Síť, souborový systém, vlákna, IPC Podpora databázových systémů Přímé zobrazení výsledku SQL dotazu v tabulce Přehledná a dostupná dokumentace

Projekt v Qt TEMPLATE = app APP_NAME = datovka Projektový soubor Výčet zdrojových souborů Nastavení parametrů překladu Dovoluje podmíněný překlad Základní podpora skriptování qmake Generuje Makefile. VERSION = 4.4.1 macx { ICON = res/datovka.icns QMAKE_CXXFLAGS += -mmacosx-version-min=10.7 CONFIG += c++11 isempty(sdk_ver) { SDK_VER = 10.7 } QMAKE_MAC_SDK = macosx$${sdk_ver} QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 } SOURCES += HEADERS += FORMS +=

Návrh UI Qt Designer UI se sestavuje přetahováním komponent Výsledkem je XML soubor s popisem User Interface Compiler (uic) Vstup *.ui soubor Výstup ui_*.h soubor Třída jejíž konstruktor nastavuje UI <item> <widget class="qlineedit" name="filterlineedit"> <property name="focuspolicy"> <enum>qt::clickfocus</enum> </property> </widget> </item> QLineEdit *filterlineedit; FilterLineEdit = new QLineEdit(Contacts); filterlineedit->setobjectname( QStringLiteral("filterLineEdit")); filterlineedit->setfocuspolicy( Qt::ClickFocus); horizontallayout->addwidget( filterlineedit);

Lokalizace aplikace Metoda QObject::tr() Nástroj lupdate.ui XML soubor s řetězci na překlad Qt Linguist.ui XML soubor s překlady Nástroj lrelease.qm binární soubor obsahující lokalizaci Třída QTranslator filename = QfileDialog::getSaveFileName(this, tr("save attachments"), saveattachpath + QDir::separator() + filename); <message> <location filename="gui/datovka.cpp" line="1866"/> <source>save attachments</source> <translation>uložit všechny přílohy</translation> </message> static QTranslator apptranslator; apptranslator.load(localisationfile, LocalisationDir); Nahrává se do QApplication app.installtranslator(&apptranslator);

Zdrojové kódy C++ Rozšiřuje klíčová slova C++. Prý to není C++, znečišťuje namespace. Základní schopnost introspekce Rozšiřuje klíčová slova C++ Meta-Object Compiler (moc) Skenuje hlavičkové soubory *.h moc_*.cpp metaobjektový kód class DlgViewZfo : public QDialog, public Ui::ViewZfo { Q_OBJECT slots: void attachclicked(qpoint &point); }

Signály a sloty Základní koncept zpracování událostí Signál je vyvolán z kódu. Klíčové slovo emit Zpracování připojeným slotem Nutné spojit pomocí connect() Zpracování probíhá ve smyčce obsluhy Lze předávat vlastní datové typy Definovaný kopírovací konstruktor Typ musí být zaregistrován class SendJobInfo { public: qint64 timestamp; qint32 recipientnum; }; Q_DECLARE_METATYPE(SendJobInfo) class Worker { signals: void sendsig(sendjobinfo); }; connect(m_worker, SIGNAL(sendSig(SendJobInfo)), this, process(sendjobinfo)); qregistermetatype<sendjobinfo>("sendjobinfo");

Koncept model view Data nejsou vkládána přímo do widgetů. Data jsou organizována do struktur modelů. O zobrazení se starají view widgety. Model a view komunikují zasíláním signálů. Při změně dat modelu se view automaticky postará o překreslení. O formátování dat se stará model. Lze změnit definicí vlastní funkce metody data()

Kde jsme v Datovce s Qt nevystačili Parsování a kontrola certifikátů CMS QSslCertificate neposkytuje dostatečnou funkcionalitu. Formát podepsaných datových zpráv (.zfo) Načítání dat z kontejneru Verifikace dat SOAP libisds (libcurl, libxml2)

Co nefungovalo podle očekávání Horní aplikační menu na OS X Pojmenovávání souborů a omezení souborových systémů Zvětšování/zmenšování oken Práce nad několika databázemi současně Navigace s tabulkách Příkazová řádka na Windows

Static initialisation order fiasco Problém C++, nesouvisí přímo s Qt. Pořadí inicializace statických instancí není jednoznačně definováno. Může dojít ke špatnému pořadí inicializace, když se nachází ve více překladových jednotkách. Dá se obejít metodou vytvoř při prvním použití. Statický objekt je zabalen do funkce.

Balíčkování Datovky UNIX-like Archivy zdrojových souborů Distribuční balíčky Windows OS X Nástroj Qt binarycreator Používáme NSIS Balík aplikace pro OX má definovanou strukturu. Open Scripting Architecture (OSA) skript pro výrobu.dmg

Děkuji za pozornost Karel Slaný karelslany@nic.cz