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í

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 

Programové knižnice
X Window System