SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
QtQuick
Workshop de Software Livre
Daker Fernandes Pinheiro

Março/2011, UFPE
Sobre mim...




  ˆ É DAKER mesmo, não é apelido
  ˆ Desenvolvedor Qt desde 2010
  ˆ Formação: Graduando em Ciência da Computação @ CIn-UFPE
  ˆ Experiência prossional: INdT
  ˆ Software Livre :-)
  ˆ Camisetas Brancas
Agenda




 ˆ O que é Qt?
 ˆ QtCreator
 ˆ QtQuick
 ˆ QML + Exercícios
 ˆ Finalmentes
O que é Qt?




   Framework cross-plataform e LGPL para desenvolvimento de software
Quem usa o Qt?
Quem desenvolve o Qt?
Quem desenvolve o Qt?
Desenvolvedaroes da Nokia - mais de 14 anos de experiência
Quem desenvolve o Qt?
Comunidade
Quem desenvolve o Qt?
Você! :-)




               http://qt.gitorious.org

              http://labs.qt.nokia.com

            http://developer.qt.nokia.com
C++
Python
PySide




         Bindings (LGPL) do Qt para Python
Ferramentas
Nokia Qt SDK




       http://www.forum.nokia.com/Develop/Qt/
Simulador
Documentação




               http://doc.qt.nokia.com
Edição




   Várias features: auto-complete (Eclipse-like), highlight de erros,
                           refactoring, etc
Compilador/ Debugger




    Compilador e debugger poderoso para diferentes plataformas
O que é QtQuick?




  ˆ Qt ≥ 4.7
  ˆ QML: linguagem declarativa JavaScript-like
  ˆ Qt Declarative: módulo C++
  ˆ Suporte do Qt Creator
  ˆ Guia QtQuick
  ˆ Referência
QML - Hello World



helloworld.qml

import      QtQuick      1.0
/* Hello       World em        QML    */
Rectangle {
    w i d t h : 360
    h e i g h t : 360
    Text {
            id : text
            a n c h o r s . c e n t e r I n : p a r e n t // A n c o r a s
            t e x t :  Hello World  // P r o p r i e d a d e s
      }
}
QML - Conceitos Básicos




  ˆ Objetos
  ˆ Propriedades
  ˆ Comentários
  ˆ Identicadores (id)
  ˆ Âncoras
  ˆ Expressões
QML - Conceitos Básicos



ids.qml

 i m p o r t QtQuick 1.0
 Rectangle {
         w i d t h : 2 0 0 ; h e i g h t : 200
        Text {
                 id : t i t l e
                 anchors . top : parent . top
                 t e x t :  World 
      }
      Text {
          anchors . bottom : p a r e n t . bottom
          t e x t :  Hello  + t i t l e . t e x t
      }
}
QML - Tipos Básicos



types.qml

Item {
    w i d t h : 3 6 0 ; h e i g h t : 360 / / p r o p r i e d a d e s ' i n t '
    Rectangle {
            x : 2 0 . 5 ; y : 55.0 // p r o p r i e d a d e s ' real '
            w i d t h : 2 0 0 ; h e i g h t : 200
             c o l o r :  red  // p r o p r i e d a d e ' color '
            Text {
                     x : 1 0 0 ; y : 20
                     t e x t :  Hello  // p r o p r i e d a d e ' string '
                     c o l o r :  # FAF0B8  // rgb em hexa
            }
      }
}
QML - Rectangle




rectangle.qml

Rectangle {
    w i d t h : 1 0 0 ; h e i g h t : 100
    b o r d e r . c o l o r :  red 
    border . width : 5
    c o l o r :  blue 
    r a d i u s : 20
    smooth : t r u e
}
QML - Item



  ˆ anchors
  ˆ children, resources
  ˆ clip
  ˆ data
  ˆ focus
  ˆ opacity
  ˆ scale
  ˆ state, states, transitions
  ˆ transform, transformOrigin
  ˆ visible
  ˆ x, y, z
  ˆ width, height
QML - Text



text.qml

Text {
    w i d t h : 2 0 0 ; h e i g h t : 50
    t e x t :  Meu i  Texto / i  
    c o l o r :  black 
    e l i d e : Text . E l i d e R i g h t
    w r a p M o d e : T e x t . WordWrap
    font . bold : true
    fo nt . f a m i l y :  Helvetica 
    f o n t . p i x e l S i z e : 40
    textFormat : Text . RichText
}
QML - Image



image.qml

Image {
    id : image
    w i d t h : 3 6 0 ; h e i g h t : 360
    s o u r c e :  ./ coral . png  // p r o p r i e d a d e  url 
    f i l l M o d e : Image . S t r e t c h
    smooth : t r u e
    Text {
             t e x t : i m a g e . s t a t u s == I m a g e . R e a d y ?
                    Ready  :  Not Ready 
            f o n t . p i x e l S i z e : 32
      }
}
QML - Mais Elementos Visuais




  ˆ BorderImage
  ˆ TextInput
  ˆ TextEdit
  ˆ Flickable
  ˆ Mais..
QML - MouseArea



mouse.qml

Rectangle {
    w i d t h : 3 0 0 ; h e i g h t : 300
    c o l o r :  blue 
    MouseArea {
            anchors . f i l l : parent
            // H a n d l e r do sinal       clicked
            onClicked : {
                parent . color =         red 
            }
     }
}
Exercício 1




Crie a visualização das informações de uma espécie de ser vivo com as
seguintes informações:
  ˆ Nome Cientíco
  ˆ Foto
  ˆ Descrição
QML - MouseArea



mouse.qml

Rectangle {
    w i d t h : 3 0 0 ; h e i g h t : 300
    c o l o r :  blue 
    MouseArea {
            anchors . f i l l : parent
            // H a n d l e r do sinal       clicked
            onClicked : {
                parent . color =         red 
            }
     }
}
QML - MouseArea




 ˆ Sinais
     ˆ   onCanceled
     ˆ   onClicked
     ˆ   onDoubleClicked
     ˆ   onEntered
     ˆ   onExited
     ˆ   onPositionChanged
     ˆ   onPressAndHold
     ˆ   onPressed
     ˆ   onReleased
QML - MouseArea




 ˆ Propriedades
     ˆ   enabled
     ˆ   drag
     ˆ   pressed
     ˆ   hoverEnabled
     ˆ   mouseX, mouseY
     ˆ   containsMouse
QML - Exercício 2




Crie o seguinte comportamento no item do Exercício 1:
  ˆ Quando a foto for clicada, o retângulo com as demais informações
    desaparece
  ˆ Quando a foto for clicada novamente, as informações reaparecem
QML - Criando meu próprios elementos




  ˆ Arquivos QML são elementos!
  ˆ Denindo Propriedades
       ˆ   property tipo nomeDaPropriedade [: valorDefault]

  ˆ Propriedades alias
  ˆ Sinais (signal)
  ˆ Sinais propertyChanged
  ˆ Métodos (function)
Exercício 3




Encapsule o item do Exercício 2 em um item (SpeciesInfo) com as
seguintes propriedades:
  ˆ photo - imagem da espécie
  ˆ species - o nome cientíco da espécie
  ˆ description - um texto com uma breve descrição sobre a espécie
  ˆ expanded - um booleano que dirá se a descrição está sendo mostrada
    ou não
Faça com que somente a segunda parte do nome cientíco que em
negrito (utilize as tags b/b).
Para isso, crie uma função auxiliar.
QML - Estados e Animações




  ˆ states, state
  ˆ State
  ˆ when
  ˆ PropertyChanges
  ˆ Transition
  ˆ NumberAnimation
  ˆ easing
  ˆ Behavior
Exercício 4




Crie uma animação para fazer as informações de especie e descrição
aparecerem-desaparecerem do Elemento do Exercício 3.
  ˆ Utilize estados
  ˆ Tente animar utilizando a opacidade
Models e Views no QtQuick




São um mecanismo para lidar com conjuntos de dados.
  ˆ Models mantém e manipulam os dados ou items
  ˆ Views mostram os dados ou items
      ˆ   Utilizando delegates
QML - ListModel


É um modelo QML geralmente utilizado para prototipagem.

list.qml

ListModel {
    ListElement {
        ph ot o :  coral . png 
        s p e c i e s :  Chenopodium Ambrosioides 
        d e s c r i p t i o n :  Lorem ipsum dolor sit       amet 
      }
      ListElement {
          ph ot o :  monera . png 
          s p e c i e s :  Stachybotrys Chartarum 
          d e s c r i p t i o n :  Vivamus libero lectus 
      }
}
QML - Components




São esquemas de objetos que são criados apenas quando necessários.
São utilizados pelas views para mostrar cada item.
  ˆ Modularização
  ˆ Economia de Memória (Lazy Evaluation)
  ˆ Utilizado como delegate das Views QML
QML - Components



component.qml

Component {
    id : speciesDelegate
    SpeciesInfo {
         w i d t h : 700
         h e i g h t : 200

          speciesName : species
          descriptionText : description
          photoUrl : photo
    }
}
QML - Views


Elementos visuais que lêem a informação de um modelo e pintam cada
item através de seu delegate (um Component).
   ˆ ListView
   ˆ GridView
   ˆ PathView
   ˆ Repeater

listview.qml

ListView {
    model : l i s t M o d e l I d
    delegate : listModelDelegate
}
QML - Outros Models




Em QML podemos ter diversos tipos de Model.
  ˆ Inteiros
  ˆ Listas Javascript
  ˆ Modelos C++
       ˆ   QStringList
       ˆ   QListQObject*
       ˆ   QAbstractItemModel

  ˆ Modelos QML
       ˆ   ListModel
       ˆ   XmlListModel
       ˆ   Crie o seu!
Exercício 5




Crie um ListModel com as informações das espécies e utilize o elemento
do Exercício 4 como delegate para visualizá-los em uma lista.
Exercícios Extra




  ˆ Faça uma vizualização do tipo grid apenas com as imagens e nome
    das espécies
  ˆ Crie um modelo C++ capaz de persistir/manipular os dados
  ˆ Crie uma interface de cadastro de novas espécies
  ˆ M.O.N.E.R.A.
Links Essenciais




  ˆ QtQuick
  ˆ Treinamento de QtQuick para Designers
  ˆ Treinamento de QtQuick para Developers
  ˆ Treinamento de Qt
  ˆ Aprenda QtQuick
  ˆ Referência QML
  ˆ Documentação do Qt
  ˆ Aprenda Javascript
  ˆ Kunstformen der Natur  Ernst Haeckel [Imagens Utilizadas nos
    Exemplos]
Dúvidas?
Obrigado!




               Daker Fernandes Pinheiro
            http://codecereal.blogspot.com
            daker.pinheiro@openbossa.org
                      @dakerfp

Contenu connexe

En vedette

Qt tchelinux-2010
Qt tchelinux-2010Qt tchelinux-2010
Qt tchelinux-2010Wagner Reck
 
Instalações elétricas prática - SENAI
Instalações elétricas   prática - SENAIInstalações elétricas   prática - SENAI
Instalações elétricas prática - SENAILeonardo Chaves
 
Teclado curso completo - como tocar teclado - rafael harduim
Teclado   curso completo - como tocar teclado - rafael harduimTeclado   curso completo - como tocar teclado - rafael harduim
Teclado curso completo - como tocar teclado - rafael harduimjoelsonmoreira
 
TDC Goiânia, WP7 e Qt
TDC Goiânia, WP7 e QtTDC Goiânia, WP7 e Qt
TDC Goiânia, WP7 e QtHeitor Carlos
 
Utilizando o recurso de camera dos smartphones da Nokia usando qt
Utilizando o recurso de camera dos smartphones da Nokia usando qtUtilizando o recurso de camera dos smartphones da Nokia usando qt
Utilizando o recurso de camera dos smartphones da Nokia usando qtAnderson Briglia
 
Aplicações de Inteligência Artificial em Rádios Cognitivos
Aplicações de Inteligência Artificial em Rádios CognitivosAplicações de Inteligência Artificial em Rádios Cognitivos
Aplicações de Inteligência Artificial em Rádios CognitivosRamon Mayor Martins
 
Busca tabu
Busca tabuBusca tabu
Busca tabuiaudesc
 
Aplicação Algorítimo Genético
Aplicação Algorítimo GenéticoAplicação Algorítimo Genético
Aplicação Algorítimo GenéticoRodrigo Romais
 
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFASMETAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFASJoao Gonçalves
 
Mágica com qt’s meta object system
Mágica com qt’s meta object systemMágica com qt’s meta object system
Mágica com qt’s meta object systemRodrigo Delduca
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portuguesLaura
 
Heurística, Principios e Usabilidade na web
Heurística, Principios e Usabilidade na webHeurística, Principios e Usabilidade na web
Heurística, Principios e Usabilidade na webDaniel Brandão
 

En vedette (20)

Rqt2
Rqt2Rqt2
Rqt2
 
QtQuick
QtQuickQtQuick
QtQuick
 
Qt tchelinux-2010
Qt tchelinux-2010Qt tchelinux-2010
Qt tchelinux-2010
 
Introdução ao QML
Introdução ao QMLIntrodução ao QML
Introdução ao QML
 
Jogos em Qt
Jogos em QtJogos em Qt
Jogos em Qt
 
Rqt1
Rqt1Rqt1
Rqt1
 
Instalações elétricas prática - SENAI
Instalações elétricas   prática - SENAIInstalações elétricas   prática - SENAI
Instalações elétricas prática - SENAI
 
Teclado curso completo - como tocar teclado - rafael harduim
Teclado   curso completo - como tocar teclado - rafael harduimTeclado   curso completo - como tocar teclado - rafael harduim
Teclado curso completo - como tocar teclado - rafael harduim
 
TDC Goiânia, WP7 e Qt
TDC Goiânia, WP7 e QtTDC Goiânia, WP7 e Qt
TDC Goiânia, WP7 e Qt
 
Utilizando o recurso de camera dos smartphones da Nokia usando qt
Utilizando o recurso de camera dos smartphones da Nokia usando qtUtilizando o recurso de camera dos smartphones da Nokia usando qt
Utilizando o recurso de camera dos smartphones da Nokia usando qt
 
Opengl aula-01
Opengl aula-01Opengl aula-01
Opengl aula-01
 
Aplicações de Inteligência Artificial em Rádios Cognitivos
Aplicações de Inteligência Artificial em Rádios CognitivosAplicações de Inteligência Artificial em Rádios Cognitivos
Aplicações de Inteligência Artificial em Rádios Cognitivos
 
Rqt3
Rqt3Rqt3
Rqt3
 
Busca tabu
Busca tabuBusca tabu
Busca tabu
 
Aplicação Algorítimo Genético
Aplicação Algorítimo GenéticoAplicação Algorítimo Genético
Aplicação Algorítimo Genético
 
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFASMETAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
METAHEURÍSTICA GRASP APLICADA AO PROBLEMA DO SEQUENCIAMENTO DE TAREFAS
 
Mágica com qt’s meta object system
Mágica com qt’s meta object systemMágica com qt’s meta object system
Mágica com qt’s meta object system
 
Apostila ferramentas QT
Apostila ferramentas QTApostila ferramentas QT
Apostila ferramentas QT
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portugues
 
Heurística, Principios e Usabilidade na web
Heurística, Principios e Usabilidade na webHeurística, Principios e Usabilidade na web
Heurística, Principios e Usabilidade na web
 

Plus de Daker Fernandes

Functional Pattern Matching on Python
Functional Pattern Matching on PythonFunctional Pattern Matching on Python
Functional Pattern Matching on PythonDaker Fernandes
 
Why is Python slow? Python Nordeste 2013
Why is Python slow? Python Nordeste 2013Why is Python slow? Python Nordeste 2013
Why is Python slow? Python Nordeste 2013Daker Fernandes
 
Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13Daker Fernandes
 
Dominando Modelos Ocultos de Markov com Python e GHMM
Dominando Modelos Ocultos de Markov com Python e GHMMDominando Modelos Ocultos de Markov com Python e GHMM
Dominando Modelos Ocultos de Markov com Python e GHMMDaker Fernandes
 

Plus de Daker Fernandes (7)

Functional Pattern Matching on Python
Functional Pattern Matching on PythonFunctional Pattern Matching on Python
Functional Pattern Matching on Python
 
Why is Python slow? Python Nordeste 2013
Why is Python slow? Python Nordeste 2013Why is Python slow? Python Nordeste 2013
Why is Python slow? Python Nordeste 2013
 
Raspberry Pi + Python
Raspberry Pi + PythonRaspberry Pi + Python
Raspberry Pi + Python
 
Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13Plasmaquick Workshop - FISL 13
Plasmaquick Workshop - FISL 13
 
Dominando Modelos Ocultos de Markov com Python e GHMM
Dominando Modelos Ocultos de Markov com Python e GHMMDominando Modelos Ocultos de Markov com Python e GHMM
Dominando Modelos Ocultos de Markov com Python e GHMM
 
CITi - PySide
CITi - PySideCITi - PySide
CITi - PySide
 
Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 

QtQuick - WSL II

  • 1. QtQuick Workshop de Software Livre Daker Fernandes Pinheiro Março/2011, UFPE
  • 2. Sobre mim... ˆ É DAKER mesmo, não é apelido ˆ Desenvolvedor Qt desde 2010 ˆ Formação: Graduando em Ciência da Computação @ CIn-UFPE ˆ Experiência prossional: INdT ˆ Software Livre :-) ˆ Camisetas Brancas
  • 3. Agenda ˆ O que é Qt? ˆ QtCreator ˆ QtQuick ˆ QML + Exercícios ˆ Finalmentes
  • 4. O que é Qt? Framework cross-plataform e LGPL para desenvolvimento de software
  • 7. Quem desenvolve o Qt? Desenvolvedaroes da Nokia - mais de 14 anos de experiência
  • 8. Quem desenvolve o Qt? Comunidade
  • 9. Quem desenvolve o Qt? Você! :-) http://qt.gitorious.org http://labs.qt.nokia.com http://developer.qt.nokia.com
  • 10. C++
  • 11. Python PySide Bindings (LGPL) do Qt para Python
  • 13. Nokia Qt SDK http://www.forum.nokia.com/Develop/Qt/
  • 15. Documentação http://doc.qt.nokia.com
  • 16. Edição Várias features: auto-complete (Eclipse-like), highlight de erros, refactoring, etc
  • 17. Compilador/ Debugger Compilador e debugger poderoso para diferentes plataformas
  • 18. O que é QtQuick? ˆ Qt ≥ 4.7 ˆ QML: linguagem declarativa JavaScript-like ˆ Qt Declarative: módulo C++ ˆ Suporte do Qt Creator ˆ Guia QtQuick ˆ Referência
  • 19. QML - Hello World helloworld.qml import QtQuick 1.0 /* Hello World em QML */ Rectangle { w i d t h : 360 h e i g h t : 360 Text { id : text a n c h o r s . c e n t e r I n : p a r e n t // A n c o r a s t e x t : Hello World // P r o p r i e d a d e s } }
  • 20. QML - Conceitos Básicos ˆ Objetos ˆ Propriedades ˆ Comentários ˆ Identicadores (id) ˆ Âncoras ˆ Expressões
  • 21. QML - Conceitos Básicos ids.qml i m p o r t QtQuick 1.0 Rectangle { w i d t h : 2 0 0 ; h e i g h t : 200 Text { id : t i t l e anchors . top : parent . top t e x t : World } Text { anchors . bottom : p a r e n t . bottom t e x t : Hello + t i t l e . t e x t } }
  • 22. QML - Tipos Básicos types.qml Item { w i d t h : 3 6 0 ; h e i g h t : 360 / / p r o p r i e d a d e s ' i n t ' Rectangle { x : 2 0 . 5 ; y : 55.0 // p r o p r i e d a d e s ' real ' w i d t h : 2 0 0 ; h e i g h t : 200 c o l o r : red // p r o p r i e d a d e ' color ' Text { x : 1 0 0 ; y : 20 t e x t : Hello // p r o p r i e d a d e ' string ' c o l o r : # FAF0B8 // rgb em hexa } } }
  • 23. QML - Rectangle rectangle.qml Rectangle { w i d t h : 1 0 0 ; h e i g h t : 100 b o r d e r . c o l o r : red border . width : 5 c o l o r : blue r a d i u s : 20 smooth : t r u e }
  • 24. QML - Item ˆ anchors ˆ children, resources ˆ clip ˆ data ˆ focus ˆ opacity ˆ scale ˆ state, states, transitions ˆ transform, transformOrigin ˆ visible ˆ x, y, z ˆ width, height
  • 25. QML - Text text.qml Text { w i d t h : 2 0 0 ; h e i g h t : 50 t e x t : Meu i Texto / i c o l o r : black e l i d e : Text . E l i d e R i g h t w r a p M o d e : T e x t . WordWrap font . bold : true fo nt . f a m i l y : Helvetica f o n t . p i x e l S i z e : 40 textFormat : Text . RichText }
  • 26. QML - Image image.qml Image { id : image w i d t h : 3 6 0 ; h e i g h t : 360 s o u r c e : ./ coral . png // p r o p r i e d a d e url f i l l M o d e : Image . S t r e t c h smooth : t r u e Text { t e x t : i m a g e . s t a t u s == I m a g e . R e a d y ? Ready : Not Ready f o n t . p i x e l S i z e : 32 } }
  • 27. QML - Mais Elementos Visuais ˆ BorderImage ˆ TextInput ˆ TextEdit ˆ Flickable ˆ Mais..
  • 28. QML - MouseArea mouse.qml Rectangle { w i d t h : 3 0 0 ; h e i g h t : 300 c o l o r : blue MouseArea { anchors . f i l l : parent // H a n d l e r do sinal clicked onClicked : { parent . color = red } } }
  • 29. Exercício 1 Crie a visualização das informações de uma espécie de ser vivo com as seguintes informações: ˆ Nome Cientíco ˆ Foto ˆ Descrição
  • 30. QML - MouseArea mouse.qml Rectangle { w i d t h : 3 0 0 ; h e i g h t : 300 c o l o r : blue MouseArea { anchors . f i l l : parent // H a n d l e r do sinal clicked onClicked : { parent . color = red } } }
  • 31. QML - MouseArea ˆ Sinais ˆ onCanceled ˆ onClicked ˆ onDoubleClicked ˆ onEntered ˆ onExited ˆ onPositionChanged ˆ onPressAndHold ˆ onPressed ˆ onReleased
  • 32. QML - MouseArea ˆ Propriedades ˆ enabled ˆ drag ˆ pressed ˆ hoverEnabled ˆ mouseX, mouseY ˆ containsMouse
  • 33. QML - Exercício 2 Crie o seguinte comportamento no item do Exercício 1: ˆ Quando a foto for clicada, o retângulo com as demais informações desaparece ˆ Quando a foto for clicada novamente, as informações reaparecem
  • 34. QML - Criando meu próprios elementos ˆ Arquivos QML são elementos! ˆ Denindo Propriedades ˆ property tipo nomeDaPropriedade [: valorDefault] ˆ Propriedades alias ˆ Sinais (signal) ˆ Sinais propertyChanged ˆ Métodos (function)
  • 35. Exercício 3 Encapsule o item do Exercício 2 em um item (SpeciesInfo) com as seguintes propriedades: ˆ photo - imagem da espécie ˆ species - o nome cientíco da espécie ˆ description - um texto com uma breve descrição sobre a espécie ˆ expanded - um booleano que dirá se a descrição está sendo mostrada ou não Faça com que somente a segunda parte do nome cientíco que em negrito (utilize as tags b/b). Para isso, crie uma função auxiliar.
  • 36. QML - Estados e Animações ˆ states, state ˆ State ˆ when ˆ PropertyChanges ˆ Transition ˆ NumberAnimation ˆ easing ˆ Behavior
  • 37. Exercício 4 Crie uma animação para fazer as informações de especie e descrição aparecerem-desaparecerem do Elemento do Exercício 3. ˆ Utilize estados ˆ Tente animar utilizando a opacidade
  • 38. Models e Views no QtQuick São um mecanismo para lidar com conjuntos de dados. ˆ Models mantém e manipulam os dados ou items ˆ Views mostram os dados ou items ˆ Utilizando delegates
  • 39. QML - ListModel É um modelo QML geralmente utilizado para prototipagem. list.qml ListModel { ListElement { ph ot o : coral . png s p e c i e s : Chenopodium Ambrosioides d e s c r i p t i o n : Lorem ipsum dolor sit amet } ListElement { ph ot o : monera . png s p e c i e s : Stachybotrys Chartarum d e s c r i p t i o n : Vivamus libero lectus } }
  • 40. QML - Components São esquemas de objetos que são criados apenas quando necessários. São utilizados pelas views para mostrar cada item. ˆ Modularização ˆ Economia de Memória (Lazy Evaluation) ˆ Utilizado como delegate das Views QML
  • 41. QML - Components component.qml Component { id : speciesDelegate SpeciesInfo { w i d t h : 700 h e i g h t : 200 speciesName : species descriptionText : description photoUrl : photo } }
  • 42. QML - Views Elementos visuais que lêem a informação de um modelo e pintam cada item através de seu delegate (um Component). ˆ ListView ˆ GridView ˆ PathView ˆ Repeater listview.qml ListView { model : l i s t M o d e l I d delegate : listModelDelegate }
  • 43. QML - Outros Models Em QML podemos ter diversos tipos de Model. ˆ Inteiros ˆ Listas Javascript ˆ Modelos C++ ˆ QStringList ˆ QListQObject* ˆ QAbstractItemModel ˆ Modelos QML ˆ ListModel ˆ XmlListModel ˆ Crie o seu!
  • 44. Exercício 5 Crie um ListModel com as informações das espécies e utilize o elemento do Exercício 4 como delegate para visualizá-los em uma lista.
  • 45. Exercícios Extra ˆ Faça uma vizualização do tipo grid apenas com as imagens e nome das espécies ˆ Crie um modelo C++ capaz de persistir/manipular os dados ˆ Crie uma interface de cadastro de novas espécies ˆ M.O.N.E.R.A.
  • 46. Links Essenciais ˆ QtQuick ˆ Treinamento de QtQuick para Designers ˆ Treinamento de QtQuick para Developers ˆ Treinamento de Qt ˆ Aprenda QtQuick ˆ Referência QML ˆ Documentação do Qt ˆ Aprenda Javascript ˆ Kunstformen der Natur Ernst Haeckel [Imagens Utilizadas nos Exemplos]
  • 48. Obrigado! Daker Fernandes Pinheiro http://codecereal.blogspot.com daker.pinheiro@openbossa.org @dakerfp