Qt (knihovna)

Z Wikipedie, otevřené encyklopedie
Qt
Logo
Aplikace Qt designer používaná pro návrh GUI
Aplikace Qt designer používaná pro návrh GUI
VývojářQt Software (původně Trolltech)
První vydání20. května 1995
Aktuální verze5.3 (20. května 2014)
Operační systémmultiplatformní software
Vyvíjeno vC++
Typ softwaruuniverzální toolkit
Licence- GPL
- LGPL
- Qt Commercial Developer License
Webwww.qt-project.org
Některá data mohou pocházet z datové položky.

Qt je jedna ze dvou nejpopulárnějších multiplatformních knihoven pro vytváření programů s grafickým uživatelským rozhraním.

Qt toolkit byl vytvořen v roce 1999 společností Trolltech, která jej v roce 2008 prodala firmě Nokia. V březnu roku 2011 Nokia ohlásila prodej práv na provoz podpůrných služeb a prodej licencí pro komerční projekty vytvořené pomocí Qt společnosti Digia. Zároveň však Nokia ujišťuje, že po transakci zůstane hlavním vývojářem tohoto toolkitu.[1]

Od roku 1999 se Qt toolkit vyvinul v multiplatformní nástroj, ve kterém lze vyvíjet konzolové nebo GUI aplikace v odlišných programovacích jazycích pro různé platformy. Aplikace napsané s pomocí toolkitu je možno distribuovat pod licencí GPL, LGPL, nebo po splnění určitých podmínek i komerčně.

Qt je knihovna programovacího jazyka C++, ale existuje i pro jazyky Python (PyQt, PySide), Ruby (QtRuby), C, Perl, Pascal, C#, Java (Jambi) a Haskell. Podporuje lokalizaci aplikací a také SQL, zpracování XML, správu vláken, přístup k souborům, práci s grafikou a multimédii. Velkou výhodou Qt je velmi přehledně zpracovaná dokumentace a také vývojové programy Qt Creator nebo Qt Designer. Aplikace vytvořené pro grafické uživatelské prostředí používají nativní vzhled operačního systému, takže vyvinuté aplikace se vždy přizpůsobí do používaného prostředí.

Qt společně s GTK+ nahradila starší Motif. Důkazem kvality a rozšířenosti toolkitu budiž použití například pro projekty Skype, Google Earth, prostředí KDE, webový prohlížeč Opera, VirtualBox a jiné.

Platformy[2]

Podporované platformy

Desktopové

  • Windows – Qt pro Microsoft Windows XP, Vista a 7 (spolu s minGW nebo MSVC 2008)
  • Linux/X11 – Qt pro X Window System 32bit a 64bit (Linux, HP-UX, Solaris, AIX…)
  • OS X – Qt pro Apple Mac OS X 10.6 „Snow Leopard“ a Apple Mac OS X 10.5 „Leopard“ x86_64 (Cocoa 32 i 64bit)

Mobilní

Ostatní

  • Vestavěné Linux platformy – Embedded Linux QWS (ARM) (PDA, Smartphone…)
  • Vestavěné Windows platformy
  • Real-Timové operační systémyQNX, VxWorks

Již nepodporované platformy

  • Maemo – Maemo 5 (Linux, ARM, X11), plná podpora není zaručena
  • Symbian – S60 3rd, S60 5th, Symbian^3, Anna a Belle
  • Windows CE 5.0 – Qt pro Windows CE (ARMv4i, x86, MIPS)

Nové technologie od Qt verze 4

28. června 2005 Trolltech uvolnil Qt 4 a představil pět nových technologií ve frameworku:

  • Tulip – šablony a třídy.
  • Interview – architektura pro náhled na menu.
  • Arthur – framework pro 2D kreslení.
  • ScribeUnicode text vykreslován s veřejným API k prezentaci nízkoúrovňových textových vrstev.
  • MainWindow – moderní akčně založené hlavní okno, nástrojová lišta, menu a přilehlá architektua.

Vývoj verzí

Verze Uvolněna Popis
Qt 4.1 19. prosince 2005 Obsahuje integrovanou podporu SVG Tiny a PDF převaděč na Qt systém tisku a několik dalších vylepšení.
Qt 4.2 4. října 2006 přineslo nativní podporu CSS pro widgetový styl, stejně jako QGraphicsView framework, který dokáže ztvárnit stovky 2D objektů na obrázku (nahrazuje Qt 3.x QCanvas třídy).
Qt 4.3 30. května 2007 Vylepšilo podporu Windows Vista, OpenGL, generování SVG souborů a přidalo QtScript (ECMAScript skriptovací jádro založené na QSA).
Qt 4.4 7. května 2008 Přineslo především podporu renderovacího jádra WebKit, multimediální framework Phonon a podporu pro Windows CE.
Qt 4.5 3. března 2009 Přineslo hlavně vývojové prostředí QtCreator, vylepšený grafický engine, lepší integraci s WebKitem, podporu čtení formátu OpenDocument a podporu frameworku Cocoa.[3]
Qt 4.6 1. prosince 2009 Nová verze toolkitu obsahuje podporu více platforem (Symbian, Windows 7, Apple Mac OS X 10.6 (Snow Leopard) a Maemo 6), grafické vylepšení (průhlednost, stíny, záře, atd.), podpora vícedotykového ovládání v aplikacích, optimalizace Qt GraphicsView renderovacího algoritmu, nový OpenGL vykreslovací engine, WebKit a aktualizovanou verzi Qt Creator 1.3.[4]
Qt 4.7 21. září 2010 Klíčovým rysem verze je uvedení QML (Qt Meta-Object-Language), který je popisován jako JavaScript-like deklarativní jazyk pro jednodušší vytváření rozhraní programu. Nová verze třídy QStaticText, která renderuje dvakrát rychleji než ve verzi Qt 4.6. Pomocí enginu QPainter systém efektivněji využívá OpenGL. Nová hardwarová akcelerace QtWebkit renderuje o 31 % rychleji.[5]
Qt 4.8 15. prosince 2011 K největším změnám patří nová verze Qt Quick, abstrakce od platformy, nová verze WebKitu, podpora vláken v OpenGL modulu, a podpora standardu C++11.[6]
Qt 5.0 19. prosince 2012 Přináší novou verzi Qt Quick, balíček Qt Multimedia (nahrazuje Phonon a přidává nové funkce), JSON a vylepšuje podporu IPv6, vyčleňuje Widgety do vlastního balíčku.[7]

Licence

  • Qt Komerční licence pro vývojáře – licence je shodná s licencí používanou při vývoji klasické komerční aplikace. Tato verze je pro vývojáře, kteří nechtějí sdílet zdrojový kód s ostatními v souladu s licencí GPL nebo LGPL.
  • Qt GNU LGPL v. 2.1 – tato verze Qt licence je vhodná pro vývoj aplikací open source za předpokladu, že vývojář splní podmínky obsažené ve verzi GNU LGPL 2.1.
  • Qt GNU GPL v. 3.0 – tato verze Qt licence je vhodná pro vývoj Qt aplikací, pokud hodláte používat aplikaci v kombinaci se softwarem s podmínkami GNU General Public License verze 3.0 nebo kde jste ochotni dodržet podmínkami GNU General Public License verze 3.0.[8]

Signály a sloty

Důležitou vlastností Qt toolkitu je přítomnost signálů a slotů pro komunikaci mezi objekty např. pokud se ve widgetu (element GUI, který zobrazuje nebo předává informace pomocí interakce s uživatelem) uskutečnila akce, která změnila jeho stav, tak o tom může být informován widget umístěný v jiném okně aplikace. Signály a sloty tvoří velmi silný programátorský nástroj.

Místo signálů a slotů se dříve pro tento typ komunikace používal tzv. callback, což je ukazatel na metodu objektu, kterou chceme vyvolat po nějaké události jiného objektu. Tento přístup měl dvě nevýhody. Nebyla zde při volání typová kontrola a metody volané pomocí callback jsou silně vázané tzn. volaná metoda musí znát ukazatel na metodu, z které byla vyvolána. Při používání signálů a slotů se tyto dvě nevýhody nevyskytují. Pro jejich použití se definuje spojení signálu se slotem pomocí metody connect. V případě potřeby se pak spojené signály pouze „vyvolávají“.

Sloty a signály mohou být využity ve všech objektech, které jsou přímo nebo nepřímo zděděny ze třídy QObject. Při propojování signálů a slotů může být s jedním slotem spojeno několik různých signálů a stejně tak na jeden signál napojeno několik slotů. Sloty mohou být použity pro přijímání signálů a zároveň mohou být použity jako standardní metoda objektu[9].

Příklad zdrojového kódu

#include <QtGui>

int main(int argc, char *argv[])
{
 QApplication app(argc, argv);
 QWidget window;
 window.resize(320, 240);
 window.show();
 return app.exec();
}

Související články

Reference

  1. Nokia and Digia working together to grow the Qt community [online]. Qt, 2011-03-07 [cit. 2011-03-23]. Dostupné online. (anglicky) 
  2. QtDoc 5.0: Supported Platforms [online]. Qt, 2012-12-19 [cit. 2013-06-05]. Dostupné online. (anglicky) 
  3. Qt 4.5, Qt Creator released [online]. Qt, 2009-03-03 [cit. 2010-06-25]. Dostupné online. (anglicky) 
  4. Nokia Releases Qt 4.6 [online]. Qt, 2010-12-01 [cit. 2010-06-25]. Dostupné online. (anglicky) 
  5. Nokia Releases Qt 4.7 [online]. Qt, 2010-09-21 [cit. 2010-10-23]. Dostupné online. (anglicky) 
  6. What's New in Qt 4.8 [online]. Qt, 2011-12-15 [cit. 2013-06-06]. Dostupné online. (anglicky) 
  7. What's New in Qt 5.0 [online]. Qt, 2012-12-19 [cit. 2013-06-06]. Dostupné online. (anglicky) 
  8. Qt Licensing [online]. Qt, 2008 [cit. 2010-06-25]. Dostupné online. (anglicky) 
  9. Signals and Slots [online]. Online Reference Documentation, 2010 [cit. 2010-06-24]. Dostupné online. (anglicky) 

Externí odkazy