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 Digi. 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
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