Lezione Qt 1: Creare un semplice progetto
Premetto che sono uno dei più scarsi programmatori della Terra e che quindi non voglio insegnare nulla a nessuno, però cerco di condividere quelle poche cose che so a tutti voi. Inoltre non è detto che farò altre lezioni, però per eventuali altre lezioni, il titolo sarà del tipo “Lezione Qt n: ….”. Detto questo, vediamo come creare un semplice progettino con le Qt4.
Come prima cosa, bisogna aver installato le Qt4.x e in questa sede non farò di certo vedere come installare le librerie e impostare tutte le eventuali dipendenze (compilatore c++, make, ecc). Assumo per scontato che le liberie Qt4 (occhio alla versione) siano installate correttamente.
Il nostro intento sarà quello di creare una piccola finestra che ha diversi componenti grafici: un’area testo, un bottone e una label. Lo scopo sarà quello di far visualizzare nella label il testo che scriveremo nell’area di testo dopo aver premuto l’apposito bottone.
Chi viene dalla programmazione Java e da diversi IDE come Netbeans, inizialmente si troverà (probabilmente) un pochino a disagio.
La prima cosa da fare, è la creazione di una directory per avere un po’ di pulizia. Metteremo tutto ciò che ci serve, all’interno di tale cartella.
Per disegnare la finestra, ci baseremo su designer, il magnifico programma che permette di disegnare GUI in maniera veloce e soprattutto facile… molto meglio del netbeans. Nel video qua sotto, vedremo come creare un file di finestra, che non sarà altro che un banale file XML.
Il file della finestra “finestra.ui” sarà processato in fase di compilazione in un file sorgente C++ (per l’esattezza, verrà chiamato “ui_finestra.h”).
Per usare la finestra, bisogna crearsi 2 file: “finestra.h” che conterrà la definizione della classe Finestra che creeremo, e il file “finestra.cpp” che conterrà le relative implementazioni.
La classe Finestra erediterà da 2 altre classi: da QMainWindow (che è la classe per le finestre in generale) e dalla classe Ui::MainWindow (ossia la classe MainWindow all’interno del namespace Ui che sarà generato dal file finestra.ui).
class Finestra : public QMainWindow, public Ui::MainWindow
Inoltre la classe conterrà uno “slot“, ossia un metodo normale che viene eseguito se un particolare “signal” viene attivato o generato. La macro Q_OBJECT è indispensabile per trattare questo tipo di cose.
public slots:
void stampaVideo();
Questi 2 concetti sono nuovi rispetto al Java, ma non è così difficile entrare nella logica. Un signal può essere paragonato ad un evento di “clicked” del mouse, oppure alla chiusura di una finestra, e così via. C’è da dire che un metodo slot può essere anche chiamato manualmente all’interno del codice, ma un signal non può far eseguire un metodo non slot.
Nel file di implementazione, verrà richiamato il metodo di inizializzazione componenti grafici della finestra, mediante la chiamata al metodo setupUi.
setupUi(this);
Per far si che il metodo venga chiamato al momento della pressione del bottone, è necessario “connettere” fisicamente il signal e lo slot, mediante il metodo “connect”:
connect(pushButtonScrivi, SIGNAL(clicked()), this, SLOT(stampaVideo()));
All’interno del metodo stampaVideo() metteremo il codice per prendere il testo dall’area di testo e successivamente visualizzarla nella label appena sopra.
Fatto tutto, saremo pronti alla compilazione del progetto. I passi da fare saranno 3:
qmake -project(Serve per la creazione del file .pro del progetto. Nelle prossime lezioni, useremo file file.pro fatti da noi);qmake(Serve per la generazione del Makefile);make(Genera i file sorgenti dai file.ui, compila i file.src e crea il binario).
Alla fine, avremo nella directory corrente, il nostro eseguibile funzionante.

18 Aprile 2008 @ 21:59 alle 21:59
“..Inoltre non è detto che farò altre lezioni..”
Spero vivamente che tu continui con queste lezioni!
Molto interessante… mi sei di grandissimo aiuto!
Grazie e continua così!
18 Aprile 2008 @ 23:38 alle 23:38
fantastico!!
19 Aprile 2008 @ 0:22 alle 0:22
Sono una manna dal cielo le tue parole.
Io vorrei che tu continuassi sono molto inteeressato a programmare con qt, ci ho provato ogni tanto, ma non ho mai capito il meccanissmo, anche perché non ho mai trovato documentazione al rigurdo in italiano. Anzi se cé ne sarei pronto a studiarla anche se cartacea.
Grazie e complimenti.
19 Aprile 2008 @ 12:07 alle 12:07
Grandissimo !!!!!
grande montoda !! appena finisco sto scalpo de progetti in java me crepo cn le QT ! complimenti e continua così che sei di aiuto per tantissimi apprendisti programmatori
19 Aprile 2008 @ 19:59 alle 19:59
@tutti
Grazie veramente