Archive for » June, 2009 «

Qt Logo

User Interface Compiler (comando Linux: uic)

UIC è lo strumento che traduce i files .ui generati da designer (sintassi XML) in codice C++.

Meta Object Compiler (comando Linux: moc)

Il meta object compiler è lo strumento che partendo dalle classi C++ generate dallo UIC, crea i meta oggetti C++, necessari al funzionamento e alla comunicazione tra le classi della nostra applicazione Qt.

Qt make (comando Linux: qmake)
Un’applicazione Qt è composta dai files sorgenti, dalle librerie, dai files generati dallo UIC e dal MOC e dai files di internazionalizzazione. L’esigenza di mantenere il codice portabile su diverse piattaforme, porta alla creazione di un numero elevato di files e di conseguenza aumenta rapidamente la complessità del makefile.
Lo scopo di qmake è appunto quello di semplificare la gestione di un progetto, nascondendo i dettagli legati al sistema operativo. A titolo di esempio, viene qui di seguito presentata la sequenza di comandi da eseguire per generare il makefile di un semplice progetto Qt.
Per prima cosa occorre portarsi nella directory contenente i files sorgenti della nostra applicazione e da lì digitando il comando qmake-project si richiede al Qt make di eseguire l’analisi di tutti i files contenuti nella directory. A seguito di questa analisi, qmake produrrà il file di progetto con estensione .pro da usare successivamente per la creazione del makefile vero e proprio.
Digitando qmake nome_file_generato.pro si otterrà la creazione del file “makefile” da usare per creare la nostra applicazione, in altre parole, digitando il comando make -f makefile o semplicemente make, avvieremo il nostro make sul file makefile lanciando automaticamente tutti i tools (ad esempio uic, moc, gcc) necessari a generare il nostro eseguibile.

Riassumendo, le operazioni da compiere sono:


qmake -project
qmake nome_file_generato.pro
make

  • Share/Bookmark
Qt Logo

Qt Logo

Il 25 giugno 2009, Nokia ha rilasciato con licenza GNU LGPL v. 2.1 e GPL v.3, il Technology Preview di Qt per S60, il nuovo porting del toolkit Qt per il sistema operativo Symbian.

Questo technology preview, disponibile sia per utenti commerciali, sia per la comunità open source, è stato rilasciato da Nokia per consentire la sua valutazione e per ricevere un feedback dalla comunità di sviluppatori. Attualmente esso è stato basato sulla versione 4.5; la versione ufficiale, prevista per fine 2009 sarà presumibilmente basata su Qt 4.6.

Benchè basato sulle Qt 4.5, il technology preview contiene queste funzionalità:
•    Partial Qt Webkit integration
•    Support for SQL
•    Improved exceptions safety for Qt Core library
•    Binary installer for emulator and phone
•    Overall performance improvements

Grazie al porting di sulla piattaforma S60, con Qt è  possibile:
•    Sviluppare applicazioni per 80 milioni di dispositivi basati su S60
•    Rilasciare applicazioni Qt per Windows CE ed embedded Linux
•    Portare applicazioni Qt per S60 su MS Windows, Mac e Unix/Linux

Il technology preview può essere scaricato da questo indirizzo oppure dal repository GIT.

  • Share/Bookmark

Per entrambi i toolkit, il sistema di gestione delle finestre sottostante (X-Window per Motif e MS Windows per MFC – Microsoft Foundation Classes), fornisce al software applicativo indicazioni molto “primitive” delle interazioni con l’utente. Ad esempio, le informazioni riportate possono essere del tipo: “l’utente ha premuto il tasto T”, oppure, “l’utente ha premuto il bottone sinistro del mouse alle coordinate 320, 320”. Come si può capire, partendo da queste informazioni basilari, costruire un’applicazione dotata di interfaccia uomo macchina molto complessa, richiede un tempo notevole ed inoltre tenere sotto controllo un numero elevato di dettagli di basso livello, dovuti alla natura della piattaforma sottostante, è spesso causa di errori e inevitabilmente si traduce in tempi di sviluppo (e debugging) molto lunghi.
L’esigenza di semplificare la programmazione della piattaforma grafica (il window manager) ha portato quindi alla creazione dei due toolkit prima citati, che sono divenuti nel tempo il riferimento per il mondo Windows e il mondo UNIX. Ciascun toolkit ha presentato la propria soluzione ai problemi tipici di programmazione di una interfaccia grafica e come spesso accade, nessuno sforzo è stato compiuto per uniformare i due ambienti. Come risultato, abbiamo ora due toolkit grafici completamente svincolati e incompatibili tra loro, per cui scrivere un’applicazione per entrambi i sistemi operativi (MS Windows e UNIX-Motif) richiede la stesura di due interfacce utentie completamente diverse, con grande spreco di risorse per lo sviluppo e il test.
Per dare un esempio tangibile di questa diversità, vediamo come è stato risolto dai due toolkit il problema della comunicazione e vedremo infine come è stato risolto il problema dai Troll in modo elegante e “platform-independent” (indipendente dalla piattaforma).

Motif
Motif implementa la comunicazione tramite il meccanismo detto a “callback”. Le callback sono funzioni C, dotate di argomenti di chiamata predefiniti e vengono “registrate” (in pratica si registra il puntatore alla funzione callback da chiamare a fronte di un evento del mouse) all’interno di ogni componente grafico (o widget, nella terminologia Motif). Chiaramente, ogni widget Motif, deve riconoscere un preciso numero di callback, così come deve conoscerne il tipo e tutti i parametri (compreso il tipo dei parametri stessi). Tornando al nostro esempio di partenza, un bottone Motif riconoscerà quindi le funzioni di callback per gli eventi di pressione, rilascio e click del mouse.
Supponiamo ora che un bottone Motif venga premuto, il codice al suo interno andrà a verificare di quale evento si tratta, lo riconoscerà e chiamerà la funzione di callback associata o meglio la chiamerà usando il suo puntatore a funzione (il cui indirizzo è stato memorizzato in precedenza durante l’operazione di registrazione). Lo svantaggio principale di questa implementazione è che se la funzione callback (scritta dal programmatore applicativo e quindi situato sopra il toolkit stesso) non è perfettamente in linea con quanto si attende il toolkit, supponiamo ad esempio che un parametro sia un array e che il numero di elementi non sia uguale tra quanto si attende il toolkit e quanto è stato scritto dal programmatore applicativo, allora l’applicazione potrebbe bloccarsi e andare in crash (sappiamo infatti che i compilatori C non eseguono controlli sulle dimensioni degli array)
MFC
MFC impiega invece delle macro precostruite per realizzare il collegamento tra gli eventi forniti dal gestore delle finestre, chiamati anche messaggi nella terminologia Windows, con i metodi C++ (che sono praticamente funzioni callback) per la gestione degli eventi. Uno degli svantaggi principali che tutti i programmatori MFC hanno sperimentato è la complessità del “message system” di MS Windows, anche quando ci si avvale degli ambienti di sviluppo integrato e dei wizard per la creazione di finestre di dialogo basandosi su template.

  • Share/Bookmark