Programujeme s Qt - 1. časť: Prečo Qt?

20.12.2004 17:40 | Články | Štefan Tomečko

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íkaz

qmake -project

na vytvorenie projektového súboru nezávislého od platformy (hello.pro), a potom napíšte

qmake 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ť.

    • super 21.12.2004 | 18:58
      dextor   Návštevník
      Už sa teším na pokračovanie
    • napíš raz, skompiluj kdekoľvek 23.12.2004 | 11:06
      Avatar zoliq Fedora Core 3  Používateľ
      ... skoda ze v uvode nebola dopovedana cela pravda: Skusal uz niekto (legalne) zkompilovat Qt aplikaciu napr. pod Woknami? Pokial viem, ak si to nezaplatite, tak neuspejete (netyka sa to aj MacOS?) ... na svet opensource trochu neobvikly pocin.
      • Re: napíš raz, skompiluj kdekoľvek 23.12.2004 | 17:56
        Avatar Štefan Tomečko openSUSE 11, Kubuntu 8.04  Používateľ
        Pre windows existuje tzv. non-commercial edícia knižnice Qt, s ktorou môžete kompilovať programy na nekomerčné použitie. Ak chcete kompilovať komerčné programy, musíte si kúpiť komerčnú verziu Qt.
        ... because the future is open.
        • Re: napíš raz, skompiluj kdekoľvek 11.01.2005 | 15:49
          PeMi   Návštevník
          Som pozrel na trolltech a pre Winblows maju len komercnu verziu, open source pre Windozy nemaju !!!
          • Re: napíš raz, skompiluj kdekoľvek 11.01.2005 | 22:05
            Avatar Štefan Tomečko openSUSE 11, Kubuntu 8.04  Používateľ
            Máte pravdu, súčasná verzia (3.3.3) už v nekomerčnej podobe pre Windows neexistuje. Je ale možnosť stiahnuť si komerčnú verziu časovo obmedzenú na 30 dní, alebo využívať nekomerčnú verziu Qt 3.2.1
            ... because the future is open.
    • Pekny clanek 04.01.2005 | 17:37
      Karas   Návštevník
      tesim se na dalsi pokracovani
    • instalace 01.02.2005 | 18:08
      ha2ny   Návštevník
      Nemohli by jste taky neco napsat o instalaci knihovny - moc by mi to pomohlo. Co vse si musim nainstalovat ... mam doma Fedoru asi jde stahnout balicek ?
      • Re: instalace 08.02.2005 | 23:01
        Avatar Štefan Tomečko openSUSE 11, Kubuntu 8.04  Používateľ
        Mozete si stihanut bud zdrojove kody kniznice Qt alebo rpm balicky pre vasu distribuciu. Mali by to byt asi tieto: qt-3, qt-3-devel, qt-3-devel-tools.
        ... because the future is open.
    • Compile error! 08.02.2005 | 00:50
      q-parser   Návštevník
      Cafte! Neviem preco, ale nejde mi uvedeny priklad skompilovat. Nevie mi niekto poradit v com by mohol byt problem? qt kniznicu mam (ved jasan, ked mam kde). Podla toho, co mi ale gcc vypisuje typujem, ze problem je s linkerom alebo take nieco. Dik.
      • Re: Compile error! 08.02.2005 | 00:58
        q-parser   Návštevník
        Snazil som sa to skompilovat manualne s gcc, ale je to to iste. gcc qt.c -l/usr/qt/3/lib/libqt.so -I/usr/qt/3/include Ked presmerujem vystup do suboru, tak subor mam uctyhodnych 200 kilov. Je to nejake divoke...
        • Re: Compile error! 08.02.2005 | 23:03
          Avatar Štefan Tomečko openSUSE 11, Kubuntu 8.04  Používateľ
          Skusali ste skompilovat aj nejaku inu Qt aplikaciu? Uspesne? Len tak mimochodom, Qt nie je to iste co KDE. Pouzivaju ine kniznice aj hlavickove subory.
          ... because the future is open.
    • qt 30.01.2006 | 17:43
      cimo   Návštevník
      Ide to na vsetkych C++ v Linuxe alebo len na Qt? Skusal som to v Qt a ide to v pohode ale v inych to nejak neslo
    • ??? 24.01.2007 | 19:09
      Avatar Dušan Ďurech Debian Lenny 5.0  Používateľ
      Kam sa podel 2 a 3 diel tochto serialu ?

      Dakujem