Treinamento Básico Qt
Teoria e Hands on
Artur Duque de Souza - MoRpHeUz
Agosto/2009, UPFE - Recife - PE
Agenda




 • Introdução teórica
 • Almoço :)
 • Hands on!
Quem somos nós?


  • INdT - Instituto Nokia de Tecnologia
  • openBossa - stream open source do INdT
  • Projetos mais conhecidos: Canola, Carman
  • Parceria com Qt Development Frameworks / KDE:
       • Qt Kinetic
       • Qt Webkit
       • Plasma Netbook
       • ItemViews-NG
Qt Labs Americas



  • Iniciativa do openBossa
  • Desenvolvimento de comunidades Qt e KDE nas
   Américas

           http://qtlabs.openbossa.org
Quem sou eu?




  • Desenvolvedor open source desde 1997
  • Formando na UNICAMP - Campinas/Brasil
  • Trabalhei na IBM (Linux Technology Center)
  • Trabalho para o INdT (openBossa stream)
  • Contribuições: Canola2, MythTV, EFL, Maemo,
    MPlayer, KDE, etc.
  • Desenvolvedor KDE
  • Membro do KDE e.V.
Quem é Jesus?



  • Formado aqui!
  • Trabalhei no GPRT, na Itautec e agora no INdT
  • Contribuições: openOCD, QEdje, ERESI, urJTAG, ...
  • Membro fundador: CInLUG e wouwlabs
Open Source




 Por que investir em Open Source?
Quem usa Qt?

  • Asus
  • EPSON
  • AMD
  • Google
  • Skype
  • Volkswagen / Volvo
  • Xerox
  • Philips
  • Nokia :)
  • KDE / outros projetos open source
O que é Qt?

Framework multi-plataforma para desenvolvimento de softwares
Quem faz o Qt?


  • Desenvolvedores da Nokia - 14 anos de
    experiência
  • Comunidade
  • Você :)

              http://qt.gitorious.org
Main loop




        O que é Main Loop?
Modelo de Objetos Qt

O que ele adiciona ao modelo comum:
   • +Propriedades
   • +Sinais/Slots
   • +Tradução de Strings
   • +Gerencimento de memória
   • +dynamic_cast especial (sem suporte RTTI)
   • +Eventos e filtro de eventos
   • =QObject
Sistema de Meta Objetos




  • MOC - Meta Object Compiler
  • Macros: Q_Object, Q_PROPERTY, Q_ENUMS, etc..
Signals / Slots



 Sinais emitidos por um objeto acionam métodos ou
 sinais desse mesmo objeto ou de um outro objeto.

Macros importantes:
  • SIGNAL()
  • SLOT()
Métodos virtuais



   São métodos que podem ser sobreescritos por
 métodos de classes filhas com a mesma assinatura.
Muito útil para programação orientada a objetos e em
                    polimorfismo.
Widgets



  • Widgets tradicionais vs Widgets em um canvas
  • Animações
  • Qt Designer
  • QML - Linguagem Declarativa
Layouts




Utilizados para lidar automaticamente com tamanhos
                e posições de widgets.
Classes Non-GUI


  • Threads
  • IPC
  • Arquivos
  • Rede
  • Banco de dados
  • XML
Webkit




 QtWebkit é um port do webkit para Qt, dando todo o
      poder do Webkit para uma aplicação Qt.
Ferramentas




  • Qt Designer
  • Qt Creator
  • QDBusXML2CPP / QDBusCPP2XML
Agradecimentos




  • CIn - UFPE
  • Igor Andrade
  • Qt Development Frameworks
Dúvidas?



           Artur de Souza (MoRpHeUz)
            artur.souza@openbossa.org
              http://blog.morpheuz.cc
            http://qtlabs.openbossa.org

           Freenode #qt-labs #kde-brasil
Hands on!
QWidgets - Address Book




  • Widgets - QPushButton, QLabel, QLineEdit
  • QLayout
  • QMessageBox
Interfaces com Canvas


  • QGraphicsScene - A sua cena
  • QGraphicsView - A sua view
  • QGraphicsWidget
  • QGraphicsLayout
  • Widget customizado
  • QProxyWidget
Animando sua interface



  • QStateMachine
  • Animations e Animations Groups
  • QEasingCurve
Web Browser




   Utilizar os elementos anteriores para criar um
                     navegador

  • QtWebkit
Desafio!

Qt

  • 1.
    Treinamento Básico Qt Teoriae Hands on Artur Duque de Souza - MoRpHeUz Agosto/2009, UPFE - Recife - PE
  • 2.
    Agenda • Introduçãoteórica • Almoço :) • Hands on!
  • 3.
    Quem somos nós? • INdT - Instituto Nokia de Tecnologia • openBossa - stream open source do INdT • Projetos mais conhecidos: Canola, Carman • Parceria com Qt Development Frameworks / KDE: • Qt Kinetic • Qt Webkit • Plasma Netbook • ItemViews-NG
  • 4.
    Qt Labs Americas • Iniciativa do openBossa • Desenvolvimento de comunidades Qt e KDE nas Américas http://qtlabs.openbossa.org
  • 5.
    Quem sou eu? • Desenvolvedor open source desde 1997 • Formando na UNICAMP - Campinas/Brasil • Trabalhei na IBM (Linux Technology Center) • Trabalho para o INdT (openBossa stream) • Contribuições: Canola2, MythTV, EFL, Maemo, MPlayer, KDE, etc. • Desenvolvedor KDE • Membro do KDE e.V.
  • 6.
    Quem é Jesus? • Formado aqui! • Trabalhei no GPRT, na Itautec e agora no INdT • Contribuições: openOCD, QEdje, ERESI, urJTAG, ... • Membro fundador: CInLUG e wouwlabs
  • 7.
    Open Source Porque investir em Open Source?
  • 8.
    Quem usa Qt? • Asus • EPSON • AMD • Google • Skype • Volkswagen / Volvo • Xerox • Philips • Nokia :) • KDE / outros projetos open source
  • 9.
    O que éQt? Framework multi-plataforma para desenvolvimento de softwares
  • 10.
    Quem faz oQt? • Desenvolvedores da Nokia - 14 anos de experiência • Comunidade • Você :) http://qt.gitorious.org
  • 11.
    Main loop O que é Main Loop?
  • 12.
    Modelo de ObjetosQt O que ele adiciona ao modelo comum: • +Propriedades • +Sinais/Slots • +Tradução de Strings • +Gerencimento de memória • +dynamic_cast especial (sem suporte RTTI) • +Eventos e filtro de eventos • =QObject
  • 13.
    Sistema de MetaObjetos • MOC - Meta Object Compiler • Macros: Q_Object, Q_PROPERTY, Q_ENUMS, etc..
  • 14.
    Signals / Slots Sinais emitidos por um objeto acionam métodos ou sinais desse mesmo objeto ou de um outro objeto. Macros importantes: • SIGNAL() • SLOT()
  • 15.
    Métodos virtuais São métodos que podem ser sobreescritos por métodos de classes filhas com a mesma assinatura. Muito útil para programação orientada a objetos e em polimorfismo.
  • 16.
    Widgets •Widgets tradicionais vs Widgets em um canvas • Animações • Qt Designer • QML - Linguagem Declarativa
  • 17.
    Layouts Utilizados para lidarautomaticamente com tamanhos e posições de widgets.
  • 18.
    Classes Non-GUI • Threads • IPC • Arquivos • Rede • Banco de dados • XML
  • 19.
    Webkit QtWebkit éum port do webkit para Qt, dando todo o poder do Webkit para uma aplicação Qt.
  • 20.
    Ferramentas •Qt Designer • Qt Creator • QDBusXML2CPP / QDBusCPP2XML
  • 21.
    Agradecimentos •CIn - UFPE • Igor Andrade • Qt Development Frameworks
  • 22.
    Dúvidas? Artur de Souza (MoRpHeUz) artur.souza@openbossa.org http://blog.morpheuz.cc http://qtlabs.openbossa.org Freenode #qt-labs #kde-brasil
  • 23.
  • 24.
    QWidgets - AddressBook • Widgets - QPushButton, QLabel, QLineEdit • QLayout • QMessageBox
  • 25.
    Interfaces com Canvas • QGraphicsScene - A sua cena • QGraphicsView - A sua view • QGraphicsWidget • QGraphicsLayout • Widget customizado • QProxyWidget
  • 26.
    Animando sua interface • QStateMachine • Animations e Animations Groups • QEasingCurve
  • 27.
    Web Browser Utilizar os elementos anteriores para criar um navegador • QtWebkit
  • 28.