Qt (knižnica)

Qt je jedna z dvoch najpopulárnejších multiplatformových knižníc pre vytváranie programov s grafickým užívateľským rozhraním.

Qt toolkit bol vytvorený v roku 1999 spoločnosťou Trolltech, ktorá ho v roku 2008 predala firme Nokia. V marci roku 2011 Nokia ohlásila predaj práv na prevádzku podporných služieb a predaj licencií pre komerčné projekty vytvorené pomocou Qt spoločnosti Digia. Zároveň však Nokia uisťuje, že po transakcii zostane hlavným vývojárom tohto toolkitu.

Od roku 1999 sa Qt toolkit vyvinul na multiplatformový nástroj, v ktorom možno vyvíjať konzolové alebo GUI aplikácie v odlišných programovacích jazykoch pre rôzne platformy. Aplikácie napísané s pomocou toolkitu je možné distribuovať pod licenciou GPL, LGPL, alebo po splnení určitých podmienok aj komerčne.

Qt je knižnica programovacieho jazyka C++, ale existuje aj pre jazyky Python (PyQt, PySide), Ruby (QtRuby), C, perl, Pascal, C #, Java (Jambi) a Haskell. Podporuje lokalizáciu aplikácií a tiež SQL, spracovanie XML, správu vlákien, prístup k súborom, prácu s grafikou a multimédiami. Veľkou výhodou Qt je veľmi prehľadne spracovaná dokumentácia a taktiež vývojové programy Qt Creator alebo Qt Designer. Aplikácie vytvorené pre grafické užívateľské prostredie používajú natívny vzhľad operačného systému, takže vyvinutá aplikácia sa vždy prispôsobí do používaného prostredia.

Qt spoločne s GTK+ nahradila starší Motif. Dôkazom kvality a rozšírenosti toolkitu je použitie napríklad pre projekty Skype, Google Earth, prostredie KDE, webový prehliadač Opera, VirtualBox a iné.

 Platformy
 Podporované platformy 
 Desktopové 
 Windows - Qt pre Microsoft Windows XP, Vista a 7 (spolu s MinGW alebo MSVC 2008)
 Linux / X11 - Qt pre X Window System 32bit a 64bit (Linux, HP-UX, Solaris, AIX ...)
 OS X - Qt pre Apple Mac OS X 10.6 "Snow Leopard" a Apple Mac OS X 10.5 "Leopard" x86_64 (Cocoa 32 aj 64bit)

 Mobilné 
 Android - tiež známe ako Necessitas
 iOS - iPad, iPhone
 Windows Phone 8 a Windows RT
 BlackBerry 10
 Ubuntu Touch

 Ostatné 
 Vstavané Linux platformy - Embedded Linux QWS (ARM) (PDA, Smartphone ...)
 Vstavané Windows platformy
 Real-Timové operačné systémy - QNX, VxWorks

 Už nepodporované platformy 
 Maemo - Maemo 5 (Linux, ARM, X11), plná podpora nie je zaručená
 Symbian - S60 3rd, S60 5th, Symbian ^ 3, Anna a Belle
 Windows CE 5.0 - Qt pre Windows CE (ARMv4i, x86, MIPS)

 Nové technológie od Qt verzie 4 
28. júna 2005 Trolltech uvoľnil Qt 4 a predstavil päť nových technológií vo frameworku:
 Tulip - šablóny a triedy.
 Interview - architektúra pre náhľad na menu.
 Arthur - framework pre 2D kreslenie.
 Scribe - Unicode text vykresľovaný s verejným API na prezentáciu nízkoúrovňových textových vrstiev.
 MainWindow - moderné akčne založené hlavné okno, nástrojová lišta, menu a priľahlá architektom.

 Vývoj verzií 
 Verzia Uvoľnená Popis Qt 4.1 19.decembra2005 Obsahuje integrovanú podporu SVG Tiny a PDF prevádzač na Qt systém tlače a niekoľko ďalších vylepšení. Qt 4.2 4.októbra2006 Prinieslo natívnu podporu CSS pre widgetový štýl, rovnako ako QGraphicsView framework, ktorý dokáže stvárniť stovky 2D objektov na obrázku (nahrádza Qt 3.x QCanvas triedy). Qt 4.3 30.mája2007 Vylepšil podporu Windows Vista, OpenGL, generovanie SVG súborov a pridalo QtScript (ECMAScript skriptovací jadro založené na QSA). Qt 4.4 7.mája2008 Prinieslo predovšetkým podporu renderovacieho jadra WebKit, multimediálny framework Phonon a podporu pre Windows CE. Qt 4.5 3.marca2009 Prinieslo hlavne vývojové prostredie QtCreator, vylepšený grafický engine, lepšiu integráciu s WebKit, podporu čítania formátu OpenDocument a podporu frameworku Cocoa. Qt 4.6 1.decembra2009 Nová verzia toolkit obsahuje podporu viacerých platforiem (Symbian, Windows 7, Apple Mac OS X 10.6 (Snow Leopard) a Maemo 6), grafické vylepšenia (priehľadnosť, tiene, žiara, atď.), podpora viacerými dotykmi v aplikáciách, optimalizácia Qt GraphicsView renderovacieho algoritmu, nový OpenGL vykresľovací engine, WebKit a aktualizovanú verziu Qt Creator 1.3. Qt 4.7 21. septembra2010 Kľúčovým rysom verzia je uvedenie QML (Qt Meta-Object-Language), ktorý je popisovaný ako JavaScript-like deklaratívny jazyk pre jednoduchšie vytváranie rozhrania programu. Nová verzia triedy QStaticText, ktorá renderuje dvakrát rýchlejšie ako vo verzii Qt 4.6. Pomocou enginu QPainter systém efektívnejšie využíva OpenGL. Nová hardwarová akcelerácia QtWebkit renderuje o 31% rýchlejšie. Qt 4.8 15.decembra2011 Knajväčším zmenám patrí nová verzia Qt Quick, abstrakcia od platformy, nová verzia WebKite, podpora vlákien v OpenGL modulu, a podpora štandardu C ++ 11. Qt 5.0 19.decembra2012 Prináša novú verziu Qt Quick, balíček Qt Multimedia (nahrádza Phonon a pridáva nové funkcie), JSON a vylepšuje podporu IPv6, vyčleňuje Widgety do vlastného balíčka.

 Licencia 
 Qt Komerčné licencie pre vývojárov - licencia je zhodná s licenciou používanou pri vývoji klasickej komerčné aplikácie. Táto verzia je pre vývojárov, ktorí nechcú zdieľať zdrojový kód s ostatnými v súlade s licenciou GPL alebo LGPL.
 Qt GNU LGPL v. 2.1 - táto verzia Qt licencia je vhodná pre vývoj aplikácií open source za predpokladu, že vývojár splní podmienky obsiahnuté vo verzii GNU LGPL 2.1.
 Qt GNU GPL v. 3.0 - táto verzia Qt licencia je vhodná pre vývoj Qt aplikácií, ak mienite používať aplikáciu v kombinácii so softvérom s podmienkami GNU General Public License verzia 3.0 alebo kde ste ochotní dodržať podmienkami GNU General Public License verzia 3.0.

 Signály a sloty 
Dôležitou vlastnosťou Qt toolkit je prítomnosť signálov a slotov pre komunikáciu medzi objektmi napr. Ak sa vo widgetu (element GUI, ktorý zobrazuje alebo odovzdáva informácie pomocou interakcie s užívateľom) uskutočnila akcia, ktorá zmenila jeho stav , tak o tom môže byť informovaný widget umiestnený v inom okne aplikácie. Signály a sloty tvorí veľmi silný programátorský nástroj.

Miesto signálov a slotov sa skôr pre tento typ komunikácie používal tzv. Callback, čo je ukazovateľ na metódu objekte, ktorú chceme vyvolať po nejakej udalosti iného objektu. Tento prístup mal dve nevýhody. Nebola tu pri volaní typová kontrola a metódy volané pomocou callback sú silne viazané tzn. volané metóda musí poznať ukazovateľ na metódu, z ktorej bola vyvolaná. Pri používaní signálov a slotov sa tieto dve nevýhody nevyskytujú. Pre ich použitie sa definuje spojenie signálu so slotom pomocou metódy connect. V prípade potreby sa potom spojené signály len "vyvolávajú".

Sloty a signály môžu byť využité vo všetkých objektoch, ktoré sú priamo alebo nepriamo zdedené z triedy QObject. Pri prepájaní signálov a slotov môže byť s jedným slotom spojené niekoľko rôznych signálov a rovnako tak na jeden signál napojených niekoľko slotov. Sloty môžu byť použité pre prijímanie signálov a zároveň môžu byť použité ako štandardné metódy objekte.

 Prí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();
}

 Pozri aj 
 wxWidgets
 PyQt
 Grafika a multimédiá v Qt

 Externé odkazy 
 Domovská stránka projektu Qt 
 Referenčná dokumentácia (4.6) 
 Referenčná dokumentácia (4.7)
 Seriál: Qt 4 - písanie grafických programov

 Zdroj 

Kategória:Programové knižnice
Kategória:X Window System