Introdução ao Qt


1
OBJETIVOS
    ●
        O Framework Qt
        ●
            O que é o Qt?
        ●
            Por que usar o Qt?
        ●
            Quem usa Qt?
    ●
        Interface com QtQuick
        ●
            QML
        ●
            Qt Creator IDE
        ●
            C++ API
    ●
        Multiplataforma
        ●
            QtMobility
2
O Framework Qt




3
O que é o Qt?


    • É um framework para aplicações multi-plataforma em
      C+++.
    • Suporta aplicações com e sem interface gráfica.
    • Desenvolvido inicialmente pela TrollTech e atualmente
      mantido como projeto OpenSource pela Nokia.


4
Por que usar o Qt?
    • É baseado no C++ padrão mas pode ser utilizado com
      diversas outras linguagens.
    • Possui suporte a internacionalização de Aplicações.
    • Roda nas principais plataformas móveis e de desktop.
    • É distribuido nas licenças LGPL v2.1, GPL e Comercial
      (Qt Comercial).
    • Suporta recursos gráficos avançados.
    • Permite a mistura de código nativo com código web.




5
Por que usar o Qt?



     ●
         Qt é o framework utilizado para desenvolvimento de
         aplicações nas plataformas Symbian, Maemo e MeeGo.




            Nokia             Nokia            Nokia N9
            X7-00             N900

 6
Por que usar o Qt?




• Permite escrever um único
  código    para    múltiplas
  plataformas.
• Possui uma IDE com
  suporte a drag-n-drop.




  7
Por que usar o Qt?


     • Utiliza o conceito de sinal-slot, modelo MVC, graphics
       view/scene/item.
     • Possui ampla documentação.
     •   Uma comunidade ativa e participativa.




 8
Quem usa Qt?




  Adobe Photoshop Elements
            Autodesk Maya
                   Skype
Quem usa Qt?




           Google Earth
          Wolfram Mathematica
Interface com QtQuick




11
• QtQuick (Qt User Interface Creation Kit) é uma
   interface de alto nível para criação simplificada de
   interfaces.
 • É composto por:
 •   QML: Uma linguagem declarativa
 •   Qt Creator
 •   API em C++ para integração com o Qt




12
QML
 • QML é uma linguagem declarativa para elementos de
   interface gráfica.
 • Descreve a interface gráfica
     ●
        Como os elementos são
     ●
         Como eles se comportam
 • A interface final é uma árvore de elementos com
   propriedades (semelhante ao HTML)




13
QML
QML

 import QtQuick 1.1
 // Define um quadrado azul claro
 Rectangle {
 width: 400; height: 400
 color: "lightblue"
 }



 • Para usar um módulo, primeiro precisamos importá-lo.
 • Especifique o nome do módulo e a versão desejada

15
QML

 Import QtQuick 1.1
 // Define um quadrado azul claro
 Rectangle {
 width: 400; height: 400
 color: "lightblue"
 }



 •    Comentários podem ser definidos com:
       ●
         // para comentários de uma linha
      ●
          /* ... */ para comentários em bloco
QML

Import QtQuick 1.1
// Define um quadrado azul claro
Rectangle {
width: 400; height: 400
color: "lightblue"
}


 •   Declare os elementos que queria usar
 •   O corpo do elemento é o que fica entre chaves.
 •   Vários elementos padrão são incluídos.
 •   Novos elementos podem ser especificados
17
QML

 Import QtQuick 1.1
 // Define um quadrado azul claro
 Rectangle {
 width: 400; height: 400
 color: "lightblue"
 }


 • Elementos contém propriedades
 • Cada propriedade é definida usando um nome e um
   valor
    ●
       nome: valor
18
QML

 Import QtQuick 1.1
 // Define um quadrado azul claro
 Rectangle {
 width: 400; height: 400
 color: "lightblue"
 }


 • Um elemento Rectangle
    ●
      Definido entre chaves
      ●
          Contendo as propriedades width, height e color

19
QML


 • Vários elementos estão disponível para uso.
    ●
       São estruturas na linguagem
      ●
          Representam partes visíveis e não visíveis.
 •    Item é o elemento mais básico
       ●
          Não é visível por si só
      ●
          Tem uma posição e dimensões
      ●
          É usado para agrupar elementos visuais
      ●
          Geralmente é o elemento de maior nível
 •    Outros elementos:
       ●
         Text, TextInput, Page, Circle, Row, Column...
20
QML


 • QML também define elementos sem representação
   visual
     ●
       Estados, transições.
      ●
          Gradientes, timers.
 • Cada elemento possui propriedades
    ●
      Propriedades customizadas podem podem ser
      criadas
 • Consultar documentação sobre as propriedades de
   cada tipo de elemento.



21
Qt Creator IDE
 • O Qt Creator IDE possui:
    ●
      Editor visual para criar e editar componentes QML
     ●
         Ferramentas de projeto e build de aplicações
     ●
         Sistema de ajuda integrado e sensível ao contexto
     ●
         Debuger visual
     ●
         Ferramentas para navegação rápida no código
     ●
         Highlight de sintaxe e code completion




22
Qt Creator IDE
                 Modo de
                 Design

      Barra de
                           Símbolos
      Projetos



Seletor de
Modo




      Run

     Build                      Painéis de
       Pesquisa                 informação
Qt Creator IDE


                          Variáveis

              Debuger




           Controles de
              Fluxo
Qt Creator IDE




Tipo de
Build
Qt Creator IDE
Qt Creator IDE


  • É instalado automaticamente com o QtSDK
     ●
        qt.nokia.com/downloads/
      ●
          Versões para Windows, Linux e MacOS
      ●
          Pacotes de instalação On-Line e Off-Line
  • Pode ser instalado como standalone




 27
C++ API
 • O Qt Quick suporta interação com C++
    ●
       QtDeclarative é a API que permite interagir e gerenciar
      componentes
     ●
         A interação ocorre através de objetos expostos ao ambiente
         QML como novos tipos
 • Elementos não visuais são subclasses do tipo QObject.
 •   Tipos visuais (items) são subclasses do tipo QDeclarativeItem
     ●
         QdeclarativeItem é o equivalente ao Item do QML
 •   A interação entre QML e C++ ocorre através de:
     ●
         Propriedades
     ●
         Sinais e Slots (métodos que não retornam valores)
     ●
         Métodos (definidos com a macro Q_INVOKABLE)
28
C++ API




          EXEMPLO




 29
Multiplataforma




30
QtMobility
 • O Projeto QtMobility cobre uma vasta gama de
   tecnologias e funcionalidades.
     ●
       É um conjunto de APIs e Frameworks que proveem
       uma interface única de acesso a recursos,
       independente de plataforma.
 • É suportado por Linux, Windows, Mac OS, Symbiam,
   Meego e Maemo 5.




31
QtMobility


  • QtMobility APIs
     ●
       Messaging: Uma interface comum para SMS, MMS e
       E-Mail
      ●
          Contatos
      ●
          Localização: posicionamento, postos de referência,
          mapas
      ●
          Multimídia
      ●
          Informações de Sistema
      ●
          Sensores
          ...
 32
QtMobility


  • Algumas APIs possuem plugins QML
     ●
        Com isso é possível desenvolver aplicações
        poderosas e multiplataforma apenas com QML




 33
QtMobility




 34
Mais Informações
• @nokiadev_brasil
• http://blog.qtlabs.org.br/
• http://bit.ly/NokiaDev_Qt_Brasil
• E-mail: daniel.bittencourt@openbossa.org




 35

Introdução ao Qt

  • 1.
  • 2.
    OBJETIVOS ● O Framework Qt ● O que é o Qt? ● Por que usar o Qt? ● Quem usa Qt? ● Interface com QtQuick ● QML ● Qt Creator IDE ● C++ API ● Multiplataforma ● QtMobility 2
  • 3.
  • 4.
    O que éo Qt? • É um framework para aplicações multi-plataforma em C+++. • Suporta aplicações com e sem interface gráfica. • Desenvolvido inicialmente pela TrollTech e atualmente mantido como projeto OpenSource pela Nokia. 4
  • 5.
    Por que usaro Qt? • É baseado no C++ padrão mas pode ser utilizado com diversas outras linguagens. • Possui suporte a internacionalização de Aplicações. • Roda nas principais plataformas móveis e de desktop. • É distribuido nas licenças LGPL v2.1, GPL e Comercial (Qt Comercial). • Suporta recursos gráficos avançados. • Permite a mistura de código nativo com código web. 5
  • 6.
    Por que usaro Qt? ● Qt é o framework utilizado para desenvolvimento de aplicações nas plataformas Symbian, Maemo e MeeGo. Nokia Nokia Nokia N9 X7-00 N900 6
  • 7.
    Por que usaro Qt? • Permite escrever um único código para múltiplas plataformas. • Possui uma IDE com suporte a drag-n-drop. 7
  • 8.
    Por que usaro Qt? • Utiliza o conceito de sinal-slot, modelo MVC, graphics view/scene/item. • Possui ampla documentação. • Uma comunidade ativa e participativa. 8
  • 9.
    Quem usa Qt? Adobe Photoshop Elements Autodesk Maya Skype
  • 10.
    Quem usa Qt? Google Earth Wolfram Mathematica
  • 11.
  • 12.
    • QtQuick (QtUser Interface Creation Kit) é uma interface de alto nível para criação simplificada de interfaces. • É composto por: • QML: Uma linguagem declarativa • Qt Creator • API em C++ para integração com o Qt 12
  • 13.
    QML • QMLé uma linguagem declarativa para elementos de interface gráfica. • Descreve a interface gráfica ● Como os elementos são ● Como eles se comportam • A interface final é uma árvore de elementos com propriedades (semelhante ao HTML) 13
  • 14.
  • 15.
    QML import QtQuick1.1 // Define um quadrado azul claro Rectangle { width: 400; height: 400 color: "lightblue" } • Para usar um módulo, primeiro precisamos importá-lo. • Especifique o nome do módulo e a versão desejada 15
  • 16.
    QML Import QtQuick1.1 // Define um quadrado azul claro Rectangle { width: 400; height: 400 color: "lightblue" } • Comentários podem ser definidos com: ● // para comentários de uma linha ● /* ... */ para comentários em bloco
  • 17.
    QML Import QtQuick 1.1 //Define um quadrado azul claro Rectangle { width: 400; height: 400 color: "lightblue" } • Declare os elementos que queria usar • O corpo do elemento é o que fica entre chaves. • Vários elementos padrão são incluídos. • Novos elementos podem ser especificados 17
  • 18.
    QML Import QtQuick1.1 // Define um quadrado azul claro Rectangle { width: 400; height: 400 color: "lightblue" } • Elementos contém propriedades • Cada propriedade é definida usando um nome e um valor ● nome: valor 18
  • 19.
    QML Import QtQuick1.1 // Define um quadrado azul claro Rectangle { width: 400; height: 400 color: "lightblue" } • Um elemento Rectangle ● Definido entre chaves ● Contendo as propriedades width, height e color 19
  • 20.
    QML • Várioselementos estão disponível para uso. ● São estruturas na linguagem ● Representam partes visíveis e não visíveis. • Item é o elemento mais básico ● Não é visível por si só ● Tem uma posição e dimensões ● É usado para agrupar elementos visuais ● Geralmente é o elemento de maior nível • Outros elementos: ● Text, TextInput, Page, Circle, Row, Column... 20
  • 21.
    QML • QMLtambém define elementos sem representação visual ● Estados, transições. ● Gradientes, timers. • Cada elemento possui propriedades ● Propriedades customizadas podem podem ser criadas • Consultar documentação sobre as propriedades de cada tipo de elemento. 21
  • 22.
    Qt Creator IDE • O Qt Creator IDE possui: ● Editor visual para criar e editar componentes QML ● Ferramentas de projeto e build de aplicações ● Sistema de ajuda integrado e sensível ao contexto ● Debuger visual ● Ferramentas para navegação rápida no código ● Highlight de sintaxe e code completion 22
  • 23.
    Qt Creator IDE Modo de Design Barra de Símbolos Projetos Seletor de Modo Run Build Painéis de Pesquisa informação
  • 24.
    Qt Creator IDE Variáveis Debuger Controles de Fluxo
  • 25.
  • 26.
  • 27.
    Qt Creator IDE • É instalado automaticamente com o QtSDK ● qt.nokia.com/downloads/ ● Versões para Windows, Linux e MacOS ● Pacotes de instalação On-Line e Off-Line • Pode ser instalado como standalone 27
  • 28.
    C++ API •O Qt Quick suporta interação com C++ ● QtDeclarative é a API que permite interagir e gerenciar componentes ● A interação ocorre através de objetos expostos ao ambiente QML como novos tipos • Elementos não visuais são subclasses do tipo QObject. • Tipos visuais (items) são subclasses do tipo QDeclarativeItem ● QdeclarativeItem é o equivalente ao Item do QML • A interação entre QML e C++ ocorre através de: ● Propriedades ● Sinais e Slots (métodos que não retornam valores) ● Métodos (definidos com a macro Q_INVOKABLE) 28
  • 29.
    C++ API EXEMPLO 29
  • 30.
  • 31.
    QtMobility • OProjeto QtMobility cobre uma vasta gama de tecnologias e funcionalidades. ● É um conjunto de APIs e Frameworks que proveem uma interface única de acesso a recursos, independente de plataforma. • É suportado por Linux, Windows, Mac OS, Symbiam, Meego e Maemo 5. 31
  • 32.
    QtMobility •QtMobility APIs ● Messaging: Uma interface comum para SMS, MMS e E-Mail ● Contatos ● Localização: posicionamento, postos de referência, mapas ● Multimídia ● Informações de Sistema ● Sensores ... 32
  • 33.
    QtMobility •Algumas APIs possuem plugins QML ● Com isso é possível desenvolver aplicações poderosas e multiplataforma apenas com QML 33
  • 34.
  • 35.
    Mais Informações • @nokiadev_brasil •http://blog.qtlabs.org.br/ • http://bit.ly/NokiaDev_Qt_Brasil • E-mail: daniel.bittencourt@openbossa.org 35