t




    QtQuick


    Luís Gabriel Lima (lgnfl)
    Rafael Brandão (rbl)
Agenda
Agenda

• O que é Qt?

• Arquitetura do Qt

• O que é QtQuick?

• QML

• Considerações finais
O que é Qt?
O que é Qt?

• Qt é um framework C++
  •   desenvolvimento de aplicações   cross-plataform
  •   conjunto de APIs + GUI framework
  •   biblioteca de classes C++
  •   ferramentas de desenvolvimento (IDE, build system, etc)
• O Qt foi originalmente projetado para:
  •   criação eficiente de programas desktop
  •                           GUI
      sendo esses programas com
  •   e   independentes de platorma
• Trolltech (1991-2008), Nokia    (2008-2011), Open Governance
• Última versão: 4.7.4
Arquitetura do Qt
Arquitetura do Qt
Módulo QtGui

•   Widgets “tradicionais”
Graphics View Framework

• Superfície para acesso rápido de itens gráficos
  •   usa uma árvore BSP (Binary Space Partitioning)
  •   permite propagação de eventos entre itens
  •   visualização dos itens com suporte a zoom e rotações
  •   visualização em tempo real de cenas com milhares de itens


• Permite customização de itens, suportando:
  •   tratamento de eventos (cliques, teclas, etc.)
  •   agrupamento de itens (relação entre pai e filho, etc.)
  •   detecção de colisões
O que é QtQuick?
O que é QtQuick?


●   Qt User Interface Creation Kit
●   QML
●   Qt Declarative
●   Qt Creator Tools
●   Objetivos:
    ● Criar UIs como um designer
    ● Sem conhecimento de C++

    ● Poder de criação de interfaces flúidas
QML
QML (Qt Meta Language)
• Descreve uma interface gráfica:
 •   numa estrutura em árvore de bindings de propriedades
 •   propriedades são avaliadas dinamicamente
 •   comunicação é feita através do uso de sinais e slots
 •   binding para código c++ é possível
 •   animação de propriedades usando estados e transições
QML
• Linguagem declarativa baseada em javascript
 •   expressa com bindings entre propriedades
 •   estruturada em uma árvore de objetos
QML
• Contraste com uma linguagem imperativa
 • bindings de propriedades são expressões que são recalculadas
 sempre que o valor daquela propriedade muda
 • na imperativa, expressões são avaliadas uma única vez
QML
• Componentes
 •   um documento QML descreve a estrutura de um componente
 •   nome do componente é o nome do arquivo
QML
• Componentes
 •   uma instância de um componente é criada durante a execução
QML
• Componentes
 •   partes internas não são visíveis por padrão por outros
 •   API definida através de propriedades, funções e sinais


• Propriedades
 •   podem ser referenciadas pelo nome (iniciado em minuscula)
 • uma expressão de propriedade que referencia outra estabelece
 um binding (ligação)
 • sempre que uma propriedade muda, todos os valores ligados a
 ela serão alterados
QML
• Propriedades
 •   id são usadas para referenciar um objeto
 •   list são um conjunto de elementos
 •   default pode ser usada sem o nome (o atributo data a seguir)
QML
• Propriedades
 •   propriedades públicas são especificadas com 'property'
 •   tipos: int, bool, real, string, point, rect, size, time, etc.
QML
• Propriedades
 •   alias expõe uma propriedade interna para API pública
 •
QML
• Sinais
  • componentes podem emitir sinais que serão processados por
  signal handlers
  • signal handlers seguem a sintaxe onNomeDoSinal
QML
• Sinais
  •   mudanças de propriedades podem ser ligadas a sinais
  •   sintaxe: on<Propriedade>Changed
  •   repare na letra maiscula em propriedade
QML
• Sinais
  •   podem ser definidos sinais com a palavra 'signal'
QML
• Funções
 •componente pode exportar funções que podem ser chamadas
 por outros componentes
Considerações finais
Links Úteis


http://doc.qt.nokia.com/latest/qtquick.html
http://qt.nokia.com/learning/online/training/materials/qt-quick-for-designers/
http://doc.qt.nokia.com/latest/qdeclarativeelements.html
http://blog.qtlabs.org.br/
http://www.qt-project.org/
Vídeos

http://www.youtube.com/watch?v=rqt7vM_vP3o
http://www.youtube.com/watch?v=LTDJrMu24b8
http://circus.indt.org/
http://www.youtube.com/watch?v=k5gMAMSz77Q
http://www.youtube.com/watch?v=eyXuECm7OFQ
http://www.youtube.com/watch?v=UfLwZnTGcnA
http://www.youtube.com/watch?v=KLQD2jYS-XU
http://www.youtube.com/watch?v=b1eNx9Qmdcc
Referências

http://www.slideshare.net/tillinslidet/qtquick-day-1
http://www.slideshare.net/elenakotina/qt-quick-qml
http://blog.qt.nokia.com/2010/02/15/meet-qt-quick/
http://blog.qtlabs.org.br/2011/10/07/qml-restful-web-services/
That's all folks,
 thank you! :-)
t




    QtQuick


    Luís Gabriel Lima (lgnfl)
    Rafael Brandão (rbl)

QtQuick