Desenvolvimento Cross-Platform Com C++ E Qt
Total Page:16
File Type:pdf, Size:1020Kb
Desenvolvimento Cross-Platform com C++ e Qt Sandro Santos Andrade [email protected] http://liveblue.wordpress.com Objetivos ● Apresentar as principais funcionalidades do Qt 4.6 utilizadas no desenvolvimento produtivo de aplicações cross-platform modernas ● Proporcionar uma vivência prática inicial das soluções mais utilizadas neste toolkit motivando a formação de novos desenvolvedores Qt / KDE ● Discutir decisões de projeto, idiomas e ferramentas auxiliares utilizados no Qt Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 2 Pré-requisitos ● Necessários: ● Fundamentos de Orientação a Objetos (OO) ● Experiência com alguma linguagem OO ● Experiência com desenvolvimento de aplicações visuais ● Desejáveis: ● Fundamentos da linguagem Standard C++ ● Especiais: ● Padrões de projeto, estilos arquiteturais, application frameworks etc Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 3 Metodologia ● Duração: 60 horas ● Tópicos expositivos e laboratórios práticos ● Referências: ● Livros ● Qt Reference Documentation ● Fóruns (QtCentre etc) ● Qt Quarterly Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 4 Metodologia ● Duração: 60 horas ● Tópicos expositivos e laboratórios práticos ● Referências: ● Livros ● Qt Reference Documentation ● Fóruns (QtCentre etc) ● Qt Quarterly Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 5 Sobre o instrutor ● Sandro Andrade – Doutorando pelo DMCC (UFBa) – Nove anos de experiência com desenvolvimento em Qt e treze anos com C++ – Dez anos de experiência em atividades docentes – Desenvolvedor KDE nos projetos KDevelop, Gluon e Plasma. Membro do KDE e.V. – Co-fundador do Live Blue – Grupo de Desenvolvedores KDE da Bahia – Desenvolvedor Qt certificado pela NOKIA Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 6 Visão Geral ● O Qt é um toolkit para desenvolvimento de aplicações cross-platform com recursos para IPC, networking, XML, SVG, banco de dados, scripting, OpenGL, animações, multi-touch, reconhecimento de gestos, multimídia e soluções mobile ● Disponível publicamente desde maio de 1995 ● Possui mais de 800 classes e 9000 funções ● Utilizado em mais de 70 empresas de ponta ● Possui licença dual (LGPL e comercial) Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 7 Histórico dos Toolkits Gráficos ● X11 ● Motif ● Tcl / Tk ● Fltk ● WxWidgets ● MFC / AWT / Swing ● GTK / Qt Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 8 Visão Geral ● Módulos e ferramentas Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 9 Visão Geral ● Widgets Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 10 Visão Geral ● Dialogs e Main Windows Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 11 Visão Geral ● Dialogs e Main Windows Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 12 Visão Geral ● Dialogs e Main Windows Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 13 Visão Geral ● Gráficos 2D Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 14 Visão Geral ● Gráficos 2D Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 15 Visão Geral ● Gráficos 2D Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 16 Visão Geral ● Gráficos 2D Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 17 Visão Geral ● OpenGL Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 18 Visão Geral ● OpenGL Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 19 Visão Geral ● OpenGL Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 20 Visão Geral ● Scripting Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 21 Visão Geral ● Interfaces animadas Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 22 Visão Geral ● Model View Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 23 Visão Geral ● Banco de Dados Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 24 Visão Geral ● Networking Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 25 Visão Geral ● XML Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 26 Visão Geral ● Ferramentas (Qt Designer) Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 27 Visão Geral ● Ferramentas (Qt Linguist) Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 28 Visão Geral ● Ferramentas (Qt Assistant) Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 29 Visão Geral ● Qt Mobile Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 30 Visão Geral ● Qt Mobile Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 31 Visão Geral ● Qt Mobile Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 32 História do Qt ● Primeira versão disponibilizada em 1995, por Haavard Nord e Eirik Chambe-Eng ● Seu desenvolvimento se iniciou em 1991 e em 1993 já existia um núcleo que suportava widgets ● A letra 'Q' foi escolhida porque ela aparecia de forma bonita no editor emacs de Haavard :) ● O “t” vem da palavra toolkit ● Em 1994 foi fundada a Trolltech, antes Troll Tech e ainda antes Quasar Technologies Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 33 História do Qt ● Em 1996 foi lançado o Qt 1.1 e a Trolltech tinha 8 clientes ● Também em 1996 o projeto KDE (na época The K Desktop Environment) foi fundado por Matthias Ettrich ● O 'K' (do KDE) era simplesmente a letra que vinha antes do 'L' (do Linux) :) Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 34 História do Qt ● Em 1997 o Qt passa a ser utilizado no desenvolvimento do KDE e a versão 1.3 é lançada ● Em 1999, o Qt2 passa a ser licenciado pela QPL (Qt Public License) ● Em 2000 é lançado o Qtopia (Qt para ambientes mobile) ● Neste mesmo, o Qt passa a ser licenciado pela GPL (GNU Public License) Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 35 História do Qt ● 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 (Qt Software → Qt Development Frameworks) Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 36 História do Qt ● Em 2009 o Qt passa a ser liberado sob a licença LGPL e seus repositórios se tornam abertos a contribuições da comunidade (qt.gitorious.org) ● Em 2010 o Qt adota o modelo de Open Governance Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 37 Porque o Qt ? ● Quem usa o Qt ? Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 38 Instalando o Qt 4.6 ● Linux: ● Via compilação dos fontes obtidos em qt.nokia.com ou qt.gitorious.org ● Via binários disponibilizados através de pacotes para a sua distribuição ● Geralmente existem pacotes separados para: – Bibliotecas e headers – Ferramentas (Designer, Linguist e Assistant) – Demos – Documentação – Qt Creator (IDE) Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 39 Instalando o Qt 4.6 ● Windows: ● Fazer o download do Qt SDK para Windows ● Executar o programa de instalação ● O programa de instalação irá fazer o download do MinGW (Minimalist GNU for Windows) ● Pode ser utilizado com o Microsoft Visual C++ ou Eclipse, além do Qt Creator Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 40 Lab1: Hello Qt 1 #include <QApplication> 2 #include <QLabel> 3 4 int main(int argc, char *argv[]) 5 { 6 QApplication app(argc, argv); 7 QLabel *label = new QLabel("Hello Qt!"); 8 label->show(); 9 return app.exec(); 10 } ● Executar: $ qmake -project $ qmake $ make Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 41 Lab1: Hello Qt ● O qmake: ● Ferramenta que automatiza o processo de compilação, linking e instalação em diferentes plataformas ● Realiza a geração automática de Makefiles a partir de arquivos de projeto de fácil criação ● O arquivo de projeto pode ser criado pelo desenvolvedor ou automaticamente pelo qmake (opção -project) ● Os módulos QtCore e QtGui são automaticamente incluídos no processo de linking Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 42 Lab1: Hello Qt ● O qmake: Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 43 Lab1: Hello Qt ● O qmake: ● Arquivo de projeto automaticamente gerado neste exemplo 1 ################################################################### 2 # Automatically generated by qmake (2.01a) qua jul 21 22:43:25 2010 3 ################################################################### 4 5 TEMPLATE = app 6 TARGET = 7 DEPENDPATH += . 8 INCLUDEPATH += . 9 10 # Input 11 SOURCES += main.cpp Desenvolvimento Cross-Platform com C++ e Qt - Sandro Santos Andrade - Live Blue 44 Lab1: Hello Qt ● O qmake - principais configurações: – Controlando a informação de debug: CONFIG += qt [ debug | release | debug_and_release ] – Inclusões dependentes de plataforma: win32 { SOURCES += hellowin.cpp }