Licencia GNU/GPL je unikátna práve tým, že umožňuje, alebo priam dáva ako povinnosť šíriť zdrojové kódy programu. Tak aj my, bežní smrteľníci, máme možnosť nahliadnuť do tajov fungovania programov, ktoré bežne používame. Na to, aby sme ich mohli meniť podľa svojich požiadaviek, máme tiež podľa spomenutej licencie právo. K tomu sú však potrebné programátorské znalosti. K ich získaniu by chcel napomôcť aj tento náš nový seriál.
Pomáhať nám bude knižnica Qt od firmy Trolltech. Qt je knižnica tried pre C++ a zbierka nástrojov pre budovanie multiplatformových GUI aplikácií, pričom úspešne využíva pravidlo "napíš raz, skompiluj kdekoľvek". Qt umožňuje programátorovi vytvárať aplikácie, ktoré pobežia na Windows 95 až XP, Mac OS X, Linuxe, Solarise, a mnohých typov Unix-ov s X11.
Predpokladáme, že máte základné skúsenosti s C++. Ak ste v programovaní nováčik, odporúčame vám niektorú z kvalitných kníh o programovaní v C/C++ a určite niečo o tejto téme nájdete aj na internete.
Prečo Qt?
Prečo programátori používajú knižnicu Qt? Samozrejme sa naskytnú obligátne odpovede typu: je to pre zdrojovú kompatibilitu, pre rozmanité možnosti, pre používanie jazyka C++, pre prístupnosť zdrojového kódu, pre dokumentáciu, pre vysoko kvalitnú technickú podporu, atď. To všetko je v poriadku, ale zabúda sa na dôležitú vec: Qt je úspešné, lebo ho programátori majú radi.
Takto nejako sa o knižnici Qt vyjadril Matthias Ettrich, zakladateľ projektu KDE. Práve celé KDE je postavené na tejto unikátnej knižnici, väčšina z nás ho denne používa a tak má možnosť zhodnotiť, že to určite nebolo zlé rozhodnutie. Naším cieľom určite nebude naprogramovať nové prostredie, ale naučíme sa pomocou Qt vytvárať používateľsky prítulné programy, jednoduché na obsluhu a dobre vyzerajúce. Skôr ako sa do toho pustíme, povedzme si niečo o histórii knižnice Qt.
Knižnica Qt bola prvýkrát sprístupnená verejnosti v máji 1995. Za jej vývojom stáli Haavard Nord a Eirik Chambe-Eng. Títo dvaja sa spoznali na Nórskom inštutúte technológií v Trondheime, kde promovali v odbore počítačové vedy.
V roku 1991 Haavard začal písať triedy, pričom spolupracoval s Eirikom, ktorý mal na starosti dizajn. V 1993 Haavard a Eirik vyvinuli prvé grafické jadro Qt. Na konci roku padlo rozhodnutie založiť firmu, ktorá sa bude zaoberať vývojom "celosvetovo najlepšieho nástroja pre programovanie GUI aplikácií". Firma bola založená 4. marca 1994, pod pôvodným názvom Quasar Technologies, neskôr sa premenovala na Troll Tech a dnes nesie názov Trolltech. V apríli 1995 im vďaka kontaktom profesorov z univerzity kde študovali, nórska firma Metis ponúkla kontrakt na vývoj softvéru založený na Qt. 20. mája 1995 sa na serveri sunsite.unc.edu objavila verzia 0.90 knižnice Qt. Bolo to prvé verejné vydanie. Qt bolo od začiatku dostupné v dvoch licenciách: komerčná licencia pre vývoj komerčných aplikácií a free software edícia pre programátorov open source. Verzia 0.97 bola vydaná koncom mája v roku 1996 a už 24. septembra bola na svete verzia 1.0. Práce však neprestávali a na konci roku bola vonku verzia 1.1. Tento rok sa takisto začali práce na projekte KDE, vedené Matthiasom Ettrichom.
V dnešnej dobe sa knižnica Qt dostala do verzie 3.3 a vývojari z Trolltechu usilovne pracujú na verzii 4.0. Necháme sa prekvapiť čo nové nám prinesie. Určite sa máme na čo tešiť.
Začíname...
Na začiatok si ukážeme ako pomocou Qt vytvoriť legendárny program "Hello world!", s ktorým sa určite stretli všetci tí, čo len trocha pričuchli k programovaniu. Tu je jeho výpis:
001 #include <qapplication.h>
002 #include <qlabel.h>
003 int main(int argc, char *argv[])
004 {
005 QApplication app(argc, argv);
006 QLabel *label = new QLabel("Hello Qt!", 0);
007 app.setMainWidget(label);
008 label->show();
009 return app.exec();
010 }
Teraz si ho rozoberieme riadok po riadku a ukážeme si ako ho skompilovať a spustiť.
Riadky 1 a 2 vkladajú definície tried QApplication
a QLabel
.
Riadok 5 vytvára objekt QApplication
na ovládanie zdrojov aplikácie.
Riadok 6 vytvára widget QLabel
, ktorý zobrazí nápis "Hello Qt!". V Qt terminológii je widget vizuálny element pre interakciu s užívateľom.
Riadok 7 spraví nápis hlavným widgetom aplikácie. Ak používateľ ukončí hlavný widget (napríklad kliknutím na X), program sa ukončí. Bez hlavného widgetu bude program pokračovať na pozadí napriek tomu, že užívateľ zavrie okno.
Riadok 8 spraví nápis viditeľným. Widgety sú stále vytvárané ako neviditeľné.
Riadok 9 prenecháva kontrolu nad programom na Qt. Od tohto bodu je program akoby v stand-by móde, keď očakáva reakciu používateľa ako sú napríklad kliky myšou alebo stláčanie kláves.
Teraz je čas otestovať našu aplikáciu. V prvom rade, musíte mať nainštalovanú knižnicu Qt 3.2 alebo novšiu verziu. Knižnica by mala byť súčasťou všetkých distribúcií, takže sa nebude podrobne zaoberať jej inštaláciou. Od tejto chvíle budeme predpokladať, že máte správne nainštalovanú knižnicu Qt 3.2 a adresár, v ktorom sú uložené binárne súbory pridaný do vášho PATH nastavenia. Je to potrebné k tomu, aby sme mohli spúšťať utility obsiahnuté v tomto adresári.
Ďalším krokom je vytvorenie zdrojového súboru. Otvorte váš obľúbený textový editor a prepíšte doňho zdrojový kód nášho programu (čísla riadkov nepíšte). Súbor uložte ako hello.cpp v adresári hello. Spustite textovú konzolu, presuňte sa do adresára, kde ste si uložili zdrojový kód a napíšte príkazqmake -project
na vytvorenie projektového súboru nezávislého od platformy (hello.pro), a potom napíšteqmake hello.pro
na vytvorenie súboru Makefile špecifického pre danú platformu. Potom už len stačí zadať make
na vytvorenie aplikácie. Po vytvorení ju spustíme príkazom ./hello
.
Výsledok by mal byť podobný tomu na obrázku.
Teraz si ukážeme niečo na spestrenie našej "aplikácie". Jednoduchým použitím HTML tagov dokážeme meniť vzhľad. Stačí zameniť riadok
QLabel *label = new QLabel("Hello Qt!", 0);
riadkom
QLabel *label = new QLabel("<h2><i>Hello</i> " " <font color=red>Qt!</font></h2>", 0);
Výsledok bude predsalen trošku iný.
To by bolo na úvod nášho seriálu všetko. Dúfam, že som vás navnadil a že sa stretneme aj pri ďalších častiach, v ktorých už začneme naozaj programovať.
Dakujem