Um Framework
LGPL Multiplataforma
    Wagner Reck
Resumo
●   O que é 
●   Breve histórico
●   Principais Módulos e Ferramentas
●   Novidades por vir
Qt is...
  ...a cross­platform application and UI framework
                                        qt.nokia.com/products


...a cross­platform application framework that is widely used 
    for developing application software with graphical user 
 interface, and also used for developing non­GUI programs 
    such as command­line tools and consoles for servers.
                   http://en.wikipedia.org/wiki/Qt_(framework)
Que plataformas o Qt roda?
●   Oficialmente: 
    Windows (XP,Vista,7, CE), Linux/X11, Mac (Osx), 
    Symbian (S60), Maemo, Meego, Linux embarcado

●   Ports pela comunidade: 
    Android, IPhone, Qnx, VxWorks, ReacOS, Haiku, 
    Linux/Wayland, opensolaris, webOS, OS/2... 
    ●   Alguns ainda em desenvolvimento
Algumas Caracteristicas
●   API intuitiva
    ●   Ótima documentação
●   Compatibilidade entre versões
●   Modular
●   Utiliza renderização nativa
●   Performace do C++
    ●   bindings para outras linguagens se necessário
Quem usa Qt?
Onde Qt está presente?
Breve Histórico
●   Primeira versão disponibilizada em 1995,
    por Haavard Nord e Eirik Chambe-Eng;
●   Em 1997 o Qt passa a ser utilizado no
    desenvolvimento do KDE e a versão 1.3 é
    lançada;
●   Em 1999, o Qt 2 passa a ser licenciado
    pela QPL;
Breve Histórico
●   Em 2000 é lançado o Qtopia (Qt para ambientes
    embarcados);
●   Neste mesmo, o Qt passa a ser licenciado pela GPL;
●   Em 2001 é lançado o Qt3;
●   Em 2005 é lançado o Qt4: primeira versão open-source
    em todas as plataformas;
●   Em janeiro de 2008 a Trolltech é comprada pela Nokia.
Breve Histórico
●   2009 – Adicionada licença LGPL;
●   2009-2010 – Suporte a S60, Meego e Maemo;
●   Versão 1.0 Nokia Qt SDK (Mobilly API + Simulator
    + Remote compiler);
●   Nova ferramenta de desenvolvimento de
    interfaces – QtQuick;
Qt é Modular
●   Necessita instalar/prover apenas os
    módulos utilizados
●   Diminuição do espaço utilizado
    (dispositivos embarcados)
●   Modulos: ferramentas e Bibliotecas
Ferramentas
●   Qmake 
●   Linguist
●   Designer
●   Assistant
●   QtCreator
●   Plugin para Eclipse/Visual studio
Módulos
QtCore
●   Provê suporte básico
    ●   Containers (strings, listas, hash, map)
    ●   Internacionalização
    ●   Comunição inter­objetos
    ●   Funções globais: qrand(), qAbs(), qMax()
GUI
●   Componentes básicos
    ●   QLabel
    ●   QLineEdit
    ●   QPushButom
    ●   QComboBox
●   Diferentes layouts
    ●   grid, ancora, formulario...
Designer
Gráficos 2D
●   Classes do Graphics/View divididas
    em:
    ●   Cenas: Agrega os itens gráficos
    ●   Visualizações : Viewport de uma cena
●   Suporte a milhares de itens
●   Suporte a openGL (sem escrever
    códigos OpenGL)
Mainwindow
Documentos de Texto Rico
●   Permite criar documentos de forma
    programática
●   Exportar para
    ●   ODT
    ●   PDF
    ●   HTML
    ●   Imagens (SVG)
    ●   Impressora
SQL
●   Acompanha drivers para os principais
    SGBDs
●   Podem ser mantidas multiplas conexões
    abertas
QSqlDatabase conn = QSqlDatabase::addDatabase("QSQLITE", "DB")
conn.setDatabaseName("database")
conn.open()
SQL
●   Exemplo de consulta:
QSqlQuery q (conn);
q.exec (“SELECT * FROM table;”);
while (q.next())
    process(q.value(0));
    process(q.value(1).toTime());
Threads
●   1- Escrever o processamento:
    void function (QString filename){
      // process file
    }
●   2 - Prepara os itens a serem processados:
    QStringList list;
    list << "file1.txt" << "file2.txt" << ... ;
●   3 - dispara o processo:
    QtConcurrent::map(list, function);
Multimidia
●   Para pequenos efeitos
    ●   Qsound/QMovie
●   Aplicações multimidia
    ●   Phonon
    ●   Maior controle sobre a midia
    ●   ex. VLC / Amarok
Gestos e Multitoque
●   Manipulação com gestos
    ●   Zoom
    ●   Rolar lista
●   Gestos customizados
    ●   Gestos para executar ações únicas 
XML
●   2 tipos (básicos) de parser
    ●   Sax – XML maiores
    ●   Dom – XML menores
●   Uso de padrões XML
    ●   Xquey, Xpath, Validação de schema xml 
Animação
●   Facilita a criação de interfaces fluídas
    ●   Escolha da propriedade a alterar
    ●   Definição do valor final e tempo
    ●   Escolha da curva de animação


    ●   Execução em sequência ou paralelas
Webkit
●   Início com Khtml
    ●   Usado em vários navegadores
●   No QT
    ●   widgets dentro de páginas HTML
    ●   Interação com os recursos da aplicação
QtQuick
●   Permite a criação de interfaces fluidas
●   Linguagem declarativa para UI (QML)
●   Pode se comunicar com código Qt já existente
●   É trasparente para redes
    ●   Não importa se arquivo está no PC ou WWW
Exemplo QML
import QtQuick 1.0
Rectangle {
  width: 200
  height: 200
  Text {
     text: "Hello World"
     font.pixelSize: 22
     anchors.centerIn: parent
  }
}
Exemplo QML
     Text{
       ...
       font.pixelSize: 22
       MouseArea{
           id: textMouseArea
           anchors.fill: parent
       }
       color: textMouseArea.pressed ?
                "gold" :
                "black";
    }
}
Próxima Versão
●   “Modularização” dos “módulos”
    ●   Facilita novas contribuições
●   Lighthouse
    ●   Facilitar o port para outras plataformas
●   Open Governance
    ●   Tornar público: roadmap, listas, QA
Documentação Qt
●   qt.nokia.com/developer
●   qt.nokia.com/doc
●   revistaqt.blogspot.com
●   qtcentre.org
Obrigado

 Wagner Reck
 kders.wordpress.com
wagner.reck@gmail.com

Qt tchelinux-2010

  • 1.
  • 2.
    Resumo ● O que é  ● Breve histórico ● Principais Módulos e Ferramentas ● Novidades por vir
  • 3.
    Qt is... ...a cross­platform application and UI framework qt.nokia.com/products ...a cross­platform application framework that is widely used  for developing application software with graphical user  interface, and also used for developing non­GUI programs  such as command­line tools and consoles for servers. http://en.wikipedia.org/wiki/Qt_(framework)
  • 5.
    Que plataformas o Qt roda? ● Oficialmente:  Windows (XP,Vista,7, CE), Linux/X11, Mac (Osx),  Symbian (S60), Maemo, Meego, Linux embarcado ● Ports pela comunidade:  Android, IPhone, Qnx, VxWorks, ReacOS, Haiku,  Linux/Wayland, opensolaris, webOS, OS/2...  ● Alguns ainda em desenvolvimento
  • 6.
    Algumas Caracteristicas ● API intuitiva ● Ótima documentação ● Compatibilidade entre versões ● Modular ● Utiliza renderização nativa ● Performace do C++ ● bindings para outras linguagens se necessário
  • 7.
  • 8.
  • 9.
    Breve Histórico ● Primeira versão disponibilizada em 1995, por Haavard Nord e Eirik Chambe-Eng; ● Em 1997 o Qt passa a ser utilizado no desenvolvimento do KDE e a versão 1.3 é lançada; ● Em 1999, o Qt 2 passa a ser licenciado pela QPL;
  • 10.
    Breve Histórico ● Em 2000 é lançado o Qtopia (Qt para ambientes embarcados); ● Neste mesmo, o Qt passa a ser licenciado pela GPL; ● Em 2001 é lançado o Qt3; ● Em 2005 é lançado o Qt4: primeira versão open-source em todas as plataformas; ● Em janeiro de 2008 a Trolltech é comprada pela Nokia.
  • 11.
    Breve Histórico ● 2009 – Adicionada licença LGPL; ● 2009-2010 – Suporte a S60, Meego e Maemo; ● Versão 1.0 Nokia Qt SDK (Mobilly API + Simulator + Remote compiler); ● Nova ferramenta de desenvolvimento de interfaces – QtQuick;
  • 12.
    Qt é Modular ● Necessita instalar/prover apenas os módulos utilizados ● Diminuição do espaço utilizado (dispositivos embarcados) ● Modulos: ferramentas e Bibliotecas
  • 13.
    Ferramentas ● Qmake  ● Linguist ● Designer ● Assistant ● QtCreator ● Plugin para Eclipse/Visual studio
  • 14.
  • 15.
    QtCore ● Provê suporte básico ● Containers (strings, listas, hash, map) ● Internacionalização ● Comunição inter­objetos ● Funções globais: qrand(), qAbs(), qMax()
  • 16.
    GUI ● Componentes básicos ● QLabel ● QLineEdit ● QPushButom ● QComboBox ● Diferentes layouts ● grid, ancora, formulario...
  • 17.
  • 18.
    Gráficos 2D ● Classes do Graphics/View divididas em: ● Cenas: Agrega os itens gráficos ● Visualizações : Viewport de uma cena ● Suporte a milhares de itens ● Suporte a openGL (sem escrever códigos OpenGL)
  • 20.
  • 21.
    Documentos de Texto Rico ● Permite criar documentos de forma programática ● Exportar para ● ODT ● PDF ● HTML ● Imagens (SVG) ● Impressora
  • 22.
    SQL ● Acompanha drivers para os principais SGBDs ● Podem ser mantidas multiplas conexões abertas QSqlDatabase conn = QSqlDatabase::addDatabase("QSQLITE", "DB") conn.setDatabaseName("database") conn.open()
  • 23.
    SQL ● Exemplo de consulta: QSqlQuery q (conn); q.exec (“SELECT * FROM table;”); while (q.next()) process(q.value(0)); process(q.value(1).toTime());
  • 24.
    Threads ● 1- Escrever o processamento: void function (QString filename){ // process file } ● 2 - Prepara os itens a serem processados: QStringList list; list << "file1.txt" << "file2.txt" << ... ; ● 3 - dispara o processo: QtConcurrent::map(list, function);
  • 25.
    Multimidia ● Para pequenos efeitos ● Qsound/QMovie ● Aplicações multimidia ● Phonon ● Maior controle sobre a midia ● ex. VLC / Amarok
  • 26.
    Gestos e Multitoque ● Manipulação com gestos ● Zoom ● Rolar lista ● Gestos customizados ● Gestos para executar ações únicas 
  • 27.
    XML ● 2 tipos (básicos) de parser ● Sax – XML maiores ● Dom – XML menores ● Uso de padrões XML ● Xquey, Xpath, Validação de schema xml 
  • 28.
    Animação ● Facilita a criação de interfaces fluídas ● Escolha da propriedade a alterar ● Definição do valor final e tempo ● Escolha da curva de animação ● Execução em sequência ou paralelas
  • 29.
    Webkit ● Início com Khtml ● Usado em vários navegadores ● No QT ● widgets dentro de páginas HTML ● Interação com os recursos da aplicação
  • 30.
    QtQuick ● Permite a criação de interfaces fluidas ● Linguagem declarativa para UI (QML) ● Pode se comunicar com código Qt já existente ● É trasparente para redes ● Não importa se arquivo está no PC ou WWW
  • 31.
    Exemplo QML import QtQuick 1.0 Rectangle{ width: 200 height: 200 Text { text: "Hello World" font.pixelSize: 22 anchors.centerIn: parent } }
  • 32.
    Exemplo QML Text{ ... font.pixelSize: 22 MouseArea{ id: textMouseArea anchors.fill: parent } color: textMouseArea.pressed ? "gold" : "black"; } }
  • 34.
    Próxima Versão ● “Modularização” dos “módulos” ● Facilita novas contribuições ● Lighthouse ● Facilitar o port para outras plataformas ● Open Governance ● Tornar público: roadmap, listas, QA
  • 35.
    Documentação Qt ● qt.nokia.com/developer ● qt.nokia.com/doc ● revistaqt.blogspot.com ● qtcentre.org
  • 36.