Traduzione a cura di Fabrizio Angius [qtsolutions -A-T- gmx.net]
English TOC.

4. I tool di Qt

Variabili d'ambiente

Per poter usare Qt e' necessario impostare tre variabili d'ambiente: QTDIR, PATH e QMAKESPEC.

Per poter compilare Qt, QTDIR deve puntare alla cartella in cui avete installato Qt. Nella mia Mandrake 9 QTDIR e' impostata su /usr/lib/qt3.

Per poter eseguire i tool di Qt dalla riga di commando dovete aggiungere qualcosa alla PATH Vi basta aggiungete ${QTDIR}/bin alla fine della vostra PATH.

Per poter usare qmake correttamente, dovete impostare anche la variabile QMAKESPEC. QMAKESPEC punta alla cartella con i file che descrivono l'ambiente di destinazione da usare. Qt ha una cartella chiamata mkspecs, situata in $QTDIR/mkspecs, che contiene un certo numero di descrizioni predefinite. Se siete fortunati ne trovate una per il vostro sistema, per esempio una distribuzione basata su Linux x86 con compilatore gcc usa linux-g++, per cui QMAKESPEC andrebbe impostato su $QTDIR/mkspecs/linux-g++.

Magari ora vi state chiedendo come si imposta una variabile d'ambiente? Se usate la bash come shell, potete usare export QTDIR=/usr/lib/qt3, ed export PATH=$PATH':/usr/lib/qt3/bin'. Inserite queste due righe nel file .bashrc nella vostra home. Per verificare se le variabili sono impostate, eseguite, per esempio, echo $QTDIR in una shell.

Il Designer di Qt

Il Designer rappresenta l'ambiente di sviluppo fornito con Qt. In Qt 2.x il Designer si poteva usare solo per 'disegnare' le GUI mentre per scrivere il codice era necessario usare un'altro editor. In Qt 3.x il Designer e' stato esteso per gestire anche progetti in C++ e per scrivere direttamente il codice senza usare programmi esterni. Nel corso di questo tutorial useremo spesso il Designer, dal momento che semplifica notevolmente il processo di sviluppo.

qmake

Dal momento che un'applicazione Qt dipende dalle librerie Qt, dalle proprie librerie di supporto e, qualche volta, da librerie di terze parti, mentre contemporaneamente mira a mantenere elevata la portabilita', i makefile possono diventare facilmente delle enormi bestie difficili da gestire. Non solo bisogna compilare il codice C++, ma il moc introduce un'ulteriore livello di pre-compilazione e, come vedremo, le interfaccie grafiche possono essere compilate partendo da file XML. Per risolvere tutto cio' si usa qmake.

Per le classi piu' banali, basta digitare qmake -project per analizzare tutto il codice e creare un file con la descrizione del progetto (con estensione .pro). Se qmake viene eseguio senza parametri genera un makefile adatto alla piattaforma di destinazione. Per compilare il tutto e' quindi sufficiente esequire l'utility make.

Per costruire il makefile corretto, qmake si affida alla variabile d'ambiente QMAKESPEC e alla descrizione a cui essa punta. Questa descrizone contiene tutte le informazioni relative all'ambiente di destinazione usato.

Se cambiate semplicemente il codice, senza aggiungere nuovi file al progetto e senza modificare le dipendenze esterne (come includere file da altre librerie), non e' necessario eseguire nuovamente qmake. Basta lanciare di nuovo l'utility make come in qualsiasi altro progetto. In altri casi potrebbe essere necessario ricostruire il file del progetto e il makefile.

Il vantaggio maggiore, oltre al fatto di non dover gestire manualmente complessi makefile, e' che il file del progetto e' portabile. Finche' avete a disposizione il makespec per la piattaforma di destinazione potete costruire un makefile e compilare tutto il progetto usando sempre lo stesso file con la descrizione dello stesso.

Se proprio vi servono delle dichiarazioni dipendenti dalla piattaforma, potete includerle nel file del progetto, rendendo quindi le applicazioni Qt realmente portabili. Per esempio, per un'impostazione specifica per win32, usate qualcosa di simile all'esempio 3-1.

win32 {
  CONFIG += special
}

Esempio 3-1

Sono disponibili altre opzioni avanzate. Si consiglia al lettore interessato di studiare il capitolo Advanced Concepts della documentazione online di qmake.

Alcune distribuzioni di Linux contengono solo la versione multi-threaded di Qt, chiamata libqt-mt.so e non libqt.so. Questo significa che ld si lamentera' (quando lanciate gcc, g++ o altri tool che invocano ld, oppure quando eseguite ld direttamente) dal momento che non riesce a trovare -lqt. Ci sono tre modi per risolvere questo problema. Io consiglio la prima soluzione.

uic

Il uic (user interface compiler) traduce il file .ui generati dal Designer in classi C++. Questo tool viene configurato automaticamente da qmake.

moc

Il moc (meta object compiler) crea meta-oggetti che descrivono le classi con segnali e slot. Questo tool viene configurato automaticamente da qmake.

linguist

Il Linguist utilizza i tool lrelease ed lupdate. Vengono usati per internazionalizzare (i18n) le applicazioni Qt. Questo aspetto verra' trattato in un altro capitolo.

Riassunto

Esercizi

  1. Assicuratevi di avere un ambiente Qt funzionante.

Letture consigliate

This is a part of digitalfanatics.org and is valid XHTML.