SlideShare a Scribd company logo
Mini Guide Qt

                       Creare un custom widget plugin
                                          per Qt Designer


Premessa
Questa presentazione è rilasciata sotto Licenza
Creative Commons: Attribution-NonCommercial-NoDerivativeWorks
(http://creativecommons.org/licenses/by-nc-nd/3.0/deed.it).

Questo documento può quindi essere riprodotto senza violare nessuna legge, sia in versione elettronica, sia in
versione cartacea, purché sia riprodotto integralmente in tutte le sue parti, compresa la pagina che contiene queste
informazioni:

Versione originale scaricabile dal sito
http://www.sereno-online.com/site/

Tutti i marchi riportati in questa pubblicazione appartengono ai rispettivi proprietari.



Link Utili
Qui di seguito riporto alcuni link utili per chi usa quotidianamente l’ambiente di sviluppo Qt e vuole confrontarsi con
altri sviluppatore, utenti e semplici appassionati di questo toolkit gratuito ed open source.



Gruppo Programmatori Italiani Qt Software (GPIQt)

http://www.facebook.com/inbox/?ref=mb#/group.php?gid=81561439535



qt in Italy

http://qt-apps.org/groups/?id=17



qtitaliantranslators

http://gitorious.org/+qtitaliantranslators




Autore P. Sereno                                                                  http://www.sereno-online.com/site
Mini Guide Qt



Uso del C++ per scrivere applicazioni Qt
Per essere sicuri che la nostra competenza di C++ sia sufficiente per la programmazione delle
librerie Qt, facciamo un piccolo ripasso dei concetti principali che ci saranno utili nella lettura dei
prossimi articoli; come detto, si tratta di una semplice rassegna di concetti che incontreremo nella
nostra presentazione, questo non vuol essere un tutorial C++ esaustivo e dettagliato.



Classi
Trattandosi di una libreria di classi, Qt ne fa chiaramente uso.
Il linguaggio C++ fornisce la possibilità di creare nuove classi nello stesso modo in cui permette di
creare nuovi tipi, possiamo affermare che una classe è un nuovo tipo definito dall’utente. Gli oggetti
di una classe vengono creati ed inizializzati mediante funzioni proprie dichiarate esplicitamente a
questo scopo, tali funzioni prendono il nome di “costruttori”. Una funzione propria di una classe
può anche avere lo scopo di cancellare ogni oggetto di una classe quando questa viene distrutta,
questa seconda funzione prende il nome di “distruttore”.
Una classe può quindi essere vista come un nuovo tipo, caratterizzato di informazioni interne, dette
anche proprietà ed un insieme di operazioni ristretto e ben definito (metodi) per agire su di esse. In
altre parole consideriamo una classe come una scatola nera in cui le operazioni su di essa
avvengono solamente attraverso quell’insieme di operazioni.
Un esempio tipico di classe può essere una tabella, che poi è l’elemento base su cui si costruiscono
tutte le applicazioni di tipo “foglio elettronico”, essa presenterà almeno un’operazione (detto anche
metodo) di inserimento, un metodo per verificare se un particolare elemento è stato inserito, alcuni
metodi di ordinamento ed infine un metodo per eliminare uno o più elementi della tabella. La
documentazione di corredo fornita con il toolkit Qt illustra i dettagli e fornisce inoltre alcuni esempi
di utilizzo della classe tabella (QTable).
Occorre inoltre ricordare che è sempre possibile ottenere l’indirizzo di un oggetto, questo permette
quindi di applicare tutte le regole sui puntatori già viste nel linguaggio C. Qt fa largo uso di
puntatori ad oggetti, in particolare nel passaggio di parametri.
Per convenzione, i nomi delle classi Qt sono rappresentativi della classe stessa e iniziano tutti con la
lettera Q maiuscola (ad esempio le classi QApplication, QPushButton).

Derivazione di classi
Un concetto importante della programmazione ad oggetti, ovvero la derivazione di classi, sta alla
base della programmazione Qt. Derivare una classe è un meccanismo semplice, flessibile ed
efficiente per definirne una nuova, partendo da una esistente ed aggiungendo ad essa nuovi metodi e
proprietà.
Il concetto di derivazione di classi è ampiamente impiegato quando si vogliono realizzare custom
widget, ossia controlli grafici che, partendo da quelli di base offerti da Qt, introducono nuove
funzioni e comportamenti.

Metodi di accesso
Qt ne fa pesantemente uso. Non sono altro che metodi per accedere alle proprietà interne di un
oggetto (metodi get) o impostarle (metodi set). Per convenzione i nomi dei metodi di accesso sono
rappresentativi della funzione svolta ed iniziano con le parole get (dal verbo To Get, ovvero,
ottenere) e set (dal verbo To Set, impostare). Un esempio che possiamo citare è il metodo
setMainWindow, che è il primo metodo che impariamo ad usare nel nostro esempio di fine articolo.

Autore P. Sereno                                                      http://www.sereno-online.com/site
Mini Guide Qt
Funzioni virtuali
Le funzioni virtuali consentono ai programmatori di dichiarare funzioni in una classe base che
possano essere ridefinite in ogni classe derivata.
Qt usa le funzioni virtuali per inviare notifica degli eventi, provenienti dal sistema di gestione delle
finestre, agli oggetti che compongono l’interfaccia utente.

Overloading di operatori
Qt esegue l’overload di alcuni operatori, ad esempio è possibile passare come parametro la classe
QString (classe Qt incaricata di gestire le stringhe testuali), a tutte quelle funzioni che si aspettano
come parametro const char*. In questo caso, esisterà un operatore che automaticamente convertirà il
parametro di tipo QString nel parametro puntatore const char*.




Considerazioni finali
Questa è la terza lezione di un ciclo che verrà reso disponibile gratuitamente in Internet sul sito

http://www.sereno-online.com/site

A partire da questa lezione le cose si fanno più complicate, servirà quindi più tempo per capirle e per fare sul codice
diverse prove.

Ogni vostro commento o richiesta di informazioni rappresenta un utile punto di partenza per nuove lezioni o
miglioramenti.



Buon divertimento!

Paolo




Autore P. Sereno                                                                  http://www.sereno-online.com/site

More Related Content

What's hot

Qt Lezione1: Creare una dialog Window con Qt Creator in 10 semplici passi
Qt Lezione1: Creare una dialog Window con Qt Creator  in 10 semplici passiQt Lezione1: Creare una dialog Window con Qt Creator  in 10 semplici passi
Qt Lezione1: Creare una dialog Window con Qt Creator in 10 semplici passi
Paolo Sereno
 
Installazione Qt/Qt Quick per target Android
Installazione Qt/Qt Quick  per target AndroidInstallazione Qt/Qt Quick  per target Android
Installazione Qt/Qt Quick per target Android
Paolo Sereno
 
Installazione Qt 4.5.3 per Ms Windows
Installazione Qt 4.5.3 per Ms WindowsInstallazione Qt 4.5.3 per Ms Windows
Installazione Qt 4.5.3 per Ms Windows
Paolo Sereno
 
GUI in Gtk+ con Glade & Anjuta
GUI in Gtk+ con Glade & AnjutaGUI in Gtk+ con Glade & Anjuta
GUI in Gtk+ con Glade & Anjuta
delfinostefano
 
C(99) gtk 01 - introduzione e finestre
C(99) gtk   01 - introduzione e finestreC(99) gtk   01 - introduzione e finestre
C(99) gtk 01 - introduzione e finestre
Maurizio Carboni
 
Introduzione alla programmazione android - Android@tulug lezione 3
Introduzione alla programmazione android - Android@tulug lezione 3Introduzione alla programmazione android - Android@tulug lezione 3
Introduzione alla programmazione android - Android@tulug lezione 3
Ivan Gualandri
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulug
Ivan Gualandri
 
Installazione Eclipse Cdt Per Qt
Installazione Eclipse Cdt Per QtInstallazione Eclipse Cdt Per Qt
Installazione Eclipse Cdt Per Qt
Paolo Sereno
 
C(99) gtk 03 - le immagini
C(99) gtk   03 - le immaginiC(99) gtk   03 - le immagini
C(99) gtk 03 - le immagini
Maurizio Carboni
 
Chakra 2012.9 rec
Chakra 2012.9 recChakra 2012.9 rec
Chakra 2012.9 reckdekda
 
C(99) gtk 04 - label,button e entry
C(99) gtk   04 - label,button e entryC(99) gtk   04 - label,button e entry
C(99) gtk 04 - label,button e entry
Maurizio Carboni
 
Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2
Ivan Gualandri
 
Qt Platform Abstraction
Qt Platform AbstractionQt Platform Abstraction
Qt Platform Abstraction
QT-day
 
Introduzione a Latex
Introduzione a LatexIntroduzione a Latex
Introduzione a Latex
Ivan Gualandri
 
Webkit presentazione ufficiale
Webkit presentazione ufficialeWebkit presentazione ufficiale
Webkit presentazione ufficialeintoinside
 

What's hot (15)

Qt Lezione1: Creare una dialog Window con Qt Creator in 10 semplici passi
Qt Lezione1: Creare una dialog Window con Qt Creator  in 10 semplici passiQt Lezione1: Creare una dialog Window con Qt Creator  in 10 semplici passi
Qt Lezione1: Creare una dialog Window con Qt Creator in 10 semplici passi
 
Installazione Qt/Qt Quick per target Android
Installazione Qt/Qt Quick  per target AndroidInstallazione Qt/Qt Quick  per target Android
Installazione Qt/Qt Quick per target Android
 
Installazione Qt 4.5.3 per Ms Windows
Installazione Qt 4.5.3 per Ms WindowsInstallazione Qt 4.5.3 per Ms Windows
Installazione Qt 4.5.3 per Ms Windows
 
GUI in Gtk+ con Glade & Anjuta
GUI in Gtk+ con Glade & AnjutaGUI in Gtk+ con Glade & Anjuta
GUI in Gtk+ con Glade & Anjuta
 
C(99) gtk 01 - introduzione e finestre
C(99) gtk   01 - introduzione e finestreC(99) gtk   01 - introduzione e finestre
C(99) gtk 01 - introduzione e finestre
 
Introduzione alla programmazione android - Android@tulug lezione 3
Introduzione alla programmazione android - Android@tulug lezione 3Introduzione alla programmazione android - Android@tulug lezione 3
Introduzione alla programmazione android - Android@tulug lezione 3
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulug
 
Installazione Eclipse Cdt Per Qt
Installazione Eclipse Cdt Per QtInstallazione Eclipse Cdt Per Qt
Installazione Eclipse Cdt Per Qt
 
C(99) gtk 03 - le immagini
C(99) gtk   03 - le immaginiC(99) gtk   03 - le immagini
C(99) gtk 03 - le immagini
 
Chakra 2012.9 rec
Chakra 2012.9 recChakra 2012.9 rec
Chakra 2012.9 rec
 
C(99) gtk 04 - label,button e entry
C(99) gtk   04 - label,button e entryC(99) gtk   04 - label,button e entry
C(99) gtk 04 - label,button e entry
 
Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2
 
Qt Platform Abstraction
Qt Platform AbstractionQt Platform Abstraction
Qt Platform Abstraction
 
Introduzione a Latex
Introduzione a LatexIntroduzione a Latex
Introduzione a Latex
 
Webkit presentazione ufficiale
Webkit presentazione ufficialeWebkit presentazione ufficiale
Webkit presentazione ufficiale
 

Viewers also liked

Integrazione QML / C++
Integrazione QML / C++Integrazione QML / C++
Integrazione QML / C++
Paolo Sereno
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxDeveler S.r.l.
 
Qt Creator: the secret weapon of any c++ programmer
Qt Creator: the secret weapon of any c++ programmerQt Creator: the secret weapon of any c++ programmer
Qt Creator: the secret weapon of any c++ programmer
Develer S.r.l.
 
Qt roadmap: the future of Qt
Qt roadmap: the future of QtQt roadmap: the future of Qt
Qt roadmap: the future of Qt
Develer S.r.l.
 
Qt Quick GUI Programming with PySide
Qt Quick GUI Programming with PySideQt Quick GUI Programming with PySide
Qt Quick GUI Programming with PySide
pycontw
 
Creating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtCreating Slick User Interfaces With Qt
Creating Slick User Interfaces With Qt
Espen Riskedal
 

Viewers also liked (6)

Integrazione QML / C++
Integrazione QML / C++Integrazione QML / C++
Integrazione QML / C++
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
 
Qt Creator: the secret weapon of any c++ programmer
Qt Creator: the secret weapon of any c++ programmerQt Creator: the secret weapon of any c++ programmer
Qt Creator: the secret weapon of any c++ programmer
 
Qt roadmap: the future of Qt
Qt roadmap: the future of QtQt roadmap: the future of Qt
Qt roadmap: the future of Qt
 
Qt Quick GUI Programming with PySide
Qt Quick GUI Programming with PySideQt Quick GUI Programming with PySide
Qt Quick GUI Programming with PySide
 
Creating Slick User Interfaces With Qt
Creating Slick User Interfaces With QtCreating Slick User Interfaces With Qt
Creating Slick User Interfaces With Qt
 

Similar to Qt Lezione0: uso del C++ per scrivere applicazioni Qt

PyPaPi Qt Java Framework
PyPaPi Qt Java FrameworkPyPaPi Qt Java Framework
PyPaPi Qt Java Framework
Tiziano Lattisi
 
Design Pattern
Design PatternDesign Pattern
Design Pattern
Giuseppe Dell'Abate
 
Corso java
Corso javaCorso java
Corso java
Riccardo Grutteria
 
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
Alex Ronci
 
Vb.Net
Vb.NetVb.Net
Qt 4.5.3 con Visual C++ Express 2008 (edizione gratuita!)
Qt 4.5.3 con Visual C++ Express 2008 (edizione gratuita!)Qt 4.5.3 con Visual C++ Express 2008 (edizione gratuita!)
Qt 4.5.3 con Visual C++ Express 2008 (edizione gratuita!)
Paolo Sereno
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5
Matteo Baccan
 
Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)lukebonham
 
Java OCA teoria 1
Java OCA teoria 1Java OCA teoria 1
Java OCA teoria 1
Valerio Radice
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Simulatore Grafico Per Reti Ottiche A Pacchetto
Simulatore Grafico Per Reti Ottiche A PacchettoSimulatore Grafico Per Reti Ottiche A Pacchetto
Simulatore Grafico Per Reti Ottiche A PacchettoFedele Mantuano
 
Java&Solidarieta
Java&SolidarietaJava&Solidarieta
Java&Solidarieta
Andrea Del Bene
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8
Valerio Radice
 
Corso pratico di C# - 2013
Corso pratico di C# - 2013Corso pratico di C# - 2013
Corso pratico di C# - 2013
Matteo Valoriani
 
Community Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure OverviewCommunity Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure OverviewFabio Cozzolino
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?
Giorgio Di Nardo
 
Ubuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e ConvergenzaUbuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e Convergenza
Giulio Collura
 
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Marcello Missiroli
 

Similar to Qt Lezione0: uso del C++ per scrivere applicazioni Qt (20)

PyPaPi Qt Java Framework
PyPaPi Qt Java FrameworkPyPaPi Qt Java Framework
PyPaPi Qt Java Framework
 
Design Pattern
Design PatternDesign Pattern
Design Pattern
 
Corso java
Corso javaCorso java
Corso java
 
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
PROGETTAZIONE E SVILUPPO DI UN FRAMEWORK DI SUPPORTO IN AMBIENTE AZIENDALE SU...
 
Vb.Net
Vb.NetVb.Net
Vb.Net
 
Qt 4.5.3 con Visual C++ Express 2008 (edizione gratuita!)
Qt 4.5.3 con Visual C++ Express 2008 (edizione gratuita!)Qt 4.5.3 con Visual C++ Express 2008 (edizione gratuita!)
Qt 4.5.3 con Visual C++ Express 2008 (edizione gratuita!)
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5
 
Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)Lezione design patterns 2011 (Peron)
Lezione design patterns 2011 (Peron)
 
Java OCA teoria 1
Java OCA teoria 1Java OCA teoria 1
Java OCA teoria 1
 
Ddive Xpage852
Ddive Xpage852Ddive Xpage852
Ddive Xpage852
 
Simulatore Grafico Per Reti Ottiche A Pacchetto
Simulatore Grafico Per Reti Ottiche A PacchettoSimulatore Grafico Per Reti Ottiche A Pacchetto
Simulatore Grafico Per Reti Ottiche A Pacchetto
 
Java&Solidarieta
Java&SolidarietaJava&Solidarieta
Java&Solidarieta
 
Corso Java
Corso JavaCorso Java
Corso Java
 
Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8
 
Corso pratico di C# - 2013
Corso pratico di C# - 2013Corso pratico di C# - 2013
Corso pratico di C# - 2013
 
Community Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure OverviewCommunity Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure Overview
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?
 
Ubuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e ConvergenzaUbuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e Convergenza
 
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)Programmazione a oggetti tramite la macchina del caffé (pt. 2)
Programmazione a oggetti tramite la macchina del caffé (pt. 2)
 

Qt Lezione0: uso del C++ per scrivere applicazioni Qt

  • 1. Mini Guide Qt Creare un custom widget plugin per Qt Designer Premessa Questa presentazione è rilasciata sotto Licenza Creative Commons: Attribution-NonCommercial-NoDerivativeWorks (http://creativecommons.org/licenses/by-nc-nd/3.0/deed.it). Questo documento può quindi essere riprodotto senza violare nessuna legge, sia in versione elettronica, sia in versione cartacea, purché sia riprodotto integralmente in tutte le sue parti, compresa la pagina che contiene queste informazioni: Versione originale scaricabile dal sito http://www.sereno-online.com/site/ Tutti i marchi riportati in questa pubblicazione appartengono ai rispettivi proprietari. Link Utili Qui di seguito riporto alcuni link utili per chi usa quotidianamente l’ambiente di sviluppo Qt e vuole confrontarsi con altri sviluppatore, utenti e semplici appassionati di questo toolkit gratuito ed open source. Gruppo Programmatori Italiani Qt Software (GPIQt) http://www.facebook.com/inbox/?ref=mb#/group.php?gid=81561439535 qt in Italy http://qt-apps.org/groups/?id=17 qtitaliantranslators http://gitorious.org/+qtitaliantranslators Autore P. Sereno http://www.sereno-online.com/site
  • 2. Mini Guide Qt Uso del C++ per scrivere applicazioni Qt Per essere sicuri che la nostra competenza di C++ sia sufficiente per la programmazione delle librerie Qt, facciamo un piccolo ripasso dei concetti principali che ci saranno utili nella lettura dei prossimi articoli; come detto, si tratta di una semplice rassegna di concetti che incontreremo nella nostra presentazione, questo non vuol essere un tutorial C++ esaustivo e dettagliato. Classi Trattandosi di una libreria di classi, Qt ne fa chiaramente uso. Il linguaggio C++ fornisce la possibilità di creare nuove classi nello stesso modo in cui permette di creare nuovi tipi, possiamo affermare che una classe è un nuovo tipo definito dall’utente. Gli oggetti di una classe vengono creati ed inizializzati mediante funzioni proprie dichiarate esplicitamente a questo scopo, tali funzioni prendono il nome di “costruttori”. Una funzione propria di una classe può anche avere lo scopo di cancellare ogni oggetto di una classe quando questa viene distrutta, questa seconda funzione prende il nome di “distruttore”. Una classe può quindi essere vista come un nuovo tipo, caratterizzato di informazioni interne, dette anche proprietà ed un insieme di operazioni ristretto e ben definito (metodi) per agire su di esse. In altre parole consideriamo una classe come una scatola nera in cui le operazioni su di essa avvengono solamente attraverso quell’insieme di operazioni. Un esempio tipico di classe può essere una tabella, che poi è l’elemento base su cui si costruiscono tutte le applicazioni di tipo “foglio elettronico”, essa presenterà almeno un’operazione (detto anche metodo) di inserimento, un metodo per verificare se un particolare elemento è stato inserito, alcuni metodi di ordinamento ed infine un metodo per eliminare uno o più elementi della tabella. La documentazione di corredo fornita con il toolkit Qt illustra i dettagli e fornisce inoltre alcuni esempi di utilizzo della classe tabella (QTable). Occorre inoltre ricordare che è sempre possibile ottenere l’indirizzo di un oggetto, questo permette quindi di applicare tutte le regole sui puntatori già viste nel linguaggio C. Qt fa largo uso di puntatori ad oggetti, in particolare nel passaggio di parametri. Per convenzione, i nomi delle classi Qt sono rappresentativi della classe stessa e iniziano tutti con la lettera Q maiuscola (ad esempio le classi QApplication, QPushButton). Derivazione di classi Un concetto importante della programmazione ad oggetti, ovvero la derivazione di classi, sta alla base della programmazione Qt. Derivare una classe è un meccanismo semplice, flessibile ed efficiente per definirne una nuova, partendo da una esistente ed aggiungendo ad essa nuovi metodi e proprietà. Il concetto di derivazione di classi è ampiamente impiegato quando si vogliono realizzare custom widget, ossia controlli grafici che, partendo da quelli di base offerti da Qt, introducono nuove funzioni e comportamenti. Metodi di accesso Qt ne fa pesantemente uso. Non sono altro che metodi per accedere alle proprietà interne di un oggetto (metodi get) o impostarle (metodi set). Per convenzione i nomi dei metodi di accesso sono rappresentativi della funzione svolta ed iniziano con le parole get (dal verbo To Get, ovvero, ottenere) e set (dal verbo To Set, impostare). Un esempio che possiamo citare è il metodo setMainWindow, che è il primo metodo che impariamo ad usare nel nostro esempio di fine articolo. Autore P. Sereno http://www.sereno-online.com/site
  • 3. Mini Guide Qt Funzioni virtuali Le funzioni virtuali consentono ai programmatori di dichiarare funzioni in una classe base che possano essere ridefinite in ogni classe derivata. Qt usa le funzioni virtuali per inviare notifica degli eventi, provenienti dal sistema di gestione delle finestre, agli oggetti che compongono l’interfaccia utente. Overloading di operatori Qt esegue l’overload di alcuni operatori, ad esempio è possibile passare come parametro la classe QString (classe Qt incaricata di gestire le stringhe testuali), a tutte quelle funzioni che si aspettano come parametro const char*. In questo caso, esisterà un operatore che automaticamente convertirà il parametro di tipo QString nel parametro puntatore const char*. Considerazioni finali Questa è la terza lezione di un ciclo che verrà reso disponibile gratuitamente in Internet sul sito http://www.sereno-online.com/site A partire da questa lezione le cose si fanno più complicate, servirà quindi più tempo per capirle e per fare sul codice diverse prove. Ogni vostro commento o richiesta di informazioni rappresenta un utile punto di partenza per nuove lezioni o miglioramenti. Buon divertimento! Paolo Autore P. Sereno http://www.sereno-online.com/site