View
226
Download
0
Category
Preview:
Citation preview
7/22/2019 Oficina Qt 4
1/133
Introducao a Programacao C++ com Qt 4
Introducao a Programacao C++ com Qt 4
Antonio Marcio A. Menezesantonio-marcio.menezes@serpro.gov.br
II Forum de Tecnologia em Software Livre
SERPRO - Regional Porto Alegre
Outubro de 2009
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (1/112)
http://find/7/22/2019 Oficina Qt 4
2/133
Introducao a Programacao C++ com Qt 4
Agenda
1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?2 Pratica - Construcao de uma Agenda de Telefones
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (2/112)
http://find/7/22/2019 Oficina Qt 4
3/133
Introducao a Programacao C++ com Qt 4
Agenda
1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?2 Pratica - Construcao de uma Agenda de Telefones
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (2/112)
http://find/7/22/2019 Oficina Qt 4
4/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Agenda
1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?2 Pratica - Construcao de uma Agenda de Telefones
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (3/112)
http://find/7/22/2019 Oficina Qt 4
5/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Qt, o que e isso?
Qt,muito mais que uma biblioteca, e um framework para desen-
volvimento multi-plataforma de aplicacoes.
Qt esta disponvel para as seguintes plataformas:
Windows.
Windows CE.
Linux/X11.Linux Embarcado.
S60 (Symbian - Em Breve).
MacOS X.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (4/112)
http://find/7/22/2019 Oficina Qt 4
6/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Historia do Qt
O framework Qt comecou a estar disponvel publicamente a
partir de maio de 1995. Foi criado por Haarvard Nord e Eirik
Chambe-Eng, fundadores da empresa Trolltech. Desde seu
incio, Qt foi concebido para ser multiplataforma.
Em marco de 1996, a agencia espacial europeia se tornou o
segundo cliente do Qt. E emsetembro deste ano, foi lancada aversao 1.0do Qt. Ainda neste ano, foi iniciado oprojeto KDE,
desenvolvido com Qt, porMatthias Ettrich. Mais tarde, em1998,
Matthias foi contratado pela Trolltech.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (5/112)
http://find/7/22/2019 Oficina Qt 4
7/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Historia do Qt
O framework Qt comecou a estar disponvel publicamente a
partir de maio de 1995. Foi criado por Haarvard Nord e Eirik
Chambe-Eng, fundadores da empresa Trolltech. Desde seu
incio, Qt foi concebido para ser multiplataforma.
Em marco de 1996, a agencia espacial europeia se tornou o
segundo cliente do Qt. E emsetembro deste ano, foi lancada aversao 1.0do Qt. Ainda neste ano, foi iniciado oprojeto KDE,
desenvolvido com Qt, porMatthias Ettrich. Mais tarde, em1998,
Matthias foi contratado pela Trolltech.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (5/112)
http://find/7/22/2019 Oficina Qt 4
8/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Historia do Qt
Em 1999, aversao 2.0 do Qt foi liberada. Uma versao do Qt
para linux embarcado, por sua vez, foi lancada em2000.
Em2001, seguiu-se o lancamento daversao 3.0do Qt, agora
disponvel para Windows, MacOS X, Unix e Linux (desktop e
embarcado).
Em meados de2005, aversao Qt 4.0tornou-se disponvel, con-
tando com 500 classes e mais de 9000 funcoes.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (6/112)
http://find/7/22/2019 Oficina Qt 4
9/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Historia do Qt
Em 1999, aversao 2.0 do Qt foi liberada. Uma versao do Qt
para linux embarcado, por sua vez, foi lancada em2000.
Em2001, seguiu-se o lancamento daversao 3.0do Qt, agora
disponvel para Windows, MacOS X, Unix e Linux (desktop e
embarcado).
Em meados de2005, aversao Qt 4.0tornou-se disponvel, con-
tando com 500 classes e mais de 9000 funcoes.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (6/112)
http://find/http://goback/7/22/2019 Oficina Qt 4
10/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Historia do Qt
Em 1999, aversao 2.0 do Qt foi liberada. Uma versao do Qt
para linux embarcado, por sua vez, foi lancada em2000.
Em2001, seguiu-se o lancamento daversao 3.0do Qt, agora
disponvel para Windows, MacOS X, Unix e Linux (desktop e
embarcado).
Em meados de2005, aversao Qt 4.0tornou-se disponvel, con-
tando com 500 classes e mais de 9000 funcoes.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (6/112)
http://find/7/22/2019 Oficina Qt 4
11/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Historia do Qt
Em2008, a empresa Trolltech foi adquirida pelaNokia. Trolltech
agora e chamada deQt Software. Pouco tempo depois, o Qt
passou a ser lancado sob as licencas GPL, LGPL e comercial.
Recentemente, alem de ser fornecido o framework Qt, a em-
presa Qt Software passou a fornecer uma IDE amigavel paradesenvolvimento de aplicacoes: oQt Creator.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (7/112)
http://find/7/22/2019 Oficina Qt 4
12/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Historia do Qt
Em2008, a empresa Trolltech foi adquirida pelaNokia. Trolltech
agora e chamada deQt Software. Pouco tempo depois, o Qt
passou a ser lancado sob as licencas GPL, LGPL e comercial.
Recentemente, alem de ser fornecido o framework Qt, a em-
presa Qt Software passou a fornecer uma IDE amigavel paradesenvolvimento de aplicacoes: oQt Creator.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (7/112)
http://find/7/22/2019 Oficina Qt 4
13/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Por que C++ e Qt?
O que eu ganho em programar com C++ e Qt?
DesenvolvimentoMultiplataforma.Programacao C++ mais amigavelcom Qt.
Implemente uma vez.Compile em qualquer lugar.
Aplicacoes KDEsao feitas com Qt.
Criacao de interfaces graficaselegantes e amigaveis.Utilizacao de uma APIrica e util.
LicencasComercial, LGPL e GPL.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (8/112)
http://find/7/22/2019 Oficina Qt 4
14/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Quem usa Qt?
Em Aplicacoes Desktop
Phoenix, um sistema para controle de agendamento emonitoracao de voos, desenvolvido pela DFS (empresa de
controle aereo da Alemanha).
VLC, reprodutor de mdia.
Google Earth, para visualizacao de imagens de satelite e
outras informacoes georreferenciadas.
Skype, ferramenta de comunicao de voz e dados via internet.
PSI, programa para envio de mensagens instantaneas.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (9/112)
http://find/7/22/2019 Oficina Qt 4
15/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Quem usa Qt?
Em Sistemas Embarcados
Porta-retrato digital SPF-105V daSamsung.
Varios modelos de celulares daMotorola.
Vdeo-fone VP 5500 daPhilips.
Sony mylo, um comunicador pessoal.
Telefone Wi-Fi KX-WP1050 paraSkypedaPanasonic.
Smartphones 3G daZTE.
GPS Naviflash 1020 daBury.
Reprodutor de mdia portatil dadigitalCube.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (10/112)
http://find/7/22/2019 Oficina Qt 4
16/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Agenda
1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?2 Pratica - Construcao de uma Agenda de Telefones
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e SlotsAcesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (11/112)
http://find/7/22/2019 Oficina Qt 4
17/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
O que preciso para comecar?
Conhecer C ou C++
Apesar de ser importante um conhecimento mais avancado
de C++, para quem programa em Java ou outras linguagens
orientadas a objetos e possvel apenas estudar as diferencassintaticas para ja iniciar o aprendizado.
Estudar atraves de exemplos
A instalacao do Qt ja vem com muitos exemplos de aplicacoesuteis. Estes exemplos sao fornecidos com seus codigos.
Instalar o Qt SDK e consultar outras referencias (apresen-
tadas ao final deste curso).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (12/112)
http://find/7/22/2019 Oficina Qt 4
18/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao
Na pagina http://qt.nokia.com/downloads voce pode fazer o
download da versao LGPL/Free.
Clique em Download Qt SDK for Linux/X11 32-bit (275Mb).
Com isto, voce ira obter o arquivo de instalacao (certifique-
se de conceder permissao de execuc
ao para o mesmo):qt-sdk-linux-x86-opensource-2009.03.1.bin.
E necessario tambem verificar se estao instalados os seguintes
pacotes: libfreetype6-develibgtk2.0-dev.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (13/112)
http://find/http://goback/7/22/2019 Oficina Qt 4
19/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao - Tela 1
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (14/112)
http://find/http://goback/7/22/2019 Oficina Qt 4
20/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao - Tela 2
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (15/112)
http://find/7/22/2019 Oficina Qt 4
21/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao - Tela 3
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (16/112)
http://find/7/22/2019 Oficina Qt 4
22/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao - Tela 4
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (17/112)
http://find/http://goback/7/22/2019 Oficina Qt 4
23/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao - Tela 5
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (18/112)
http://find/7/22/2019 Oficina Qt 4
24/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao - Tela 6
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (19/112)
http://find/7/22/2019 Oficina Qt 4
25/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao - Tela 7
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (20/112)
http://find/7/22/2019 Oficina Qt 4
26/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao - Tela 8
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (21/112)
http://find/7/22/2019 Oficina Qt 4
27/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Instalacao - Resumo
Ao final, no diretorio de instalacao do Qt SDK, serao encontra-
dos os seguintes subdiretorios:
bine o diretorio onde se encontra o executavel do IDEQt Creator.
lib armazena bibliotecas necessarias a execucao do Qt
Creator.
qte onde se encontra o framework Qt e suas ferramen-
tas. Dentro deste, ha outro diretoriobinque contem os
executaveis do framework.
share e apenas um diretorio de recursos (doc, ima-
gens etc) utilizados pelo Qt Creator.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (22/112)
http://find/7/22/2019 Oficina Qt 4
28/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Fundamentos
Um programa em C++ consiste de um ou mais unidades de
compilacao. Cada unidade de compilacao e um arquivo texto
de codigo fonte, tipicamente, com uma extensao.cpp(ou .cc ou.cxx).
Para uma unidade de compilacao, o compilador ira gerar
umarquivo objetocom a extensao.obj(no Windows) ou.o(no
Unix ou MACOS X). O arquivo objeto e umarquivo binariocomo codigo de maquinaespecfico da arquiteturada maquina onde
foi gerado.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (23/112)
P T i
http://find/7/22/2019 Oficina Qt 4
29/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Fundamentos
Um programa em C++ consiste de um ou mais unidades de
compilacao. Cada unidade de compilacao e um arquivo texto
de codigo fonte, tipicamente, com uma extensao.cpp(ou .cc ou.cxx).
Para uma unidade de compilacao, o compilador ira gerar
umarquivo objetocom a extensao.obj(no Windows) ou.o(no
Unix ou MACOS X). O arquivo objeto e umarquivo binariocomo codigo de maquinaespecfico da arquiteturada maquina onde
foi gerado.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (23/112)
P t T i
http://find/7/22/2019 Oficina Qt 4
30/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Fundamentos
Um programa em C++ passa por 6 passos
Edicao(com um programa editor de texto, por exemplo).
Pre-processamento(atraves de diretivas sao realizadas in-
clusoes e substituicoes de textos).
Compilacao(geracao do codigo objeto).
Ligacao(linking com o codigo das rotinas referenciadas em
bibliotecas).
Carga(carga do programa e bibliotecas na memoria).
Execucao(sob controle da CPU, uma instrucao por vez).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (24/112)
Parte Teorica
http://find/7/22/2019 Oficina Qt 4
31/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Fundamentos
Um programa em C++ passa por 6 passos
Edicao(com um programa editor de texto, por exemplo).
Pre-processamento(atraves de diretivas sao realizadas in-
clusoes e substituicoes de textos).
Compilacao(geracao do codigo objeto).
Ligacao(linking com o codigo das rotinas referenciadas em
bibliotecas).
Carga(carga do programa e bibliotecas na memoria).
Execucao(sob controle da CPU, uma instrucao por vez).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (24/112)
Parte Teorica
http://find/7/22/2019 Oficina Qt 4
32/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Fundamentos
Um programa em C++ passa por 6 passos
Edicao(com um programa editor de texto, por exemplo).
Pre-processamento(atraves de diretivas sao realizadas in-
clusoes e substituicoes de textos).
Compilacao(geracao do codigo objeto).
Ligacao(linking com o codigo das rotinas referenciadas em
bibliotecas).
Carga(carga do programa e bibliotecas na memoria).
Execucao(sob controle da CPU, uma instrucao por vez).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (24/112)
Parte Teorica
http://find/7/22/2019 Oficina Qt 4
33/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Fundamentos
Um programa em C++ passa por 6 passos
Edicao(com um programa editor de texto, por exemplo).
Pre-processamento(atraves de diretivas sao realizadas in-
clusoes e substituicoes de textos).
Compilacao(geracao do codigo objeto).
Ligacao(linking com o codigo das rotinas referenciadas em
bibliotecas).
Carga(carga do programa e bibliotecas na memoria).
Execucao(sob controle da CPU, uma instrucao por vez).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (24/112)
Parte Teorica
http://find/7/22/2019 Oficina Qt 4
34/133
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Fundamentos
Um programa em C++ passa por 6 passos
Edicao(com um programa editor de texto, por exemplo).
Pre-processamento(atraves de diretivas sao realizadas in-
clusoes e substituicoes de textos).
Compilacao(geracao do codigo objeto).
Ligacao(linking com o codigo das rotinas referenciadas em
bibliotecas).
Carga(carga do programa e bibliotecas na memoria).
Execucao(sob controle da CPU, uma instrucao por vez).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (24/112)
Parte TeoricaP C Qt?
http://find/7/22/2019 Oficina Qt 4
35/133
a te eo ca
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Fundamentos
Um programa em C++ passa por 6 passos
Edicao(com um programa editor de texto, por exemplo).
Pre-processamento(atraves de diretivas sao realizadas in-
clusoes e substituicoes de textos).
Compilacao(geracao do codigo objeto).
Ligacao(linking com o codigo das rotinas referenciadas em
bibliotecas).
Carga(carga do programa e bibliotecas na memoria).
Execucao(sob controle da CPU, uma instrucao por vez).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (24/112)
Parte TeoricaPor que C e Qt?
http://find/http://goback/7/22/2019 Oficina Qt 4
36/133
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Modulos do Qt
Os modulos que compoem, atualmente, o framework Qt sao:
QtCore,QtGui, QtNetwork, QtOpenGL, QtScript, QtSql, QSvg,
QtWebKit, QtXml, QtXmlPatterns, Phonon, Qt3Support, QtTest,
QtDBus.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (25/112)
Parte TeoricaPor que C++ e Qt?
http://find/7/22/2019 Oficina Qt 4
37/133
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Ferramentas do Qt
O Qt tambem vem acompanhado de um conjunto de ferramen-
tas que auxiliam o processo de desenvolvimento.
Qt Designerpara o projeto de telas. Permite testar o projeto
de tela sem programar qualquer linha de codigo.
Qt Linguistpara editar arquivos de traducoes, tornando uma
aplicacao com suporte a diferentes lnguas.
Qt Assistant e um guia de consulta rapida e sensvel a con-texto para a API do Qt.
Qt Creatore o IDE para a criacao de projetos de aplicacoes.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (26/112)
Parte TeoricaPor que C++ e Qt?
http://find/7/22/2019 Oficina Qt 4
38/133
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Ferramentas do Qt
O Qt tambem vem acompanhado de um conjunto de ferramen-
tas que auxiliam o processo de desenvolvimento.
Qt Designerpara o projeto de telas. Permite testar o projeto
de tela sem programar qualquer linha de codigo.
Qt Linguistpara editar arquivos de traducoes, tornando uma
aplicacao com suporte a diferentes lnguas.
Qt Assistant e um guia de consulta rapida e sensvel a con-texto para a API do Qt.
Qt Creatore o IDE para a criacao de projetos de aplicacoes.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (26/112)
Parte TeoricaPor que C++ e Qt?
http://find/7/22/2019 Oficina Qt 4
39/133
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Ferramentas do Qt
O Qt tambem vem acompanhado de um conjunto de ferramen-
tas que auxiliam o processo de desenvolvimento.
Qt Designerpara o projeto de telas. Permite testar o projeto
de tela sem programar qualquer linha de codigo.
Qt Linguistpara editar arquivos de traducoes, tornando uma
aplicacao com suporte a diferentes lnguas.
Qt Assistant e um guia de consulta rapida e sensvel a con-texto para a API do Qt.
Qt Creatore o IDE para a criacao de projetos de aplicacoes.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (26/112)
Parte Teorica
P i C d A d d T l fPor que C++ e Qt?
http://find/7/22/2019 Oficina Qt 4
40/133
Pratica - Construcao de uma Agenda de Telefones
Resumo
Por que C++ e Qt?
O que preciso para comecar?
Ferramentas do Qt
O Qt tambem vem acompanhado de um conjunto de ferramen-
tas que auxiliam o processo de desenvolvimento.
Qt Designerpara o projeto de telas. Permite testar o projeto
de tela sem programar qualquer linha de codigo.
Qt Linguistpara editar arquivos de traducoes, tornando uma
aplicacao com suporte a diferentes lnguas.
Qt Assistant e um guia de consulta rapida e sensvel a con-texto para a API do Qt.
Qt Creatore o IDE para a criacao de projetos de aplicacoes.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (26/112)
Parte Teorica
P ti C t d A d d T l fPor que C++ e Qt?
http://find/7/22/2019 Oficina Qt 4
41/133
Pratica - Construc ao de uma Agenda de Telefones
Resumo
q Q
O que preciso para comecar?
Minha primeira aplicacao com Qt
hello.cpp
#include
#include
int main(int argc, char *argv[])
{QApplicationapp(argc, argv);
QLabel*label = newQLabel(QString::fromUtf8(Ola Qt!));label->show();
return app.exec();
}
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (27/112)
Parte Teorica
Pratica Construcao de uma Agenda de TelefonesPor que C++ e Qt?
http://find/7/22/2019 Oficina Qt 4
42/133
Pratica - Construc ao de uma Agenda de Telefones
Resumo
q
O que preciso para comecar?
Minha primeira aplicacao com Qt
Apos criar um diretorio hello, sera includo deste diretorio o
arquivo .cpp da minha primeira aplicacao:hello.cpp
Ao digitar qmake -project, sera criado o arquivo de projeto
hello.pro
qmake hello.pro ira gerar o arquivo Makefile, que orientara a
compilacao do projeto.
Ao digitar make, sera compilado e gerado o executavel da
aplicacao.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (28/112)
Parte Teorica
Pratica Construcao de uma Agenda de TelefonesPor que C++ e Qt?
http://find/http://goback/7/22/2019 Oficina Qt 4
43/133
Pratica - Construc ao de uma Agenda de Telefones
ResumoO que preciso para comecar?
Minha primeira aplicacao com Qt
Figura:No Linux Figura:No Windows
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (29/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
http://find/7/22/2019 Oficina Qt 4
44/133
Pratica - Construc ao de uma Agenda de Telefones
Resumo
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Agenda
1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?
2 Pratica - Construcao de uma Agenda de Telefones
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e SlotsAcesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (30/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
http://find/7/22/2019 Oficina Qt 4
45/133
Pratica Construc ao de uma Agenda de Telefones
Resumo
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Roteiro para a Pratica
Neste treinamento, serao exercitadas algumas tarefas comuns
no desenvolvimento de um sistema informatizado. Para agilizar o
treinamento, serao propostasversoes incrementaisda aplicacaoexemplo.
Estas versoes incrementais poderao ser enxergadas como
pontos de controle. Quando um aluno concluir a principal ativi-
dade de um ponto de controle, ele podera adotar uma versao
mais completa da aplicacao e seguir para as proximas tarefas.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (31/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
http://find/7/22/2019 Oficina Qt 4
46/133
Pratica Construc ao de uma Agenda de Telefones
Resumo
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Roteiro para a Pratica
Versoes incrementais da aplicacao
agenda-telefonica1.zip contem o projeto inicial, sem pro-
jeto de tela e apenas um arquivo principal de execucao daaplicacao.
agenda-telefonica2.zip contem o layout inicial da tela princi-
pal da aplicacao.
agenda-telefonica3.zip contem a barra de ferramentas datela principal da aplicacao com as acoes basicas e cones.
agenda-telefonica4.zip contem o recurso de ativar a
aplicacao naarea de notificacao.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (32/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
http://find/7/22/2019 Oficina Qt 4
47/133
g
Resumo
g
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Roteiro para a Pratica
Versoes incrementais da aplicacao
agenda-telefonica5.zip inclui codigo para evitar que mais de
uma agenda seja carregada na memoria ao mesmo tempo.Sao criadas as primeiras conexoes entre signals e slots.
agenda-telefonica6.zip contem o primeiro codigo para
acesso ao banco de dados e apresentacao dos dados na
janela principal.agenda-telefonica7.zip inclui o projeto das telas de cadastro
de departamentos e de telefones, e o armazenamento em
banco de dados.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (33/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
http://find/http://goback/7/22/2019 Oficina Qt 4
48/133
g
Resumo
g
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Roteiro para a Pratica
Versoes incrementais da aplicacao
agenda-telefonica8.zip contem a aplicacao com suas telastraduzidas para o ingles e tambem o arquivo de traducao da
aplicacao para o portugues.
agenda-telefonica9.zip contem os arquivos necessarios da
agenda para o instalador da aplicacao.
agenda-telefonica10.zip inclui o projeto do instalador com a
ferramenta GPLinstallJammer.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (34/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
http://find/7/22/2019 Oficina Qt 4
49/133
Resumo Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Requisitos da Aplicacao
Requisitos I
Cadapessoacadastrada na agenda devera ser associada a
umdepartamentona qual trabalha.
Todo departamento sera identificado por um codigo, uma
siglae umnome. Siglas e nomes dos departamentos serao
alfanumericos.
O cadastro de cada pessoa e seu telefone de contato poderatambem ser acrescido com a informacao de um numero de
ramal.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (35/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
http://find/7/22/2019 Oficina Qt 4
50/133
Resumo Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Requisitos da Aplicacao
Requisitos II
Os dados dos cadastros serao armazenadoslocalmente, na
maquina onde se executa a agenda.A janela principal da agenda devera fornecer uma busca sim-
plificada dos telefones pelos criterios: nome (ou parte do
nome) da pessoa e o nome do departamento.
Inicialmente, a janela principal mostrara a lista de todos ostelefones, ordenados por nome da pessoa.
Devera ser exibido na janela principal tambem umcontador
do numero de itensexibidos nesta lista.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (36/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
http://find/7/22/2019 Oficina Qt 4
51/133
Resumo Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Requisitos da Aplicacao
Requisitos III
Devera existir uma janela debusca avancadaonde poderaoser identificadas as pessoas e seus telefones por parte do
telefone/ramal ou parte do nome do departamento.
Quando a janela da agenda for fechada, ela devera ficar
ainda ativa, com um cone na area de notificacao(System
TrayBar). Nesta situacao, o usuario podera clicar sobre este
cone e solicitar que a janela seja novamente exibida.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (37/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
R
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
A B d D d
http://find/http://goback/7/22/2019 Oficina Qt 4
52/133
Resumo Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Requisitos da Aplicacao
Requisitos IV
O cadastro dos departamentos sera feito em uma janela,
separadamente. Em outra janela, sera feito o cadastro das
pessoas e seus telefones.
Nao podera ser cadastrado mais de um numero de telefone
por pessoa.
A empresa que utilizara a agenda de telefones e ramais de-seja executar este programa em maquinas com Linux ou
Windows.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (38/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/7/22/2019 Oficina Qt 4
53/133
Resumo Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Esboco da Janela Principal da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (39/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a PraticaCriando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/7/22/2019 Oficina Qt 4
54/133
Resumo Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Diagrama ER da Aplicacao
Para fins de simplicidade, sera utilizado o bancoSqlite.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (40/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/7/22/2019 Oficina Qt 4
55/133
Resumo Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Script de criacao do banco de dados
create tableDEPARTAMENTOS(CODIGOINTEGER NOT NULL
PRIMARY KEY AUTOINCREMENT,
NOMEVARCHAR(256) NOT NULL UNIQUE,
SIGLAVARCHAR(30) NULL
);
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (41/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/7/22/2019 Oficina Qt 4
56/133
Resumo Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Script de criacao do banco de dados
create tablePESSOAS(
NOMEVARCHAR(80) NOT NULL PRIMARY KEY,
DEP CODIGOINTEGER NOT NULLREFERENCES DEPARTAMENTOS(CODIGO)
ON DELETE RESTRICT ON UPDATE RESTRICT
ON INSERT RESTRICT,
DDDINTEGER,
TELEFONEINTEGER NOT NULL,
RAMALINTEGER
);
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (42/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/7/22/2019 Oficina Qt 4
57/133
Resumo Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Agenda1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?
2 Pratica - Construcao de uma Agenda de Telefones
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e SlotsAcesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (43/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/7/22/2019 Oficina Qt 4
58/133
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Exerccio de Criacao do Projeto
Exerccio 01
Objetivo: Aprender como criar um projeto deaplicacao GUI (janela do tipo QMainWindow)
com o Qt Creator.
Tempo Estimado: 5 a 8 min.
Resultado Esperado: Criar todos os arquivos,
como os que foram criados na versao agenda-
telefonica1.zip.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (44/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/http://goback/7/22/2019 Oficina Qt 4
59/133
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Definindo o tipo de projeto
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (45/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/http://goback/7/22/2019 Oficina Qt 4
60/133
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Definindo o nome do projeto
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (46/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/http://goback/7/22/2019 Oficina Qt 4
61/133
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Modulos do Qt que farao parte do projeto
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (47/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
http://find/7/22/2019 Oficina Qt 4
62/133
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Definindo uma nova classe do tipo QMainWindow
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (48/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
T d i d A li
http://find/7/22/2019 Oficina Qt 4
63/133
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Resumo da criacao do projeto
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (49/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Trad indo a Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
64/133
Traduzindo a Aplicac ao
Construindo o instalador da Aplicacao
Tela do Qt Creator com o novo projeto
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (50/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
65/133
Traduzindo a Aplicac ao
Construindo o instalador da Aplicacao
Agenda1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?
2 Pratica - Construcao de uma Agenda de Telefones
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e SlotsAcesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (51/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
66/133
Traduzindo a Aplicac ao
Construindo o instalador da Aplicacao
Widgets
Widgets (Window Gadgets) sao componentes que possuem uma
representacao grafica no projeto de telas. Com oQt Designer, o
desenvolvedor pode criar interfaces graficas de usuario apenasarrastando e soltando varios widgets sobre a janela que esta
sendo projetada.
E possvel tambem testar o funcionamento visual da janela sob
temas graficos diferentes (Plastique, GTK+, Motif, CleanLooksetc).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (52/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
67/133
Traduzindo a Aplicac ao
Construindo o instalador da Aplicacao
Exerccio com Widgets
Exerccio 02
Objetivo: Aprender a criar projetos de telas comcomponentes visuais.
Tempo Estimado: 2 a 5 min.
Resultado Esperado: Adicionar todos os widgets
necessarios para o projeto da janela principal daAgenda.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (53/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
68/133
Traduzindo a Aplicac ao
Construindo o instalador da Aplicacao
Exerccio com Widgets - Esboco da Tela
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (54/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
http://find/7/22/2019 Oficina Qt 4
69/133
p
Construindo o instalador da Aplicacao
Exerccio com Widgets - Atribuindo textos
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (55/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
http://find/7/22/2019 Oficina Qt 4
70/133
p
Construindo o instalador da Aplicacao
Exerccio com Widgets - Atribuindo textos ao Menu
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (56/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
http://find/7/22/2019 Oficina Qt 4
71/133
Construindo o instalador da Aplicacao
Atribuindo textos ao Menu (QMenu)
Ao adicionar itens ao menu principal, automaticamente
serao criadasActionsque poderao ser ligadas a metodos
da janela principal. Tambem e possvel definir cones para
as Actions, mas para issoe necessario criar um arquivo de
recursos.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (57/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
http://find/7/22/2019 Oficina Qt 4
72/133
Construindo o instalador da Aplicacao
Criando um arquivo de recursos
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (58/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
http://find/7/22/2019 Oficina Qt 4
73/133
Construindo o instalador da Aplicacao
Criando um arquivo de recursos
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (59/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
C i d i l d d A li
http://find/7/22/2019 Oficina Qt 4
74/133
Construindo o instalador da Aplicacao
Criando um arquivo de recursos
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (60/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
C t i d i t l d d A li
http://goforward/http://find/http://goback/7/22/2019 Oficina Qt 4
75/133
Construindo o instalador da Aplicac ao
Criando um arquivo de recursos
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (61/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
76/133
Construindo o instalador da Aplicac ao
Atribuindo umcone a uma Action
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (62/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
77/133
Construindo o instalador da Aplicac ao
Atribuindo umcone a uma Action
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (63/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
78/133
Construindo o instalador da Aplicac ao
Atribuindo umcone a uma Action
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (64/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
79/133
Construindo o instalador da Aplicac ao
Actions e Barra de Ferramentas
A partir dopainel de actions, e possvel arrastar e soltar actions
sobre abarra de ferramentasda janela principal. Com isto, serao
automaticamente criados botoes na barra de ferramentas que
acionarao as actions ao serem clicados. Os conesdas actions
tambem aparecerao nos botoes da barra de ferramentas.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (65/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
80/133
Co st u do o sta ado da p cacao
Exerccio com Layouts
Exerccio 03
Objetivo: Aprender a definir os layouts de telascom o Qt Creator / Qt Designer.
Tempo Estimado: 8 a 12 min.
Resultado Esperado: Layout basico de widgets
na janela principal.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (66/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
81/133
p
Definindo o primeiro layout
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (67/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
82/133
Definindo o primeiro layout
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (68/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
83/133
Definindo o primeiro layout
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (69/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
84/133
Definindo o primeiro layout
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (70/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
85/133
Adicionando um botao a um layout ja existente
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (71/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
86/133
Agenda
1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?
2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (72/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
87/133
O que sao signals e slots?
No Qt, um signal (sinal)e emitido quando um evento ocorre. Exis-
tem signals pre-definidos, mas tambeme possvel de definir seus
proprios signals. Um signal pode ser ligado a um metodo. Desta
forma, quando o signal for emitido, este metodo sera executado.
Nesta ligacao entre signal e metodo, o metodoe oslot.
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (73/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/http://goback/7/22/2019 Oficina Qt 4
88/133
Conectando um signal a um slot da janela principal
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (74/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
89/133
Definindo signal e slot apropriados
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (75/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
http://find/7/22/2019 Oficina Qt 4
90/133
Exerccio com Signals
Exerccio 04
Objetivo: Aprender a conectar signals e slots dos widgetscom Qt Designer.
Tempo Estimado: 2 a 5 min.
Resultado Esperado: O click sobre umQPushButtonexecu-
tara o metodo clean de umQLineEdit. Testar este compor-
tamento com oForm Previewno Qt Designer.
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (76/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
S S Q
http://find/http://goback/7/22/2019 Oficina Qt 4
91/133
Signals e Slots no Qt Designer
Num painel (ou janela) do Qt Designer, se pode consultar as
conexoes ja definidas entre sinais e slots.
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (77/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
C d i l l i
http://find/7/22/2019 Oficina Qt 4
92/133
Conectando signal e slot, programaticamente
Exemplo conectando Signal e Slot
void conectarSignals()
{connect(
ui->pushButton 2, SIGNAL(clicked()),
lineEdit, SLOT(clear())
);}
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (78/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
M i b i l
http://find/7/22/2019 Oficina Qt 4
93/133
Mais sobre signals
Um signal tambem podem ser conectado a outro signal.
O mecanismo de conexao entre signals e slots tambem
pode resolver o problema de referencia cclica. Por exemplo,
a janela principal pode criar uma outra janela e esperar que
interacoes nesta segunda janela determinem mudancas na
janela principal.
Este comportamento ira aparecer na aplicacao exemploaqui tratada. Quando forem criados, modificados ou excludos
departamentos, a ComboBox de Departamento da janela
principal devera ser atualizada.
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (79/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
M i b i l
http://find/7/22/2019 Oficina Qt 4
94/133
Mais sobre signals
Trecho do metodo mostrarCadastroDepartamentos()
void Principal::mostrarCadastroDepartamentos()
{Departamentos*dep = newDepartamentos();
connect(
dep, SIGNAL(departamentosAtualizados()),
this, SLOT(atualizarComboDepartamentos())
);
}
Antonio Marcio A Menezes Introducao a Programacao C++ com Qt 4 (80/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
A d
http://find/http://goback/7/22/2019 Oficina Qt 4
95/133
Agenda
1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?
2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (81/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Modulo QtSql
http://find/7/22/2019 Oficina Qt 4
96/133
Modulo QtSql
O modulo QtSqle o que fornece as classes e rotinas necessarias
para estabelecer conexoes a bancos de dados e execucao de
operacoes, em diferentes SGBDs: IBM DB2,Interbase/Firebird,MySQL,Oracle,PostgreSQL,SQLite,Sybase.
E possvel acessar outros bancos com o driverODBC, alem de
tambem existirem plugins para acesso a outras bases de dados
(xBase, por exemplo).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (82/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando uma conexao a um banco de dados
http://find/7/22/2019 Oficina Qt 4
97/133
Criando uma conexao a um banco de dados
bool criarConexao(){QSqlDatabasebd =QSqlDatabase::addDatabase(QPSQL);
bd.setHostName(sgbd.empresa.com.br);bd.setDatabaseName(BdFuncionarios);
bd.setUserName(usuario);
bd.setPassword(senha);
if (! bd.open() ){
QMessageBox::critical(0,tr(DB Error), bd.lastError().text());return false;}
return true;}
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (83/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Realizando uma consulta no banco
http://find/7/22/2019 Oficina Qt 4
98/133
Realizando uma consulta no banco
QStringListlistaTelefones;
QSqlQueryconsulta;consulta.exec(SELECT TELEFONE FROM PESSOAS);
while (consulta.next()){QString telefone = consulta.value(0).toString();
listaTelefones.append(telefone);
}
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (84/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Exerccio com Banco de Dados
http://find/http://goback/7/22/2019 Oficina Qt 4
99/133
Exerccio com Banco de Dados
Exerccio 05
Objetivo: Aprender a executar uma conexao e uma consulta
num banco de dados.Tempo Estimado: 10 a 20 min.
Resultado Esperado: Implementar o preenchimento da
QComboBox de Departamentos na janela Principal. Os da-
dos desta ComboBox serao obtidos atraves de consulta querecupera os nomes dos departamentos existentes no banco
de dados.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (85/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Exerccio com Banco de Dados
http://find/7/22/2019 Oficina Qt 4
100/133
Exerccio com Banco de Dados
QStringListPrincipal::getDepartamentos(){QStringListlista;
lista.append(Todos);
QSqlQueryquery( select distinct NOME from DEPARTAMENTOS
order by NOME, bancoDeDados);
while (query.next()){lista.append(query.value(0).toString());
}return lista;
}
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (86/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Exerccio com Banco de Dados
http://find/7/22/2019 Oficina Qt 4
101/133
Exerccio com Banco de Dados
void Principal::atualizarComboDepartamentos(){
ui->
comboDepartamento->
clear();ui->comboDepartamento->addItems(getDepartamentos());
}
O metodo addItems deQComboBoxrecebe como parametro um
QStringList.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (87/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Atualizando dados em um banco
http://find/7/22/2019 Oficina Qt 4
102/133
Atualizando dados em um banco
QSqlQueryoper;
oper.prepare(
insert into DEPART(NOME, SIGLA) values (:NM, :SG));
oper.bindValue(:NM, Desenvolvimento e TI);
oper.bindValue(:SG, DTI);
oper.exec();
QSqlQueryoper2(update DEPART set SIGLA=TI where SIGLA=DTI );
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (88/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Classes de Modelo Sql
http://find/7/22/2019 Oficina Qt 4
103/133
Classes de Modelo Sql
Para quem prefere uma interacao mais distante da sintaxe SQL,
o Qt fornece algumas classes especficas.
Classes de Modelo Sql
QSqlQueryModel: Um modelo de dados read-only baseadoem uma consulta SQL.
QSqlTableModel: Um modelo read-write que trabalha so-
mente sobre uma unica tabela.
QSqlRelationalTableModel: Uma especializacao deQSqlTableModel mas com suporte a chaves estrangeiras
(relacoes com outras tabelas).
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (89/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Agenda
http://find/7/22/2019 Oficina Qt 4
104/133
Agenda
1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?
2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de DadosTraduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (90/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Qt Linguist
http://find/7/22/2019 Oficina Qt 4
105/133
Qt Linguist
A forma mais facil de tornar uma aplicacao Qt com suporte a
outras lnguas e:
Usar o metodo tr() em todas as QStrings desta aplicacao.Este metodoe definido emQObject.
Carregar no momento de inicializacao da aplicacao um ar-
quivo de traducao (.qm), previamente gerado com oQt Lin-
guist.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (91/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Produzindo um arquivo de traducao
http://find/7/22/2019 Oficina Qt 4
106/133
Produzindo um arquivo de traducao
Para preparar um arquivo de traducao deve-se usar a ferramenta
lupdate, presente no diretorio bin do Qt. Esta ferramenta e
capaz de extrair todos os literais de strings presentes em janelascriadas com o Qt Designer e tambem encapsuladas portr()nos
demais arquivos fontes da aplicacao.
Sintaxe:lupdatearquivo do projeto.pro
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (92/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Produzindo um arquivo de traducao
http://find/7/22/2019 Oficina Qt 4
107/133
a q a a
Com a criacao do arquivo fonte de traducao (.ts), basta apenas
abr-lo com o Qt Linguist. Na primeira janela de dialogo, se de-
finem as configuracoes das lnguas de origem e destino dos tex-
tos capturados.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (93/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Produzindo um arquivo de traducao
http://find/7/22/2019 Oficina Qt 4
108/133
q
OQt Linguist e capaz de exibir visualmente a janela ou o codigo
fonte no qual se esta fazendo a traducao de uma string. Para
cada string, realiza-se a traducao em uma secao como esta:
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (94/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Produzindo um arquivo de traducao
http://find/7/22/2019 Oficina Qt 4
109/133
q
Apos concluir todas as traducoes das strings, utiliza-se a opcao
de menuFile->Release do Qt Linguist. Com isto, sera gerado
um arquivo de compilacao (.qm) do projeto de traducao. Para
carregar este arquivo no momento de incio da aplicacao, pode-
se utilizar o seguinte codigo nomain.cpp:
QApplicationa(argc, argv);
QTranslatortradutor;
tradutor.load(agenda-telefonica.qm,QCoreApplication::applicationDirPath());
a.installTranslator(tradutor);
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (95/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Agenda
http://find/http://goback/7/22/2019 Oficina Qt 4
110/133
g
1 Parte Teorica
Por que C++ e Qt?
O que preciso para comecar?
2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de DadosTraduzindo a Aplicacao
Construindo o instalador da Aplicacao
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (96/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Implantando uma aplicacao Qt
http://find/7/22/2019 Oficina Qt 4
111/133
p p
Uma aplicacao Qt (com compilacao dinamica) usualmente ne-
cessitara da seguinte estrutura:
Arquivo executavel da aplicacao.
Arquivos .qm: arquivos de traducao.
Arquivos de bibliotecas do Qt: no linux, por exemplo, ar-
quivos libQtCore.so, libQtSql.so, libQtGui.so (caso nao se
deseje utilizar as bibliotecas fornecidas na distribuicao linux).
Diretorio sqldrivers: com os plugins do Qt de drivers para
conexao a bancos de dados.
Arquivo .sh: shell script que podera configurarvariaveis de
ambiente temporariase executar oarquivo executavel.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (97/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Implantando uma aplicacao Qt
http://find/http://goback/7/22/2019 Oficina Qt 4
112/133
No caso da aplicacao exemplo, Agenda de Telefones:
Arquivo executavel: agenda-telefonica
Arquivos .qm: agenda-telefonica.qmArquivos de bibliotecas do Qt: libQtCore.so.4, libQtSql.so.4,
libQtGui.so.4, libQtNetwork.so.4
Diretorio sqldrivers: com o pluginlibqsqlite.so
Arquivo .sh: agenda-telefonica.shIcones: agenda-telefonica.png e uninstall.png
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (98/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Implantando uma aplicacao Qt
http://find/7/22/2019 Oficina Qt 4
113/133
Existem varias formas possveis de construir um pacote de
implantacao de uma aplicacao Qt. Algumas delas sao:
Pacotes .rpm, .deb, .tgz: a criacao de pacotes especficos de
distribuicoes linux
e uma das formas mais comuns e tende atransmitir um que de formalidade no mundo linux.
Pacotes de codigo fonte: tambem sao muito utilizados, mas
exigem um maior conhecimento dos usuarios no momento
de compilar e decidir onde implantar o software.
Instaladores executaveis: tende a ser a opcao mais simples
para usuarios e agrada bastante a quem ja esta acostumado
com instaladores no Windows.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (99/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Implantando uma aplicacao Qt
http://find/7/22/2019 Oficina Qt 4
114/133
Aqui sera tratada a implantacao a partir de instaladores exe-
cutaveis, mais precisamente criados com oinstallJammer.
Como um dos aspectos importantes em desenvolver com
Qt e a capacidade de desenvolver sistemas multiplatafor-
mas, e interessante utilizar uma ferramenta de instalacao
multiplataforma. Estae uma caracterstica do installJammer.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (100/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/7/22/2019 Oficina Qt 4
115/133
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (101/112)
Parte Teorica
Pratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.
Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/http://goback/7/22/2019 Oficina Qt 4
116/133
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (102/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/7/22/2019 Oficina Qt 4
117/133
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (103/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/7/22/2019 Oficina Qt 4
118/133
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (104/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/7/22/2019 Oficina Qt 4
119/133
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (105/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/7/22/2019 Oficina Qt 4
120/133
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (106/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/7/22/2019 Oficina Qt 4
121/133
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (107/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/7/22/2019 Oficina Qt 4
122/133
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (108/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/7/22/2019 Oficina Qt 4
123/133
Apos passar pelas telas doassistente de criacao de projetodo
InstallJammer, sera exibida a tela com aarvore de configuracoes
do projeto. Para configurar os cones da aplicacao, configure:
EmAction GroupsInstallActions :
ProgramShortcutIconPath :agenda-telefonica.png
Uninstall Shortcut IconPath :uninstall.png
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (109/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Roteiro para a Pratica
Criando o projeto com o Qt Creator
Trabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e Slots
Acesso a Bancos de Dados
Traduzindo a Aplicacao
Construindo o instalador da Aplicacao
Criando o instalador
http://find/7/22/2019 Oficina Qt 4
124/133
EmAction GroupsFinishActions :
InstallDesktopShortcutIconPath :
agenda-telefonica.png
Install Quick Launch ShortcutIconPath :agenda-telefonica.png
Para criar o instalador, basta executar a opcaoBuild Install.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (110/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Resumo
Referencias
Resumo do que foi visto
http://find/7/22/2019 Oficina Qt 4
125/133
Introducao ao Qt.
Como iniciar um projeto de aplicacao C++ com Qt.
Como realizar o projeto de telas com Qt Designer.
Como criar mecanismos de controle atraves de signals e slots.
Como trabalhar com banco de dados em uma aplicacao Qt.
Como traduzir uma aplicacao Qt para outra lngua.
Como produzir o instalador da aplicacao.
Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (111/112)
Parte TeoricaPratica - Construcao de uma Agenda de Telefones
Resumo
Resumo
Referencias
Resumo do que foi visto
http://find/http://goback/7/22/2019 Oficina Qt 4
126/133
Introducao ao Qt.
Como iniciar um projeto de aplicacao C++ com Qt.
Como realizar o projeto de telas com Qt Designer.
Como criar mecanismos de controle atraves de signals e slots.
Como trabalhar com banco de dados em uma aplicacao Qt.
Como traduzir uma aplicacao Qt para outra lngua.
Como p
Recommended