SlideShare a Scribd company logo
Qt Quick for dynamic UI
      development




Gianni Valdambrini (aleister@develer.com)
Qt Quick
   Qt Quick è un framework pensato appositamente per
    costruire UI dinamiche per dispositivi mobili o
    touchscreen.

   E' realizzato “sopra” le Qt in modo da sfruttarne i pregi
    ed ereditarne le funzionalità (es: accelerazione
    hardware, internazionalizzazione, risorse, ecc..).

   Nasce con l'idea di rendere (finalmente!) semplice la
    collaborazione fra designer e programmatori.




                                                                2
Cos'è QML?
   E' un linguaggio dichiarativo utilizzato da Qt Quick,
    costruito come estensione di JavaScript.

   Fornisce un'alta integrazione con il Qt Object Model

   Supporta la network transparency e i property
    bindings.

   Permette di realizzare applicazioni miste QML/C++ o
    migrazioni graduali.



                                                            3
Un linguaggio dichiarativo
   Piuttosto che descrivere come cambiare la UI in modo
    imperativo (setta quello, fai quell'altro) descrive la UI
    in termini di proprietà (quell'altezza è sempre la
    metà di quell'altra).
      Rectangle {
          width: 200
          height: 200
          color: "white"
          Rectangle {
              width: parent.width
              heigth: parent.width / 2
              color: “red”
              anchors.top: parent.top
          }
      }




                                                                4
Gli Elementi
   La UI è composta da uno o più elementi di vario tipo,
    ciascuno dei quali avente determinate proprietà.


   E' possibile utilizzare gli elementi predefiniti in QML
    oppure definirne di nuovi, chiamati componenti.
            Ogni componente andrà definito in un file
              separato, chiamato documento QML.
            Un componente dovrebbe essere strutturato in
              modo da essere riusabile!

   Gli elementi possono essere caricati anche
    dinamicamente, attraverso le funzioni JavaScript
    createComponent e createQmlObject                         5
Gli Elementi
   Non tutti gli elementi sono visuali, alcuni sono logici e
    possono implementare svariate funzionalità.

   Alcuni dei principali elementi predefiniti:
            Item, Rectangle, Image, Text, TextInput, TextEdit
            PropertyAnimation, NumberAnimation, ..
            Timer, MouseArea, GestureArea
            ListView, PathView, GridView

   Ma sono solo questi?


                                                                 6
Gli Elementi
   Non tutti gli elementi sono visuali, alcuni sono logici e
    possono implementare svariate funzionalità.

   Alcuni dei principali elementi predefiniti:
            Item, Rectangle, Image, Text, TextInput, TextEdit
            PropertyAnimation, NumberAnimation, ..
            Timer, MouseArea, GestureArea
            ListView, PathView, GridView

   Ma sono solo questi? Qml components!


                                                                 7
Le proprietà
   Ogni componente è rappresentato dagli elementi che lo
    compongono e dalle proprietà definite in esso.

   Tali proprietà possono essere “ereditate” oppure
    possono essere definite ex-novo.


   La definizione di una nuova proprietà implicitamente
    definisce anche un segnale al quale è possibile
    registrarsi per essere informati di un cambiamento di
    valore della proprietà stessa.



                                                            8
Le proprietà
   Le proprietà sono tipate, e come tali è possibile
    assegnare ad una proprietà solo valori dello stesso tipo.


   E' possibile creare dei bindings in modo che il valore di
    una proprietà sia in qualsiasi momento lo stesso di
    un'altra proprietà o il risultato di una funzione
    JavaScript.




                                                            9
Elementi e posizionamento
   QML mette a disposizione alcuni semplici elementi non
    visuali con il quale posizionarne altri:
            Row, Column, Grid
   In alternativa è possibile ottenere più flessibilità
    utilizzando le ancore:




                                                            10
Stati e transizioni
   La UI può avere più stati nei quali le proprietà possono
    assume diversi valori.
           Ciò che non è definito in uno stato fa parte dello
              stato di partenza, implicitamente sempre
              definito.


   Le transizioni fra stati definiscono il modo in cui le
    proprietà cambiano per passare da uno stato ad un
    altro.




                                                                 11
Stati e transizioni
   Esempio:
      Rectangle {
          function changeState() {
              page.state = page.state == "" ? "clicked" : "";
          }

          id: page
          width: 200
          height: 200
          color: "white"
          states : [
              State {
                   name: "clicked"
                   PropertyChanges { target: page; color: "red"; }
              }
          ]

          MouseArea {anchors.fill: parent; onClicked: changeState(); }
      }


                                                                         12
Alcuni tool per QML
   Designer: integrato in QtCreator dalla versione 2.1

   QMLViewer: un tool per testare le interfacce scritte
    interamente in QML (o parti di essa).

   Debugger: integrato in QtCreator.




                                                           13
Integrazione con il C++
   Qualsiasi tipo derivato da QObject può essere registrato
    ed esposto al QML come proprietà mediante l'utilizzo
    della macro qmlRegisterType.


   Attenzione a non scrivere codice QML come se fosse
    imperativo, ottenendo codice meno efficiente e più
    complesso.




                                                           14
Integrazione con il C++
   E' anche possibile chiamare da QML metodi in C++
    appartenenti a sottoclassi di QObject o agganciarsi da
    QML a segnali emessi.


   Ma è anche possibile fare il contrario, chiamando dal
    C++ metodi in QML e addirittura navigare nel tree di un
    documento QML
           Attenzione: usare solo per debug!




                                                             15
Per saperne di più
   La documentazione della versione di sviluppo:
    http://doc.qt.nokia.com/latest/qtquick.html


   La mailing list dedicata:
    http://lists.qt.nokia.com/mailman/listinfo/qt-qml

   Il blog di Qt, dove trovare news su QML e su tutto il
    mondo Qt:
    http://labs.qt.nokia.com/




                                                            16
Domande?




?          17
GRAZIE !
                                Develer S.r.l.
                             Via Mugellese 1/A
                         50013 Campi Bisenzio
                                Firenze - Italia




Contatti
Mail: info@develer.com
Phone: +39-055-3984627
Fax: +39 178 6003614
http://www.develer.com

More Related Content

Similar to Qt Quick for dynamic UI development

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
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
firenze-gtug
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Eugenio Minardi
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Wellnet srl
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
Manuel Scapolan
 
Rapido, intuitivo, potente: Qt Quick all'assalto delle User Interfaces
Rapido, intuitivo, potente: Qt Quick all'assalto delle User InterfacesRapido, intuitivo, potente: Qt Quick all'assalto delle User Interfaces
Rapido, intuitivo, potente: Qt Quick all'assalto delle User Interfaces
Alessandro La Rosa
 
LIT_2.pdf
LIT_2.pdfLIT_2.pdf
LIT_2.pdf
EleonoraRocchi1
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
Giampiero Granatella
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSMAU
 
Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteria
Mauro Servienti
 
Angular Components e Pipe
Angular Components e PipeAngular Components e Pipe
Angular Components e Pipe
CarlottaDimatteo
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
Marco Loregian
 
Il pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progettoIl pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progetto
Microsoft Mobile Developer
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
azuredayit
 
Sviluppo di App con Qt Quick: un esempio di model-view-delegate
Sviluppo di App con Qt Quick: un esempio di model-view-delegateSviluppo di App con Qt Quick: un esempio di model-view-delegate
Sviluppo di App con Qt Quick: un esempio di model-view-delegate
Paolo Sereno
 
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Maurizio Delmonte
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
Manuel Scapolan
 
Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)
K-Tech Formazione
 

Similar to Qt Quick for dynamic UI development (20)

Ubuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e ConvergenzaUbuntu Touch: Sviluppo App e Convergenza
Ubuntu Touch: Sviluppo App e Convergenza
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
 
Rapido, intuitivo, potente: Qt Quick all'assalto delle User Interfaces
Rapido, intuitivo, potente: Qt Quick all'assalto delle User InterfacesRapido, intuitivo, potente: Qt Quick all'assalto delle User Interfaces
Rapido, intuitivo, potente: Qt Quick all'assalto delle User Interfaces
 
LIT_2.pdf
LIT_2.pdfLIT_2.pdf
LIT_2.pdf
 
Il web 2.0
Il web 2.0Il web 2.0
Il web 2.0
 
Many Designs Elements
Many Designs ElementsMany Designs Elements
Many Designs Elements
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del cero
 
Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteria
 
Angular Components e Pipe
Angular Components e PipeAngular Components e Pipe
Angular Components e Pipe
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Il pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progettoIl pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progetto
 
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
Azure Day Rome 2019 Reloaded - Utilizzare Azure Kubernetes Service per i nost...
 
Sviluppo di App con Qt Quick: un esempio di model-view-delegate
Sviluppo di App con Qt Quick: un esempio di model-view-delegateSviluppo di App con Qt Quick: un esempio di model-view-delegate
Sviluppo di App con Qt Quick: un esempio di model-view-delegate
 
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)Corso Unified Modeling Language (UML)
Corso Unified Modeling Language (UML)
 

More from Develer S.r.l.

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.
 
Sw libero rf
Sw libero rfSw libero rf
Sw libero rf
Develer S.r.l.
 
Farepipi
FarepipiFarepipi
Farepipi
Develer S.r.l.
 
Cloud computing, in practice ~ develer workshop
Cloud computing, in practice ~ develer workshopCloud computing, in practice ~ develer workshop
Cloud computing, in practice ~ develer workshopDeveler S.r.l.
 
Workshop su Android Kernel Hacking
Workshop su Android Kernel HackingWorkshop su Android Kernel Hacking
Workshop su Android Kernel Hacking
Develer S.r.l.
 
BeRTOS Embedded Survey Summary 2011
BeRTOS Embedded Survey Summary 2011BeRTOS Embedded Survey Summary 2011
BeRTOS Embedded Survey Summary 2011
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 in depth
Qt Quick in depthQt Quick in depth
Qt Quick in depth
Develer S.r.l.
 
Qt licensing: making the right choice
Qt licensing: making the right choiceQt licensing: making the right choice
Qt licensing: making the right choice
Develer S.r.l.
 
Qt everywhere a c++ abstraction platform
Qt everywhere   a c++ abstraction platformQt everywhere   a c++ abstraction platform
Qt everywhere a c++ abstraction platformDeveler 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.
 
PyQt: rapid application development
PyQt: rapid application developmentPyQt: rapid application development
PyQt: rapid application development
Develer S.r.l.
 
Hybrid development using Qt webkit
Hybrid development using Qt webkitHybrid development using Qt webkit
Hybrid development using Qt webkit
Develer S.r.l.
 
Smashing the bottleneck: Qt application profiling
Smashing the bottleneck: Qt application profilingSmashing the bottleneck: Qt application profiling
Smashing the bottleneck: Qt application profiling
Develer S.r.l.
 
Crossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n systemCrossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n system
Develer S.r.l.
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded Free
Develer S.r.l.
 
BeRTOS: Free Embedded RTOS
BeRTOS: Free Embedded RTOSBeRTOS: Free Embedded RTOS
BeRTOS: Free Embedded RTOS
Develer S.r.l.
 
Develer - Company Profile
Develer - Company ProfileDeveler - Company Profile
Develer - Company Profile
Develer S.r.l.
 
Bettersoftware Feedback 2009
Bettersoftware Feedback 2009Bettersoftware Feedback 2009
Bettersoftware Feedback 2009
Develer S.r.l.
 

More from Develer S.r.l. (20)

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
 
Sw libero rf
Sw libero rfSw libero rf
Sw libero rf
 
Engagement small
Engagement smallEngagement small
Engagement small
 
Farepipi
FarepipiFarepipi
Farepipi
 
Cloud computing, in practice ~ develer workshop
Cloud computing, in practice ~ develer workshopCloud computing, in practice ~ develer workshop
Cloud computing, in practice ~ develer workshop
 
Workshop su Android Kernel Hacking
Workshop su Android Kernel HackingWorkshop su Android Kernel Hacking
Workshop su Android Kernel Hacking
 
BeRTOS Embedded Survey Summary 2011
BeRTOS Embedded Survey Summary 2011BeRTOS Embedded Survey Summary 2011
BeRTOS Embedded Survey Summary 2011
 
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 in depth
Qt Quick in depthQt Quick in depth
Qt Quick in depth
 
Qt licensing: making the right choice
Qt licensing: making the right choiceQt licensing: making the right choice
Qt licensing: making the right choice
 
Qt everywhere a c++ abstraction platform
Qt everywhere   a c++ abstraction platformQt everywhere   a c++ abstraction platform
Qt everywhere a c++ abstraction platform
 
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
 
PyQt: rapid application development
PyQt: rapid application developmentPyQt: rapid application development
PyQt: rapid application development
 
Hybrid development using Qt webkit
Hybrid development using Qt webkitHybrid development using Qt webkit
Hybrid development using Qt webkit
 
Smashing the bottleneck: Qt application profiling
Smashing the bottleneck: Qt application profilingSmashing the bottleneck: Qt application profiling
Smashing the bottleneck: Qt application profiling
 
Crossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n systemCrossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n system
 
BeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded FreeBeRTOS: Sistema Real Time Embedded Free
BeRTOS: Sistema Real Time Embedded Free
 
BeRTOS: Free Embedded RTOS
BeRTOS: Free Embedded RTOSBeRTOS: Free Embedded RTOS
BeRTOS: Free Embedded RTOS
 
Develer - Company Profile
Develer - Company ProfileDeveler - Company Profile
Develer - Company Profile
 
Bettersoftware Feedback 2009
Bettersoftware Feedback 2009Bettersoftware Feedback 2009
Bettersoftware Feedback 2009
 

Qt Quick for dynamic UI development

  • 1. Qt Quick for dynamic UI development Gianni Valdambrini (aleister@develer.com)
  • 2. Qt Quick  Qt Quick è un framework pensato appositamente per costruire UI dinamiche per dispositivi mobili o touchscreen.  E' realizzato “sopra” le Qt in modo da sfruttarne i pregi ed ereditarne le funzionalità (es: accelerazione hardware, internazionalizzazione, risorse, ecc..).  Nasce con l'idea di rendere (finalmente!) semplice la collaborazione fra designer e programmatori. 2
  • 3. Cos'è QML?  E' un linguaggio dichiarativo utilizzato da Qt Quick, costruito come estensione di JavaScript.  Fornisce un'alta integrazione con il Qt Object Model  Supporta la network transparency e i property bindings.  Permette di realizzare applicazioni miste QML/C++ o migrazioni graduali. 3
  • 4. Un linguaggio dichiarativo  Piuttosto che descrivere come cambiare la UI in modo imperativo (setta quello, fai quell'altro) descrive la UI in termini di proprietà (quell'altezza è sempre la metà di quell'altra). Rectangle { width: 200 height: 200 color: "white" Rectangle { width: parent.width heigth: parent.width / 2 color: “red” anchors.top: parent.top } } 4
  • 5. Gli Elementi  La UI è composta da uno o più elementi di vario tipo, ciascuno dei quali avente determinate proprietà.  E' possibile utilizzare gli elementi predefiniti in QML oppure definirne di nuovi, chiamati componenti.  Ogni componente andrà definito in un file separato, chiamato documento QML.  Un componente dovrebbe essere strutturato in modo da essere riusabile!  Gli elementi possono essere caricati anche dinamicamente, attraverso le funzioni JavaScript createComponent e createQmlObject 5
  • 6. Gli Elementi  Non tutti gli elementi sono visuali, alcuni sono logici e possono implementare svariate funzionalità.  Alcuni dei principali elementi predefiniti:  Item, Rectangle, Image, Text, TextInput, TextEdit  PropertyAnimation, NumberAnimation, ..  Timer, MouseArea, GestureArea  ListView, PathView, GridView  Ma sono solo questi? 6
  • 7. Gli Elementi  Non tutti gli elementi sono visuali, alcuni sono logici e possono implementare svariate funzionalità.  Alcuni dei principali elementi predefiniti:  Item, Rectangle, Image, Text, TextInput, TextEdit  PropertyAnimation, NumberAnimation, ..  Timer, MouseArea, GestureArea  ListView, PathView, GridView  Ma sono solo questi? Qml components! 7
  • 8. Le proprietà  Ogni componente è rappresentato dagli elementi che lo compongono e dalle proprietà definite in esso.  Tali proprietà possono essere “ereditate” oppure possono essere definite ex-novo.  La definizione di una nuova proprietà implicitamente definisce anche un segnale al quale è possibile registrarsi per essere informati di un cambiamento di valore della proprietà stessa. 8
  • 9. Le proprietà  Le proprietà sono tipate, e come tali è possibile assegnare ad una proprietà solo valori dello stesso tipo.  E' possibile creare dei bindings in modo che il valore di una proprietà sia in qualsiasi momento lo stesso di un'altra proprietà o il risultato di una funzione JavaScript. 9
  • 10. Elementi e posizionamento  QML mette a disposizione alcuni semplici elementi non visuali con il quale posizionarne altri:  Row, Column, Grid  In alternativa è possibile ottenere più flessibilità utilizzando le ancore: 10
  • 11. Stati e transizioni  La UI può avere più stati nei quali le proprietà possono assume diversi valori.  Ciò che non è definito in uno stato fa parte dello stato di partenza, implicitamente sempre definito.  Le transizioni fra stati definiscono il modo in cui le proprietà cambiano per passare da uno stato ad un altro. 11
  • 12. Stati e transizioni  Esempio: Rectangle { function changeState() { page.state = page.state == "" ? "clicked" : ""; } id: page width: 200 height: 200 color: "white" states : [ State { name: "clicked" PropertyChanges { target: page; color: "red"; } } ] MouseArea {anchors.fill: parent; onClicked: changeState(); } } 12
  • 13. Alcuni tool per QML  Designer: integrato in QtCreator dalla versione 2.1  QMLViewer: un tool per testare le interfacce scritte interamente in QML (o parti di essa).  Debugger: integrato in QtCreator. 13
  • 14. Integrazione con il C++  Qualsiasi tipo derivato da QObject può essere registrato ed esposto al QML come proprietà mediante l'utilizzo della macro qmlRegisterType.  Attenzione a non scrivere codice QML come se fosse imperativo, ottenendo codice meno efficiente e più complesso. 14
  • 15. Integrazione con il C++  E' anche possibile chiamare da QML metodi in C++ appartenenti a sottoclassi di QObject o agganciarsi da QML a segnali emessi.  Ma è anche possibile fare il contrario, chiamando dal C++ metodi in QML e addirittura navigare nel tree di un documento QML  Attenzione: usare solo per debug! 15
  • 16. Per saperne di più  La documentazione della versione di sviluppo: http://doc.qt.nokia.com/latest/qtquick.html  La mailing list dedicata: http://lists.qt.nokia.com/mailman/listinfo/qt-qml  Il blog di Qt, dove trovare news su QML e su tutto il mondo Qt: http://labs.qt.nokia.com/ 16
  • 18. GRAZIE ! Develer S.r.l. Via Mugellese 1/A 50013 Campi Bisenzio Firenze - Italia Contatti Mail: info@develer.com Phone: +39-055-3984627 Fax: +39 178 6003614 http://www.develer.com