133
Introduc ¸˜ ao ` a Programac ¸˜ ao C++ com Qt 4 Introduc ¸˜ ao ` a Programac ¸˜ ao C++ com Qt 4 Antonio Marcio A. Menezes [email protected] II F ´ orum de Tecnologia em Software Livre SERPRO - Regional Porto Alegre Outubro de 2009 Antonio Marcio A. Menezes Introduc ¸˜ ao ` a Programac ¸˜ ao C++ com Qt 4 (1/112)

Introducao a Programacao C++ Com Qt 4

Embed Size (px)

DESCRIPTION

tutorial sobre ide qt c++

Citation preview

Page 1: Introducao a Programacao C++ Com Qt 4

Introducao a Programacao C++ com Qt 4

Introducao a Programacao C++ com Qt 4

Antonio Marcio A. [email protected]

II Forum de Tecnologia em Software LivreSERPRO - Regional Porto Alegre

Outubro de 2009

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (1/112)

Page 2: Introducao a Programacao C++ Com Qt 4

Introducao a Programacao C++ com Qt 4

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (2/112)

Page 3: Introducao a Programacao C++ Com Qt 4

Introducao a Programacao C++ com Qt 4

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (2/112)

Page 4: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (3/112)

Page 5: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 disponıvel 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)

Page 6: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 disponıvel publicamente apartir de maio de 1995. Foi criado por Haarvard Nord e EirikChambe-Eng, fundadores da empresa Trolltech. Desde seuinıcio, Qt foi concebido para ser multiplataforma.

Em marco de 1996, a agencia espacial europeia se tornou osegundo cliente do Qt. E em setembro deste ano, foi lancada aversao 1.0 do Qt. Ainda neste ano, foi iniciado o projeto KDE,desenvolvido com Qt, por Matthias Ettrich. Mais tarde, em 1998,Matthias foi contratado pela Trolltech.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (5/112)

Page 7: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 disponıvel publicamente apartir de maio de 1995. Foi criado por Haarvard Nord e EirikChambe-Eng, fundadores da empresa Trolltech. Desde seuinıcio, Qt foi concebido para ser multiplataforma.

Em marco de 1996, a agencia espacial europeia se tornou osegundo cliente do Qt. E em setembro deste ano, foi lancada aversao 1.0 do Qt. Ainda neste ano, foi iniciado o projeto KDE,desenvolvido com Qt, por Matthias Ettrich. Mais tarde, em 1998,Matthias foi contratado pela Trolltech.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (5/112)

Page 8: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Historia do Qt

Em 1999, a versao 2.0 do Qt foi liberada. Uma versao do Qtpara linux embarcado, por sua vez, foi lancada em 2000.

Em 2001, seguiu-se o lancamento da versao 3.0 do Qt, agoradisponıvel para Windows, MacOS X, Unix e Linux (desktop eembarcado).

Em meados de 2005, a versao Qt 4.0 tornou-se disponıvel, con-tando com 500 classes e mais de 9000 funcoes.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (6/112)

Page 9: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Historia do Qt

Em 1999, a versao 2.0 do Qt foi liberada. Uma versao do Qtpara linux embarcado, por sua vez, foi lancada em 2000.

Em 2001, seguiu-se o lancamento da versao 3.0 do Qt, agoradisponıvel para Windows, MacOS X, Unix e Linux (desktop eembarcado).

Em meados de 2005, a versao Qt 4.0 tornou-se disponıvel, con-tando com 500 classes e mais de 9000 funcoes.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (6/112)

Page 10: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Historia do Qt

Em 1999, a versao 2.0 do Qt foi liberada. Uma versao do Qtpara linux embarcado, por sua vez, foi lancada em 2000.

Em 2001, seguiu-se o lancamento da versao 3.0 do Qt, agoradisponıvel para Windows, MacOS X, Unix e Linux (desktop eembarcado).

Em meados de 2005, a versao Qt 4.0 tornou-se disponıvel, con-tando com 500 classes e mais de 9000 funcoes.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (6/112)

Page 11: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Historia do Qt

Em 2008, a empresa Trolltech foi adquirida pela Nokia. Trolltechagora e chamada de Qt Software. Pouco tempo depois, o Qtpassou 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: o Qt Creator.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (7/112)

Page 12: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Historia do Qt

Em 2008, a empresa Trolltech foi adquirida pela Nokia. Trolltechagora e chamada de Qt Software. Pouco tempo depois, o Qtpassou 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: o Qt Creator.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (7/112)

Page 13: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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?Desenvolvimento Multiplataforma.Programacao C++ mais amigavel com Qt.Implemente uma vez. Compile em qualquer lugar.Aplicacoes KDE sao feitas com Qt.Criacao de interfaces graficas elegantes e amigaveis.Utilizacao de uma API rica e util.Licencas Comercial, LGPL e GPL.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (8/112)

Page 14: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Quem usa Qt?

Em Aplicacoes DesktopPhoenix, um sistema para controle de agendamento emonitoracao de voos, desenvolvido pela DFS (empresa decontrole aereo da Alemanha).VLC, reprodutor de mıdia.Google Earth, para visualizacao de imagens de satelite eoutras 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)

Page 15: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Quem usa Qt?

Em Sistemas EmbarcadosPorta-retrato digital SPF-105V da Samsung.Varios modelos de celulares da Motorola.Vıdeo-fone VP 5500 da Philips.Sony mylo, um comunicador pessoal.Telefone Wi-Fi KX-WP1050 para Skype da Panasonic.Smartphones 3G da ZTE.GPS Naviflash 1020 da Bury.Reprodutor de mıdia portatil da digitalCube.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (10/112)

Page 16: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (11/112)

Page 17: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 avancadode C++, para quem programa em Java ou outras linguagensorientadas a objetos e possıvel apenas estudar as diferencassintaticas para ja iniciar o aprendizado.

Estudar atraves de exemplosA 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)

Page 18: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 odownload 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 execucao para o mesmo):qt-sdk-linux-x86-opensource-2009.03.1.bin.

E necessario tambem verificar se estao instalados os seguintespacotes: libfreetype6-dev e libgtk2.0-dev.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (13/112)

Page 19: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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)

Page 20: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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)

Page 21: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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)

Page 22: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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)

Page 23: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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)

Page 24: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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)

Page 25: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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)

Page 26: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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)

Page 27: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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:

bin e o diretorio onde se encontra o executavel do IDEQt Creator.lib armazena bibliotecas necessarias a execucao do QtCreator.qt e onde se encontra o framework Qt e suas ferramen-tas. Dentro deste, ha outro diretorio bin que contem osexecutaveis 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)

Page 28: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 decompilacao. Cada unidade de compilacao e um arquivo textode codigo fonte, tipicamente, com uma extensao .cpp (ou .cc ou.cxx).

Para uma unidade de compilacao, o compilador ira gerarum arquivo objeto com a extensao .obj (no Windows) ou .o (noUnix ou MACOS X). O arquivo objeto e um arquivo binario como codigo de maquina especıfico da arquitetura da maquina ondefoi gerado.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (23/112)

Page 29: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 decompilacao. Cada unidade de compilacao e um arquivo textode codigo fonte, tipicamente, com uma extensao .cpp (ou .cc ou.cxx).

Para uma unidade de compilacao, o compilador ira gerarum arquivo objeto com a extensao .obj (no Windows) ou .o (noUnix ou MACOS X). O arquivo objeto e um arquivo binario como codigo de maquina especıfico da arquitetura da maquina ondefoi gerado.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (23/112)

Page 30: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 embibliotecas).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)

Page 31: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 embibliotecas).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)

Page 32: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 embibliotecas).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)

Page 33: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 embibliotecas).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)

Page 34: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 embibliotecas).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)

Page 35: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 embibliotecas).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)

Page 36: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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)

Page 37: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 Designer para o projeto de telas. Permite testar o projetode tela sem programar qualquer linha de codigo.Qt Linguist para editar arquivos de traducoes, tornando umaaplicacao com suporte a diferentes lınguas.Qt Assistant e um guia de consulta rapida e sensıvel a con-texto para a API do Qt.Qt Creator e o IDE para a criacao de projetos de aplicacoes.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (26/112)

Page 38: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 Designer para o projeto de telas. Permite testar o projetode tela sem programar qualquer linha de codigo.Qt Linguist para editar arquivos de traducoes, tornando umaaplicacao com suporte a diferentes lınguas.Qt Assistant e um guia de consulta rapida e sensıvel a con-texto para a API do Qt.Qt Creator e o IDE para a criacao de projetos de aplicacoes.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (26/112)

Page 39: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 Designer para o projeto de telas. Permite testar o projetode tela sem programar qualquer linha de codigo.Qt Linguist para editar arquivos de traducoes, tornando umaaplicacao com suporte a diferentes lınguas.Qt Assistant e um guia de consulta rapida e sensıvel a con-texto para a API do Qt.Qt Creator e o IDE para a criacao de projetos de aplicacoes.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (26/112)

Page 40: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - 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 Designer para o projeto de telas. Permite testar o projetode tela sem programar qualquer linha de codigo.Qt Linguist para editar arquivos de traducoes, tornando umaaplicacao com suporte a diferentes lınguas.Qt Assistant e um guia de consulta rapida e sensıvel a con-texto para a API do Qt.Qt Creator e o IDE para a criacao de projetos de aplicacoes.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (26/112)

Page 41: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Minha primeira aplicacao com Qt

hello.cpp#include <QApplication>#include <QLabel>int main(int argc, char *argv[]){

QApplication app(argc, argv);QLabel *label = new QLabel(QString::fromUtf8(”Ola Qt!”));label->show();return app.exec();

}

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (27/112)

Page 42: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O que preciso para comecar?

Minha primeira aplicacao com Qt

Apos criar um diretorio hello, sera incluıdo deste diretorio oarquivo .cpp da minha primeira aplicacao: hello.cpp

Ao digitar qmake -project, sera criado o arquivo de projetohello.pro

qmake hello.pro ira gerar o arquivo Makefile, que orientara acompilacao do projeto.

Ao digitar make, sera compilado e gerado o executavel daaplicacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (28/112)

Page 43: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Por que C++ e Qt?O 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)

Page 44: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (30/112)

Page 45: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Roteiro para a Pratica

Neste treinamento, serao exercitadas algumas tarefas comunsno desenvolvimento de um sistema informatizado. Para agilizar otreinamento, serao propostas versoes incrementais da aplicacaoexemplo.

Estas versoes incrementais poderao ser enxergadas comopontos de controle. Quando um aluno concluir a principal ativi-dade de um ponto de controle, ele podera adotar uma versaomais completa da aplicacao e seguir para as proximas tarefas.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (31/112)

Page 46: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo 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 aaplicacao na area de notificacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (32/112)

Page 47: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Roteiro para a Pratica

Versoes incrementais da aplicacao

agenda-telefonica5.zip inclui codigo para evitar que mais deuma agenda seja carregada na memoria ao mesmo tempo.Sao criadas as primeiras conexoes entre signals e slots.agenda-telefonica6.zip contem o primeiro codigo paraacesso ao banco de dados e apresentacao dos dados najanela principal.agenda-telefonica7.zip inclui o projeto das telas de cadastrode departamentos e de telefones, e o armazenamento embanco de dados.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (33/112)

Page 48: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo 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 daaplicacao para o portugues.agenda-telefonica9.zip contem os arquivos necessarios daagenda para o instalador da aplicacao.agenda-telefonica10.zip inclui o projeto do instalador com aferramenta GPL installJammer.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (34/112)

Page 49: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Requisitos da Aplicacao

Requisitos I

Cada pessoa cadastrada na agenda devera ser associada aum departamento na qual trabalha.Todo departamento sera identificado por um codigo, umasigla e um nome. Siglas e nomes dos departamentos seraoalfanumericos.O cadastro de cada pessoa e seu telefone de contato poderatambem ser acrescido com a informacao de um numero deramal.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (35/112)

Page 50: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Requisitos da Aplicacao

Requisitos IIOs dados dos cadastros serao armazenados localmente, namaquina onde se executa a agenda.A janela principal da agenda devera fornecer uma busca sim-plificada dos telefones pelos criterios: nome (ou parte donome) 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 um contadordo numero de itens exibidos nesta lista.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (36/112)

Page 51: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Requisitos da Aplicacao

Requisitos III

Devera existir uma janela de busca avancada onde poderaoser identificadas as pessoas e seus telefones por parte dotelefone/ramal ou parte do nome do departamento.Quando a janela da agenda for fechada, ela devera ficarainda ativa, com um ıcone na area de notificacao (SystemTrayBar). 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)

Page 52: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo 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 daspessoas e seus telefones.Nao podera ser cadastrado mais de um numero de telefonepor pessoa.A empresa que utilizara a agenda de telefones e ramais de-seja executar este programa em maquinas com Linux ouWindows.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (38/112)

Page 53: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Esboco da Janela Principal da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (39/112)

Page 54: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Diagrama ER da Aplicacao

Para fins de simplicidade, sera utilizado o banco Sqlite.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (40/112)

Page 55: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Script de criacao do banco de dados

create table DEPARTAMENTOS (CODIGO INTEGER NOT NULL

PRIMARY KEY AUTOINCREMENT,NOME VARCHAR(256) NOT NULL UNIQUE,SIGLA VARCHAR(30) NULL

);

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (41/112)

Page 56: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Script de criacao do banco de dados

create table PESSOAS (NOME VARCHAR(80) NOT NULL PRIMARY KEY,DEP CODIGO INTEGER NOT NULL

REFERENCES DEPARTAMENTOS(CODIGO)ON DELETE RESTRICT ON UPDATE RESTRICTON INSERT RESTRICT,

DDD INTEGER,TELEFONE INTEGER NOT NULL,RAMAL INTEGER

);

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (42/112)

Page 57: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (43/112)

Page 58: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio de Criacao do Projeto

Exercıcio 01Objetivo: 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)

Page 59: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Definindo o tipo de projeto

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (45/112)

Page 60: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Definindo o nome do projeto

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (46/112)

Page 61: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo 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)

Page 62: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Definindo uma nova classe do tipo QMainWindow

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (48/112)

Page 63: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Resumo da criacao do projeto

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (49/112)

Page 64: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo 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)

Page 65: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (51/112)

Page 66: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Widgets

Widgets (Window Gadgets) sao componentes que possuem umarepresentacao grafica no projeto de telas. Com o Qt Designer, odesenvolvedor pode criar interfaces graficas de usuario apenasarrastando e soltando varios widgets sobre a janela que estasendo projetada.

E possıvel tambem testar o funcionamento “visual” da janela sobtemas graficos diferentes (Plastique, GTK+, Motif, CleanLooksetc).

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (52/112)

Page 67: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio com Widgets

Exercıcio 02Objetivo: Aprender a criar projetos de telas comcomponentes visuais.Tempo Estimado: 2 a 5 min.Resultado Esperado: Adicionar todos os widgetsnecessarios para o projeto da janela principal daAgenda.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (53/112)

Page 68: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio com Widgets - Esboco da Tela

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (54/112)

Page 69: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio com Widgets - Atribuindo textos

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (55/112)

Page 70: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio com Widgets - Atribuindo textos ao Menu

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (56/112)

Page 71: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Atribuindo textos ao Menu (QMenu)

Ao adicionar itens ao menu principal, automaticamenteserao criadas Actions que poderao ser ligadas a metodosda janela principal. Tambem e possıvel definir ıcones paraas Actions, mas para isso e necessario criar um arquivo derecursos.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (57/112)

Page 72: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando um arquivo de recursos

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (58/112)

Page 73: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando um arquivo de recursos

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (59/112)

Page 74: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando um arquivo de recursos

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (60/112)

Page 75: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando um arquivo de recursos

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (61/112)

Page 76: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Atribuindo um ıcone a uma Action

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (62/112)

Page 77: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Atribuindo um ıcone a uma Action

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (63/112)

Page 78: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Atribuindo um ıcone a uma Action

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (64/112)

Page 79: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Actions e Barra de Ferramentas

A partir do painel de actions, e possıvel arrastar e soltar actionssobre a barra de ferramentas da janela principal. Com isto, seraoautomaticamente criados botoes na barra de ferramentas queacionarao as actions ao serem clicados. Os ıcones das actionstambem aparecerao nos botoes da barra de ferramentas.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (65/112)

Page 80: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio com Layouts

Exercıcio 03Objetivo: Aprender a definir os layouts de telascom o Qt Creator / Qt Designer.Tempo Estimado: 8 a 12 min.Resultado Esperado: Layout basico de widgetsna janela principal.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (66/112)

Page 81: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Definindo o primeiro layout

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (67/112)

Page 82: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Definindo o primeiro layout

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (68/112)

Page 83: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Definindo o primeiro layout

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (69/112)

Page 84: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Definindo o primeiro layout

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (70/112)

Page 85: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Adicionando um botao a um layout ja existente

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (71/112)

Page 86: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (72/112)

Page 87: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

O que sao signals e slots?

No Qt, um signal (sinal) e emitido quando um evento ocorre. Exis-tem signals pre-definidos, mas tambem e possıvel de definir seusproprios signals. Um signal pode ser ligado a um metodo. Destaforma, quando o signal for emitido, este metodo sera executado.Nesta ligacao entre signal e metodo, o metodo e o slot.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (73/112)

Page 88: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Conectando um signal a um slot da janela principal

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (74/112)

Page 89: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Definindo signal e slot apropriados

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (75/112)

Page 90: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio com Signals

Exercıcio 04Objetivo: Aprender a conectar signals e slots dos widgetscom Qt Designer.Tempo Estimado: 2 a 5 min.Resultado Esperado: O click sobre um QPushButton execu-tara o metodo clean de um QLineEdit. Testar este compor-tamento com o Form Preview no Qt Designer.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (76/112)

Page 91: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Signals e Slots no Qt Designer

Num painel (ou janela) do Qt Designer, se pode consultar asconexoes ja definidas entre sinais e slots.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (77/112)

Page 92: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

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)

Page 93: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Mais sobre signals

Um signal tambem podem ser conectado a outro signal.

O mecanismo de conexao entre signals e slots tambempode resolver o problema de referencia cıclica. Por exemplo,a janela principal pode criar uma outra janela e esperar queinteracoes nesta segunda janela determinem mudancas najanela principal.

Este comportamento ira aparecer na aplicacao exemploaqui tratada. Quando forem criados, modificados ou excluıdosdepartamentos, a ComboBox de Departamento da janelaprincipal devera ser atualizada.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (79/112)

Page 94: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Mais sobre signals

Trecho do metodo mostrarCadastroDepartamentos()void Principal::mostrarCadastroDepartamentos(){

Departamentos *dep = new Departamentos();connect(

dep, SIGNAL(departamentosAtualizados()),this, SLOT(atualizarComboDepartamentos())

);}

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (80/112)

Page 95: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (81/112)

Page 96: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Modulo QtSql

O modulo QtSql e o que fornece as classes e rotinas necessariaspara estabelecer conexoes a bancos de dados e execucao deoperacoes, em diferentes SGBDs: IBM DB2, Interbase/Firebird,MySQL, Oracle, PostgreSQL, SQLite, Sybase.

E possıvel acessar outros bancos com o driver ODBC, alem detambem 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)

Page 97: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando uma conexao a um banco de dados

bool criarConexao() {QSqlDatabase bd = 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)

Page 98: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Realizando uma consulta no banco

QStringList listaTelefones;QSqlQuery consulta;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)

Page 99: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio com Banco de Dados

Exercıcio 05Objetivo: Aprender a executar uma conexao e uma consultanum banco de dados.Tempo Estimado: 10 a 20 min.Resultado Esperado: Implementar o preenchimento daQComboBox de Departamentos na janela Principal. Os da-dos desta ComboBox serao obtidos atraves de consulta querecupera os nomes dos departamentos existentes no bancode dados.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (85/112)

Page 100: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio com Banco de Dados

QStringList Principal::getDepartamentos() {QStringList lista;lista.append(“Todos”);QSqlQuery query( “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)

Page 101: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Exercıcio com Banco de Dados

void Principal::atualizarComboDepartamentos() {ui->comboDepartamento->clear();ui->comboDepartamento->addItems(getDepartamentos());

}

O metodo addItems de QComboBox recebe como parametro umQStringList.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (87/112)

Page 102: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Atualizando dados em um banco

QSqlQuery oper;oper.prepare(

“insert into DEPART(NOME, SIGLA) values (:NM, :SG)”);oper.bindValue(“:NM”, “Desenvolvimento e TI”);oper.bindValue(“:SG”, “DTI”);oper.exec();QSqlQuery oper2(

“update DEPART set SIGLA=’TI’ where SIGLA=’DTI’ ”);

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (88/112)

Page 103: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Classes de Modelo Sql

Para quem prefere uma interacao mais distante da sintaxe SQL,o Qt fornece algumas classes especıficas.

Classes de Modelo SqlQSqlQueryModel: 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)

Page 104: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (90/112)

Page 105: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Qt Linguist

A forma mais facil de tornar uma aplicacao Qt com suporte aoutras lınguas e:

Usar o metodo tr() em todas as QStrings desta aplicacao.Este metodo e definido em QObject.Carregar no momento de inicializacao da aplicacao um ar-quivo de traducao (.qm), previamente gerado com o Qt Lin-guist.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (91/112)

Page 106: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Produzindo um arquivo de traducao

Para preparar um arquivo de traducao deve-se usar a ferramentalupdate, presente no diretorio bin do Qt. Esta ferramenta ecapaz de extrair todos os literais de strings presentes em janelascriadas com o Qt Designer e tambem encapsuladas por tr() nosdemais arquivos fontes da aplicacao.

Sintaxe: lupdate arquivo do projeto.pro

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (92/112)

Page 107: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Produzindo um arquivo de traducaoCom a criacao do arquivo fonte de traducao (.ts), basta apenasabrı-lo com o Qt Linguist. Na primeira janela de dialogo, se de-finem as configuracoes das lınguas de origem e destino dos tex-tos capturados.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (93/112)

Page 108: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Produzindo um arquivo de traducao

O Qt Linguist e capaz de exibir visualmente a janela ou o codigofonte no qual se esta fazendo a traducao de uma string. Paracada string, realiza-se a traducao em uma secao como esta:

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (94/112)

Page 109: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Produzindo um arquivo de traducao

Apos concluir todas as traducoes das strings, utiliza-se a opcaode menu File->Release do Qt Linguist. Com isto, sera geradoum arquivo de compilacao (.qm) do projeto de traducao. Paracarregar este arquivo no momento de inıcio da aplicacao, pode-se utilizar o seguinte codigo no main.cpp:

QApplication a(argc, argv);QTranslator tradutor;tradutor.load(“agenda-telefonica.qm”,

QCoreApplication::applicationDirPath());a.installTranslator(tradutor);

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (95/112)

Page 110: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Agenda

1 Parte TeoricaPor que C++ e Qt?O que preciso para comecar?

2 Pratica - Construcao de uma Agenda de TelefonesRoteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (96/112)

Page 111: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Implantando uma aplicacao Qt

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 sedeseje utilizar as bibliotecas fornecidas na distribuicao linux).Diretorio sqldrivers: com os plugins do Qt de drivers paraconexao a bancos de dados.Arquivo .sh: shell script que podera configurar variaveis deambiente temporarias e executar o arquivo executavel.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (97/112)

Page 112: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Implantando uma aplicacao Qt

No caso da aplicacao exemplo, Agenda de Telefones:Arquivo executavel: agenda-telefonicaArquivos .qm: agenda-telefonica.qmArquivos de bibliotecas do Qt: libQtCore.so.4, libQtSql.so.4,libQtGui.so.4, libQtNetwork.so.4Diretorio sqldrivers: com o plugin libqsqlite.soArquivo .sh: agenda-telefonica.shIcones: agenda-telefonica.png e uninstall.png

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (98/112)

Page 113: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Implantando uma aplicacao Qt

Existem varias formas possıveis de construir um pacote deimplantacao de uma aplicacao Qt. Algumas delas sao:

Pacotes .rpm, .deb, .tgz: a criacao de pacotes especıficos dedistribuicoes 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, masexigem um maior conhecimento dos usuarios no momentode compilar e decidir onde implantar o software.Instaladores executaveis: tende a ser a opcao mais simplespara usuarios e agrada bastante a quem ja esta acostumadocom instaladores no Windows.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (99/112)

Page 114: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Implantando uma aplicacao Qt

Aqui sera tratada a implantacao a partir de instaladores exe-cutaveis, mais precisamente criados com o installJammer.

Como um dos aspectos importantes em desenvolver comQt e a capacidade de desenvolver sistemas multiplatafor-mas, e interessante utilizar uma ferramenta de instalacaomultiplataforma. Esta e uma caracterıstica do installJammer.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (100/112)

Page 115: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (101/112)

Page 116: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (102/112)

Page 117: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (103/112)

Page 118: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (104/112)

Page 119: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (105/112)

Page 120: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (106/112)

Page 121: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (107/112)

Page 122: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (108/112)

Page 123: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Apos passar pelas telas do assistente de criacao de projeto doInstallJammer, sera exibida a tela com a arvore de configuracoesdo projeto. Para configurar os ıcones da aplicacao, configure:

Em Action Groups → InstallActions :

ProgramShortcut → IconPath :<%InstallDir%>agenda-telefonica.png

Uninstall Shortcut → IconPath :<%InstallDir%>uninstall.png

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (109/112)

Page 124: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

Roteiro para a PraticaCriando o projeto com o Qt CreatorTrabalhando com Widgets, Layouts, Actions Etc.Conectando Signals e SlotsAcesso a Bancos de DadosTraduzindo a AplicacaoConstruindo o instalador da Aplicacao

Criando o instalador

Em Action Groups → FinishActions :

InstallDesktopShortcut → IconPath :<%InstallDir%>agenda-telefonica.png

Install Quick Launch Shortcut → IconPath :<%InstallDir%>agenda-telefonica.png

Para criar o instalador, basta executar a opcao Build Install.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (110/112)

Page 125: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

ResumoReferencias

Resumo do que foi visto

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 lıngua.Como produzir o instalador da aplicacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (111/112)

Page 126: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

ResumoReferencias

Resumo do que foi visto

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 lıngua.Como produzir o instalador da aplicacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (111/112)

Page 127: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

ResumoReferencias

Resumo do que foi visto

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 lıngua.Como produzir o instalador da aplicacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (111/112)

Page 128: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

ResumoReferencias

Resumo do que foi visto

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 lıngua.Como produzir o instalador da aplicacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (111/112)

Page 129: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

ResumoReferencias

Resumo do que foi visto

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 lıngua.Como produzir o instalador da aplicacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (111/112)

Page 130: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

ResumoReferencias

Resumo do que foi visto

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 lıngua.Como produzir o instalador da aplicacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (111/112)

Page 131: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

ResumoReferencias

Resumo do que foi visto

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 lıngua.Como produzir o instalador da aplicacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (111/112)

Page 132: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

ResumoReferencias

Resumo do que foi visto

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 lıngua.Como produzir o instalador da aplicacao.

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (111/112)

Page 133: Introducao a Programacao C++ Com Qt 4

Parte TeoricaPratica - Construcao de uma Agenda de Telefones

Resumo

ResumoReferencias

Referencias

J. Blanchette and M. Summerfield.C++ GUI Programming with Qt 4.Prentice Hall, 2008.

Documentacao do Qt 4.5http://qt.nokia.com/doc/4.5/index.html

Pagina do InstallJammerhttp://www.installjammer.com

IDE Kevorahttp://kevora.sourceforge.net

Antonio Marcio A. Menezes Introducao a Programacao C++ com Qt 4 (112/112)