Oficina Qt 4

download Oficina Qt 4

of 133

Transcript of Oficina Qt 4

  • 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. [email protected]

    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