Treinamento Básico Qt
Teoria e Hands on
Anselmo Lacerda Silveira de Melo e Eduardo Madeira Fleury
Setembro/2009, Faculdade iDez - João Pessoa - PB
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 é Anselmo?



  • Formando na UNICAMP - Campinas/Brasil
  • Trabalha com Linux em sistemas embarcados
    desde 2006 (AsGa, WiMobilis)
  • Instituto Nokia de Tecnologia (openBossa stream)
  • Membro do KDE Bugsquad
Quem é Eduardo?



  • Formando na UNICAMP - Campinas/Brasil
  • Trabalha com Linux desde 2006
  • IBM Linux Technology Center
  • Instituto Nokia de Tecnologia
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?



  • Qt Development Frameworks (ex-Trolltech), Nokia
  • Comunidade
  • Você :)

              http://qt.gitorious.org
C++



 • Herança
 • Métodos Virtuais / Polimorfismo
 • Casts
 • Gerenciamento de Memória
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()
Main loop




        O que é Main Loop?
Classes Non-GUI

  • Estruturas de dados: Listas, Hash, etc
  • Strings
  • Streams
  • Multimedia
  • Threads
  • IPC
  • Arquivos
  • Rede
  • Banco de dados
  • XML
GUI




  • Widgets tradicionais vs Widgets em um canvas
  • Animações
  • QML - L. Declarativa (em desenvolvimento)
Layouts




Utilizados para lidar automaticamente com tamanhos
                e posições de widgets.
QtWebkit




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



  • Qt Assistant
  • Qt Designer
  • Qt Creator
  • QDBusXML2CPP / QDBusCPP2XML
  • Qt Linguist
Agradecimentos



  • Faculdade iDez
  • Igor Andrade
  • Artur Duque de Souza (MoRpHeUz)
  • Qt Development Frameworks -
   http://qt.nokia.com
Dúvidas?


     Anselmo L. S. de Melo (anselmolsm)
           anselmo.melo@openbossa.org
            http://www.anselmolsm.org

         Eduardo Madeira Fleury (fleury)
        eduardo.fleury@openbossa.org
        http://www.eduardofleury.com

            http://qtlabs.openbossa.org

           Freenode #qt-labs #kde-brasil
Parte Prática
Signals and Slots




  • Widgets - QDial, QLCDNumber, QProgressBar,
   QSlider
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 Techday - João Pessoa

  • 1.
    Treinamento Básico Qt Teoriae Hands on Anselmo Lacerda Silveira de Melo e Eduardo Madeira Fleury Setembro/2009, Faculdade iDez - João Pessoa - PB
  • 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 é Anselmo? • Formando na UNICAMP - Campinas/Brasil • Trabalha com Linux em sistemas embarcados desde 2006 (AsGa, WiMobilis) • Instituto Nokia de Tecnologia (openBossa stream) • Membro do KDE Bugsquad
  • 6.
    Quem é Eduardo? • Formando na UNICAMP - Campinas/Brasil • Trabalha com Linux desde 2006 • IBM Linux Technology Center • Instituto Nokia de Tecnologia
  • 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? • Qt Development Frameworks (ex-Trolltech), Nokia • Comunidade • Você :) http://qt.gitorious.org
  • 11.
    C++ • Herança • Métodos Virtuais / Polimorfismo • Casts • Gerenciamento de Memória
  • 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.
    Main loop O que é Main Loop?
  • 16.
    Classes Non-GUI • Estruturas de dados: Listas, Hash, etc • Strings • Streams • Multimedia • Threads • IPC • Arquivos • Rede • Banco de dados • XML
  • 17.
    GUI •Widgets tradicionais vs Widgets em um canvas • Animações • QML - L. Declarativa (em desenvolvimento)
  • 18.
    Layouts Utilizados para lidarautomaticamente com tamanhos e posições de widgets.
  • 19.
    QtWebkit QtWebkit éum port do webkit para Qt, dando todo o poder do Webkit para uma aplicação Qt.
  • 20.
    Ferramentas •Qt Assistant • Qt Designer • Qt Creator • QDBusXML2CPP / QDBusCPP2XML • Qt Linguist
  • 21.
    Agradecimentos •Faculdade iDez • Igor Andrade • Artur Duque de Souza (MoRpHeUz) • Qt Development Frameworks - http://qt.nokia.com
  • 22.
    Dúvidas? Anselmo L. S. de Melo (anselmolsm) anselmo.melo@openbossa.org http://www.anselmolsm.org Eduardo Madeira Fleury (fleury) eduardo.fleury@openbossa.org http://www.eduardofleury.com http://qtlabs.openbossa.org Freenode #qt-labs #kde-brasil
  • 23.
  • 24.
    Signals and Slots • Widgets - QDial, QLCDNumber, QProgressBar, QSlider
  • 25.
    QWidgets - AddressBook • Widgets - QPushButton, QLabel, QLineEdit • QLayout • QMessageBox
  • 26.
    Interfaces com Canvas • QGraphicsScene - A sua cena • QGraphicsView - A sua view • QGraphicsWidget • QGraphicsLayout • Widget customizado • QProxyWidget
  • 27.
    Animando sua interface • QStateMachine • Animations e Animations Groups • QEasingCurve
  • 28.
    Web Browser Utilizar os elementos anteriores para criar um navegador • QtWebkit
  • 29.