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

QtQuick

Embed Size (px)

Citation preview

Page 1: QtQuick

t

QtQuick

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

Page 2: QtQuick

Agenda

Page 3: QtQuick

Agenda

• O que é Qt?

• Arquitetura do Qt

• O que é QtQuick?

• QML

• Considerações finais

Page 4: QtQuick

O que é Qt?

Page 5: QtQuick

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 • sendo esses programas com GUI• e independentes de platorma

• Trolltech (1991-2008), Nokia (2008-2011), Open Governance

• Última versão: 4.7.4

Page 6: QtQuick

Arquitetura do Qt

Page 7: QtQuick

Arquitetura do Qt

Page 8: QtQuick

Módulo QtGui

• Widgets “tradicionais”

Page 9: QtQuick

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

Page 10: QtQuick

O que é QtQuick?

Page 11: 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

Page 12: QtQuick

QML

Page 13: QtQuick

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

Page 14: QtQuick

QML

• Linguagem declarativa baseada em javascript• expressa com bindings entre propriedades• estruturada em uma árvore de objetos

Page 15: QtQuick

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

Page 16: QtQuick

QML

• Componentes• um documento QML descreve a estrutura de um componente• nome do componente é o nome do arquivo

Page 17: QtQuick

QML

• Componentes• uma instância de um componente é criada durante a execução

Page 18: QtQuick

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

Page 19: QtQuick

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)

Page 20: QtQuick

QML

• Propriedades• propriedades públicas são especificadas com 'property'• tipos: int, bool, real, string, point, rect, size, time, etc.

Page 21: QtQuick

QML

• Propriedades• alias expõe uma propriedade interna para API pública•

Page 22: QtQuick

QML• Sinais

• componentes podem emitir sinais que serão processados por signal handlers • signal handlers seguem a sintaxe onNomeDoSinal

Page 23: QtQuick

QML

• Sinais• mudanças de propriedades podem ser ligadas a sinais• sintaxe: on<Propriedade>Changed• repare na letra maiscula em propriedade

Page 24: QtQuick

QML

• Sinais• podem ser definidos sinais com a palavra 'signal'

Page 25: QtQuick

QML

• Funções• componente pode exportar funções que podem ser chamadas por outros componentes

Page 26: QtQuick

Considerações finais

Page 27: QtQuick

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/

Page 28: QtQuick

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

Page 29: QtQuick

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/

Page 30: QtQuick

That's all folks, thank you! :-)

Page 31: QtQuick

t

QtQuick

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