2. Objetivos
● Apresentar o Qt e os benefícios da sua utilização
● Apresentar uma visão geral das funcionalidades do Qt para
desenvolvimento multiplataforma para dispositivos móveis e
embarcados
● Apresentar os avanços mais recentes do Qt nesta área
● Proporcionar uma vivência prática ao desenvolver uma aplicação
Android com Qt
3. whoami
● Professor no Instituto Federal de Educação, Ciência e Tecnologia da
Bahia – IFBA
● Desenvolvedor, projetista e arquiteto de software
● Pesquisador: engenharia de software + sistemas distribuídos
● Colaborador nos projetos de Software Livre Qt e KDE
– QtModeling
– KDevelop, Plasma e Minuet
● Foi membro do KDE Marketing Working Group
● Membro do Board de Diretores do KDE e.V.
4. O Qt
● Toolkit multiplataforma para desenvolvimento de aplicações
(www.qt.io)
● Oferece um amplo conjunto de funcionalidades para multimídia,
programação em rede, banco de dados, testes, Bluetooth, OpenGL,
programação multi-threaded, scripting, XML, web channel, etc
● Oferece três tecnologias principais para desenvolvimento de GUI:
– Qt Widgets: C++ (oficial), Python, C#, Go, Haskell, Ruby
– Qt Quick: QML + JS
– Qt Webkit: HTML + CSS + JS
5. O Qt
● Comparação entre as três tecnologias para GUI:
Qt Widgets Qt Quick Qt Webkit
Linguagens utilizadas C++ QML/JS HTML/CSS/JS
Look n feel nativo’ ’ ✔ ✔
Look n feel customizado’ ’ ✔ ( )✔
GUI fluidas e animadas ✔
Suporte a touch screen ✔
Widgets padrao da industria ✔
6. O Qt
● Comparação entre as três tecnologias para GUI:
Qt Widgets Qt Quick Qt Webkit
Model/View programming ✔ (✔)
Rapid UI development ✔ ( )✔
Aceleracao por hardware ✔
Efeitos graficos ✔
Processamento de rich text ✔ ✔
Integracao de conteudo web
existente
✔
7. O Qt
● Por que usar?
– É uma tecnologia madura (20 anos de existência)
– É um toolkit extremamente produtivo (mesmo com C++ e melhor ainda
com QML/JS)
– É um toolkit bastante completo
– É efetivo no suporte ao desenvolvimento multiplataforma:
● Linux/X11
● Windows
● OS X
● Android
● IOS
● WinCE
8. O Qt
● Por que usar?
– Excelente documentação e comunidade bastante ativa
– Excelente desempenho (aceleração via hardware no QML)
– Diversas bibliotecas de terceiros baseadas no Qt (inqlude.org)
– Open governance com licença dual:
● LGPL
● Comercial
9. O Qt
● Quem usa?
– Guitar Pro
– Autodesk Maya
– Skype
– Virtualbox
– VLC
– KDE
– Setores automotivo, IoT,
médico e industrial
10. O Qt
● Quem usa?
– Guitar Pro
– Autodesk Maya
– Skype
– Virtualbox
– VLC
– KDE
– Setores automotivo, IoT,
médico e industrial
11. O Qt
● Quem usa?
– Guitar Pro
– Autodesk Maya
– Skype
– Virtualbox
– VLC
– KDE
– Setores automotivo, IoT,
médico e industrial
12. O Qt
● Quem usa?
– Guitar Pro
– Autodesk Maya
– Skype
– Virtualbox
– VLC
– KDE
– Setores automotivo, IoT,
médico e industrial
13. O Qt e o Mundo Mobile
● É uma longa história, na verdade …
– 2000: Qt/Embedded + Qtopia
– 2006: Qtopia em milhares de dispositivos (Sharp / Motorola)
14. O Qt e o Mundo Mobile
● É uma longa história, na verdade …
– 2009: lançamento do QML
– 2010-2011: Qt no Symbian e MeeGo
15. O Qt e o Mundo Mobile
● É uma longa história, na verdade …
– 2011: projeto Necessitas (KDE) e o primeiro port do Qt para
Android
– 2013: primeiro technical-preview do suporte ao Android e iOS
oficial do Qt
● Inclusão das plataformas BlackBerry, Sailfish/Jolla and Ubuntu
Mobile
– 2014: cross-platform Qt Purchasing API e Bluetooth LE
– 2015: QML Qt Location e Qt Quick Controls for Embedded
16. O Qt e o Android
● Solução: QPA + JNI
● O Qt Creator gera o arquivo .apk pra você
● Uma aplicação Qt para Android consiste de duas partes:
– A aplicação em si, criada pelo desenvolvedor
– Um laucher da aplicação Android, gerada automaticamente pelo Qt
Creator
17. O Qt e o Android
● O Qt Creator oferece três métodos de implantação:
– Todas as dependências Qt empacotadas no .apk, ou
– Uso do mecanismo de implantação Ministro para gerenciar
dependências Qt
– Implantar as bibliotecas do Qt em um diretório temporário (somente
para propósitos de desenvolvimento)
● Start-up da aplicação:
– No começo é apenas uma aplicação Java
– Ocorre a carga das libs do Qt e o plugin do QPA
– A função main da aplicação é invocada em uma nova thread
18. O Qt e o Android
● Configuração do ambiente (passo-a-passo):
– Criar um novo usuário (ex: android-devel)
– Instalar os pacotes básicos de desenvolvimento:
● pacman -S --needed base-devel qt5 jdk jre git gdb wget
– Baixar (www.qt.io) e instalar, no home do usuário android-
devel, o Qt para Android
– Após a instalação, executar o Qt Creator:
● Caminho “Tools/QtCreator/bin/qtcreator” na instalação do Qt
19. O Qt e o Android
● Configuração do ambiente (passo-a-passo):
– No Qt Creator, ir em Tools Options Android:→ →
● Clique nos botões de download do Android SDK e Android NDK
● Realize o download
● Informe o caminho das instalações nos respectivos campos
– Encontre o número de API correspondente à versão do Android
no seu dispositivo
– Execute o Android SDK Manager (caminho “tools/android” na
instalação do Android SDK) e selecione somente o grupo
referente ao número de API do seu dispositivo
– Instale os pacotes
20. O Qt e o Android
● Configuração do ambiente (passo-a-passo):
– Inicie o adb server (como root, sem usar o sudo): caminho
“platform-tools/adb start-server” na instalação do Android SDK
– Verifique se o seu dispositivo está com o modo developer
ativado. Ative caso não esteja
– Ligue seu dispositivo na porta USB do computador e confirme o
pedido de permissão para depuração USB
– Pronto: ao executar um projeto Qt com o kit do Android
selecionado, o Qt Creator irá perguntar em qual dispositivo
você deseja executar a aplicação (incluindo emuladores)
21. O Qt e o Android
● Módulos Qt de uso específico em dispositivos móveis (a maioria é
multiplataforma):
– Qt Bluetooth (QML e C++): Android, iOS, Linux (BlueZ 4.x/5.x) e OS X
– Qt Graphical Effects (QML)
– Qt Positioning (QML e C++): Android, iOS, Linux (com GeoClue) e WinRT
● Fontes de posicionamento (ex: satélite, wifi, arquivos) são plugins
– Qt Sensors (QML e C++): Android, iOS, SailFish e WinRT
● Acelerômetro, orientação, luz ambiente, dentre outros
– Qt Quick Extras
– Qt Android Extras: Qt Notifier
– Qt Mac Extras
22. Qt e Material Design
● Conjunto de diretrizes de design (linguagem visual) de UX do
Google
● Três esforços diferentes relacionados ao Qt:
– qml-material: https://github.com/papyros/qml-material
– Technical preview no Qt 5.6, esperado para o Qt 5.7
– Plasma Components
24. Qt e Material Design
● qml-material: IFBA’s SICAD Mobile
25. Qt e Material Design
● Hands-on: Niftly - RSS Reader
26. Conclusões
● O Qt para Android já é bem estável para uso em produção
● A possibilidade do uso de um mesmo codebase para escrever
aplicações para diversas plataformas móveis faz do Qt uma das
soluções mais interessantes nesta área atualmente
● O QML não pára de evoluir
● qml-material x Qt 5.6 x plasma components (o que usar ?)
27. Junte-se a nós!
● http://br.kde.org
● Lista de discussão:
– https://mail.kde.org/mailman/listinfo/kde-br
● Canal de IRC: freenode #kde-brasil
● O KDE e.V. apoia a sua contribuição
● Participe do Google Summer of Code e do KDE Season of Code