¸˜ `          ¸˜
 Introducao a Programacao C++ com Qt 4




       ¸˜ `          ¸˜
Introducao a Programacao C++ com Qt 4

                   Antonio Marcio A. Menezes
                       antonio-marcio.menezes@serpro.gov.br



                     ´
                 II Forum de Tecnologia em Software Livre
                      SERPRO - Regional Porto Alegre


                           Outubro de 2009



             Antonio Marcio A. Menezes            ¸˜ `          ¸˜
                                           Introducao a Programacao C++ com Qt 4 (1/112)
¸˜ `          ¸˜
        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)
¸˜ `          ¸˜
        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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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)
´
                                     Parte Teorica
                                                     Por que C++ e Qt?
     ´              ¸˜
   Pratica - Construcao de uma Agenda de Telefones
                                                     O que preciso para comecar?
                                                                            ¸
                                          Resumo




          ´
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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




    ´
Historia do Qt

  O framework Qt comecou a estar dispon´vel publicamente a
                           ¸                    ı
  partir de maio de 1995. Foi criado por Haarvard Nord e Eirik
  Chambe-Eng, fundadores da empresa Trolltech. Desde seu
  in´cio, Qt foi concebido para ser multiplataforma.
    ı

                             ˆ                    ´
  Em marco de 1996, a agencia espacial europeia se tornou o
          ¸
  segundo cliente do Qt. E em setembro deste ano, foi lancada a
                                                           ¸
      ˜
  versao 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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




    ´
Historia do Qt

  O framework Qt comecou a estar dispon´vel publicamente a
                           ¸                    ı
  partir de maio de 1995. Foi criado por Haarvard Nord e Eirik
  Chambe-Eng, fundadores da empresa Trolltech. Desde seu
  in´cio, Qt foi concebido para ser multiplataforma.
    ı

                             ˆ                    ´
  Em marco de 1996, a agencia espacial europeia se tornou o
          ¸
  segundo cliente do Qt. E em setembro deste ano, foi lancada a
                                                           ¸
      ˜
  versao 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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




    ´
Historia do Qt


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

                                         ˜
  Em 2001, seguiu-se o lancamento da versao 3.0 do Qt, agora
                          ¸
  dispon´vel para Windows, MacOS X, Unix e Linux (desktop e
        ı
  embarcado).

                           ˜
  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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




    ´
Historia do Qt


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

                                         ˜
  Em 2001, seguiu-se o lancamento da versao 3.0 do Qt, agora
                          ¸
  dispon´vel para Windows, MacOS X, Unix e Linux (desktop e
        ı
  embarcado).

                           ˜
  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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




    ´
Historia do Qt


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

                                         ˜
  Em 2001, seguiu-se o lancamento da versao 3.0 do Qt, agora
                          ¸
  dispon´vel para Windows, MacOS X, Unix e Linux (desktop e
        ı
  embarcado).

                           ˜
  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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




    ´
Historia do Qt


  Em 2008, a empresa Trolltech foi adquirida pela Nokia. Trolltech
        ´
  agora e chamada de Qt 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 para
                           ¸˜
  desenvolvimento de aplicacoes: o Qt Creator.




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (7/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




    ´
Historia do Qt


  Em 2008, a empresa Trolltech foi adquirida pela Nokia. Trolltech
        ´
  agora e chamada de Qt 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 para
                           ¸˜
  desenvolvimento de aplicacoes: o Qt Creator.




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (7/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




Quem usa Qt?

          ¸˜
 Em Aplicacoes Desktop
       Phoenix, um sistema para controle de agendamento e
                ¸˜       ˆ
       monitoracao de voos, desenvolvido pela DFS (empresa de
                 ´
       controle aereo da Alemanha).
       VLC, reprodutor de m´dia.
                           ı
                                    ¸˜                  ´
       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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




Quem usa Qt?

 Em Sistemas Embarcados
    Porta-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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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 (11/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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 poss´vel apenas estudar as diferencas
                                 ı                         ¸
     ´            ´
 sintaticas para ja iniciar o aprendizado.

               ´
 Estudar atraves de exemplos
          ¸˜         ´                                  ¸˜
 A instalacao do Qt ja vem com muitos exemplos de aplicacoes
                        ˜                       ´
 uteis. 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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
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 (275
 Mb)”.

                ˆ ´                           ¸˜
 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 seguintes
 pacotes: libfreetype6-dev e libgtk2.0-dev.

                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (13/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
Instalacao - Tela 1




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (14/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
Instalacao - Tela 2




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (15/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
Instalacao - Tela 3




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (16/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
Instalacao - Tela 4




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (17/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
Instalacao - Tela 5




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (18/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
Instalacao - Tela 6




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (19/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
Instalacao - Tela 7




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (20/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
Instalacao - Tela 8




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (21/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




       ¸˜
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 IDE
            Qt Creator.
                                             ´             ¸˜
            lib armazena bibliotecas necessarias a execucao do Qt
            Creator.
                ´
            qt e onde se encontra o framework Qt e suas ferramen-
                                 ´           ´                ´
            tas. Dentro deste, ha outro diretorio bin que 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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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
                               ˜
 um arquivo objeto com a extensao .obj (no Windows) ou .o (no
                                     ´               ´
 Unix ou MACOS X). O arquivo objeto e um arquivo binario com
     ´        ´                                   ´
 o codigo de maquina espec´fico da arquitetura da maquina onde
                          ı
 foi gerado.


                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (23/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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
                               ˜
 um arquivo objeto com a extensao .obj (no Windows) ou .o (no
                                     ´               ´
 Unix ou MACOS X). O arquivo objeto e um arquivo binario com
     ´        ´                                   ´
 o codigo de maquina espec´fico da arquitetura da maquina onde
                          ı
 foi gerado.


                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (23/112)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




 ´
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 Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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 projeto
                                                    ´
       de tela sem programar qualquer linha de codigo.
                                                 ¸˜
       Qt Linguist para editar arquivos de traducoes, tornando uma
              ¸˜
       aplicacao 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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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 projeto
                                                    ´
       de tela sem programar qualquer linha de codigo.
                                                 ¸˜
       Qt Linguist para editar arquivos de traducoes, tornando uma
              ¸˜
       aplicacao 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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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 projeto
                                                    ´
       de tela sem programar qualquer linha de codigo.
                                                 ¸˜
       Qt Linguist para editar arquivos de traducoes, tornando uma
              ¸˜
       aplicacao 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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




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 projeto
                                                    ´
       de tela sem programar qualquer linha de codigo.
                                                 ¸˜
       Qt Linguist para editar arquivos de traducoes, tornando uma
              ¸˜
       aplicacao 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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




                     ¸˜
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)
´
                                    Parte Teorica
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




                     ¸˜
Minha primeira aplicacao com Qt

    ´                ´               ´                   ´
 Apos criar um diretorio hello, sera inclu´do 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
                                                    Por que C++ e Qt?
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                    O que preciso para comecar?
                                                                           ¸
                                         Resumo




                     ¸˜
Minha primeira aplicacao com Qt




    Figura: No Linux                                   Figura: No Windows




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (29/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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 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 (30/112)
´
                                                     Roteiro para a Pratica
                                                     Criando o projeto com o Qt Creator
                                              ´
                                     Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
     ´              ¸˜
   Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                          Resumo     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 propostas versoes incrementais da aplicacao
  exemplo.

             ˜                        ˜
  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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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 da
             ¸˜
       aplicacao.
                                  ´
       agenda-telefonica2.zip contem o layout inicial da tela princi-
                    ¸˜
       pal da aplicacao.
                                    ´
       agenda-telefonica3.zip contem a barra de ferramentas da
                               ¸˜          ¸˜    ´
       tela principal da aplicacao com as acoes basicas e ´cones.
                                                          ı
                                   ´
       agenda-telefonica4.zip contem o recurso de ativar a
             ¸˜     ´              ¸˜
       aplicacao na area de notificacao.

                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (32/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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 telas
                             ˆ        ´                    ¸˜
       traduzidas 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 GPL installJammer.



                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (34/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                    ¸˜
Requisitos da Aplicacao

 Requisitos I
                                              ´
       Cada pessoa cadastrada na agenda devera ser associada a
       um departamento na qual trabalha.
                              ´                    ´
       Todo departamento sera identificado por um codigo, uma
                                                            ˜
       sigla e um nome. Siglas e nomes dos departamentos serao
                ´
       alfanumericos.
                                                                ´
       O cadastro de cada pessoa e seu telefone de contato podera
           ´                                ¸˜
       tambem ser acrescido com a informacao de um numero de
                                                        ´
       ramal.


                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (35/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                    ¸˜
Requisitos da Aplicacao

 Requisitos II
                                    ˜
       Os dados dos cadastros serao armazenados localmente, 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 os
       telefones, ordenados por nome da pessoa.
               ´                                    ´
       Devera ser exibido na janela principal tambem um contador
       do numero de itens exibidos nesta lista.
             ´

                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (36/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                    ¸˜
Requisitos da Aplicacao


 Requisitos III
              ´
       Devera existir uma janela de busca avancada onde poderao
                                                ¸                ˜
       ser 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         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 banco Sqlite.




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (40/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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 RESTRICT
          ON INSERT RESTRICT,
        DDD INTEGER,
        TELEFONE INTEGER NOT NULL,
        RAMAL INTEGER
     );


                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (42/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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 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 (43/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                 ¸˜
Exerc´cio de Criacao do Projeto
     ı


         Exerc´cio 01
              ı
             Objetivo: Aprender como criar um projeto de
                    ¸˜
             aplicacao 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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 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 (51/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Widgets

                             ˜
 Widgets (Window Gadgets) sao componentes que possuem uma
           ¸˜     ´
 representacao grafica no projeto de telas. Com o Qt Designer, o
                                       ´            ´
 desenvolvedor pode criar interfaces graficas de usuario apenas
                        ´
 arrastando e soltando varios widgets sobre a janela que esta ´
 sendo projetada.

  ´             ´
 E poss´vel tambem testar o funcionamento “visual” da janela sob
       ı
          ´
 temas graficos diferentes (Plastique, GTK+, Motif, CleanLooks
 etc).



                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (52/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Exerc´cio com Widgets
     ı


         Exerc´cio 02
              ı
             Objetivo: Aprender a criar projetos de telas com
             componentes visuais.
                Tempo Estimado: 2 a 5 min.
                Resultado Esperado: Adicionar todos os widgets
                       ´
                necessarios para o projeto da janela principal da
                Agenda.



                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (53/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Exerc´cio com Widgets - Esboco da Tela
     ı                      ¸




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (54/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Exerc´cio com Widgets - Atribuindo textos
     ı




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (55/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Atribuindo textos ao Menu (QMenu)



     Ao adicionar itens ao menu principal, automaticamente
        ˜                            ˜                   ´
     serao criadas Actions que poderao ser ligadas a metodos
                              ´ ´
     da janela principal. Tambem e poss´vel definir ´cones para
                                        ı           ı
                               ´       ´
     as Actions, mas para isso e necessario criar um arquivo de
     recursos.




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (57/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando um arquivo de recursos




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (58/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando um arquivo de recursos




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (59/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando um arquivo de recursos




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (60/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando um arquivo de recursos




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (61/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Atribuindo um ´cone a uma Action
              ı




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (62/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Atribuindo um ´cone a uma Action
              ı




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (63/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Atribuindo um ´cone a uma Action
              ı




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (64/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Actions e Barra de Ferramentas



                                ´
 A partir do painel de actions, e poss´vel arrastar e soltar actions
                                      ı
 sobre a barra de ferramentas da janela principal. Com isto, serao˜
                                ˜
 automaticamente criados botoes na barra de ferramentas que
         ˜
 acionarao as actions ao serem clicados. Os ´cones das actions
                                                ı
      ´             ˜         ˜
 tambem aparecerao nos botoes da barra de ferramentas.




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (65/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Exerc´cio com Layouts
     ı



         Exerc´cio 03
              ı
             Objetivo: Aprender a definir os layouts de telas
             com 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Definindo o primeiro layout




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (67/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Definindo o primeiro layout




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (68/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Definindo o primeiro layout




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (69/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Definindo o primeiro layout




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (70/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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 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)
´
                                                     Roteiro para a Pratica
                                                     Criando o projeto com o Qt Creator
                                              ´
                                     Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
     ´              ¸˜
   Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                          Resumo     Acesso a Bancos de Dados
                                                                          ¸˜
                                                     Traduzindo a Aplicacao
                                                                                       ¸˜
                                                     Construindo 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 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 metodo e o slot.




                        Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                     Introducao a Programacao C++ com Qt 4 (73/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Definindo signal e slot apropriados




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (75/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Exerc´cio com Signals
     ı


 Exerc´cio 04
      ı
     Objetivo: Aprender a conectar signals e slots dos widgets
     com 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


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 c´clica. 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 exemplo
 aqui tratada. Quando forem criados, modificados ou exclu´dos
                                                        ı
 departamentos, a ComboBox de Departamento da janela
                ´
 principal devera ser atualizada.

                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (79/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


 ´
Modulo QtSql


     ´          ´                                           ´
 O modulo QtSql e 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 poss´vel acessar outros bancos com o driver ODBC, 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)
´
                                                      Roteiro para a Pratica
                                                      Criando o projeto com o Qt Creator
                                               ´
                                      Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
      ´              ¸˜
    Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                           Resumo     Acesso a Bancos de Dados
                                                                           ¸˜
                                                      Traduzindo a Aplicacao
                                                                                        ¸˜
                                                      Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Exerc´cio com Banco de Dados
     ı


 Exerc´cio 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 que
       recupera os nomes dos departamentos existentes no banco
       de dados.


                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (85/112)
´
                                                     Roteiro para a Pratica
                                                     Criando o projeto com o Qt Creator
                                              ´
                                     Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
     ´              ¸˜
   Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                          Resumo     Acesso a Bancos de Dados
                                                                          ¸˜
                                                     Traduzindo a Aplicacao
                                                                                       ¸˜
                                                     Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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 um
 QStringList.



                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (87/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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 Sql
       QSqlQueryModel: Um modelo de dados read-only baseado
       em uma consulta SQL.
       QSqlTableModel: Um modelo read-write que trabalha so-
       mente sobre uma unica tabela.
                         ´
       QSqlRelationalTableModel:                     ¸˜
                                      Uma especializacao de
       QSqlTableModel mas com suporte a chaves estrangeiras
            ¸˜
       (relacoes com outras tabelas).

                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (89/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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 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 (90/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Qt Linguist


                    ´                      ¸˜
  A forma mais facil de tornar uma aplicacao Qt com suporte a
                  ´
  outras 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                              ¸˜
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 janelas
                                       ´
 criadas com o Qt Designer e tambem encapsuladas por tr() nos
                                    ¸˜
 demais arquivos fontes da aplicacao.

 Sintaxe: lupdate arquivo do projeto.pro




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (92/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                              ¸˜
Produzindo um arquivo de traducao
            ¸˜                            ¸˜
 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 l´nguas de origem e destino dos tex-
                             ı
 tos capturados.




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (93/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                              ¸˜
Produzindo um arquivo de traducao

                ´                                           ´
 O Qt 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                              ¸˜
Produzindo um arquivo de traducao

    ´                          ¸˜                             ¸˜
 Apos concluir todas as traducoes das strings, utiliza-se a opcao
                                                          ´
 de menu File->Release do Qt Linguist. Com isto, sera gerado
                           ¸˜                           ¸˜
 um arquivo de compilacao (.qm) do projeto de traducao. Para
                                                        ¸˜
 carregar 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     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 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 (96/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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 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 configurar variaveis de
                          ´
       ambiente temporarias e executar o arquivo executavel. ´

                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (97/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                      ¸˜
Implantando uma aplicacao Qt

                  ¸˜
 No caso da aplicacao exemplo, Agenda de Telefones:
                   ´
     Arquivo executavel: agenda-telefonica
       Arquivos .qm: agenda-telefonica.qm
       Arquivos de bibliotecas do Qt: libQtCore.so.4, libQtSql.so.4,
       libQtGui.so.4, libQtNetwork.so.4
            ´
       Diretorio sqldrivers: com o plugin libqsqlite.so
       Arquivo .sh: agenda-telefonica.sh
       ´cones: agenda-telefonica.png e uninstall.png
       I



                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (98/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


                      ¸˜
Implantando uma aplicacao Qt
            ´
 Existem varias formas poss´veis de construir um pacote de
                             ı
         ¸˜               ¸˜                     ˜
 implantacao de uma aplicacao Qt. Algumas delas sao:
                                       ¸˜
       Pacotes .rpm, .deb, .tgz: a criacao de pacotes espec´ficos de
                                                           ı
                ¸˜         ´
       distribuicoes linux e uma das formas mais comuns e tende a
                         ˆ
       transmitir 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)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo 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 com
     ´
 Qt e a capacidade de desenvolver sistemas multiplatafor-
        ´
 mas, e interessante utilizar uma ferramenta de instalacao    ¸˜
                       ´
 multiplataforma. Esta e uma caracter´stica do installJammer.
                                     ı




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (100/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando o instalador




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (101/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando o instalador




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (102/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando o instalador




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (103/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando o instalador




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (104/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando o instalador




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (105/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando o instalador




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (106/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando o instalador




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (107/112)
´
                                                    Roteiro para a Pratica
                                                    Criando o projeto com o Qt Creator
                                             ´
                                    Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                         Resumo     Acesso a Bancos de Dados
                                                                         ¸˜
                                                    Traduzindo a Aplicacao
                                                                                      ¸˜
                                                    Construindo o instalador da Aplicacao


Criando o instalador




                       Antonio Marcio A. Menezes           ¸˜ `          ¸˜
                                                    Introducao a Programacao C++ com Qt 4 (108/112)
´
                                                     Roteiro para a Pratica
                                                     Criando o projeto com o Qt Creator
                                              ´
                                     Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
     ´              ¸˜
   Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                          Resumo     Acesso a Bancos de Dados
                                                                          ¸˜
                                                     Traduzindo a Aplicacao
                                                                                       ¸˜
                                                     Construindo o instalador da Aplicacao


Criando o instalador

     ´                                           ¸˜
  Apos passar pelas telas do assistente de criacao de projeto do
                     ´                     ´                 ¸˜
  InstallJammer, sera exibida a tela com a arvore de configuracoes
                                                 ¸˜
  do 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)
´
                                                     Roteiro para a Pratica
                                                     Criando o projeto com o Qt Creator
                                              ´
                                     Parte Teorica   Trabalhando com Widgets, Layouts, Actions Etc.
     ´              ¸˜
   Pratica - Construcao de uma Agenda de Telefones   Conectando Signals e Slots
                                          Resumo     Acesso a Bancos de Dados
                                                                          ¸˜
                                                     Traduzindo a Aplicacao
                                                                                       ¸˜
                                                     Construindo 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)
´
                                    Parte Teorica
                                                    Resumo
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                         ˆ
                                                    Referencias
                                         Resumo




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)
´
                                    Parte Teorica
                                                    Resumo
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                         ˆ
                                                    Referencias
                                         Resumo




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)
´
                                    Parte Teorica
                                                    Resumo
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                         ˆ
                                                    Referencias
                                         Resumo




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)
´
                                    Parte Teorica
                                                    Resumo
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                         ˆ
                                                    Referencias
                                         Resumo




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)
´
                                    Parte Teorica
                                                    Resumo
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                         ˆ
                                                    Referencias
                                         Resumo




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)
´
                                    Parte Teorica
                                                    Resumo
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                         ˆ
                                                    Referencias
                                         Resumo




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)
´
                                    Parte Teorica
                                                    Resumo
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                         ˆ
                                                    Referencias
                                         Resumo




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)
´
                                    Parte Teorica
                                                    Resumo
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                         ˆ
                                                    Referencias
                                         Resumo




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)
´
                                    Parte Teorica
                                                    Resumo
    ´              ¸˜
  Pratica - Construcao de uma Agenda de Telefones
                                                         ˆ
                                                    Referencias
                                         Resumo




     ˆ
Referencias

       J. Blanchette and M. Summerfield.
       C++ GUI Programming with Qt 4.
       Prentice Hall, 2008.
                    ¸˜
       Documentacao do Qt 4.5
       http://qt.nokia.com/doc/4.5/index.html
         ´
       Pagina do InstallJammer
       http://www.installjammer.com
       IDE Kevora
       http://kevora.sourceforge.net

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

Introdução à Programação C++ com Qt 4

  • 1.
    ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 Antonio Marcio A. Menezes antonio-marcio.menezes@serpro.gov.br ´ II Forum de Tecnologia em Software Livre SERPRO - Regional Porto Alegre Outubro de 2009 Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (1/112)
  • 2.
    ¸˜ ` ¸˜ 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)
  • 3.
    ¸˜ ` ¸˜ 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)
  • 4.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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)
  • 5.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ´ 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)
  • 6.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ´ Historia do Qt O framework Qt comecou a estar dispon´vel publicamente a ¸ ı partir de maio de 1995. Foi criado por Haarvard Nord e Eirik Chambe-Eng, fundadores da empresa Trolltech. Desde seu in´cio, Qt foi concebido para ser multiplataforma. ı ˆ ´ Em marco de 1996, a agencia espacial europeia se tornou o ¸ segundo cliente do Qt. E em setembro deste ano, foi lancada a ¸ ˜ versao 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)
  • 7.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ´ Historia do Qt O framework Qt comecou a estar dispon´vel publicamente a ¸ ı partir de maio de 1995. Foi criado por Haarvard Nord e Eirik Chambe-Eng, fundadores da empresa Trolltech. Desde seu in´cio, Qt foi concebido para ser multiplataforma. ı ˆ ´ Em marco de 1996, a agencia espacial europeia se tornou o ¸ segundo cliente do Qt. E em setembro deste ano, foi lancada a ¸ ˜ versao 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)
  • 8.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ´ Historia do Qt ˜ ˜ Em 1999, a versao 2.0 do Qt foi liberada. Uma versao do Qt para linux embarcado, por sua vez, foi lancada em 2000. ¸ ˜ Em 2001, seguiu-se o lancamento da versao 3.0 do Qt, agora ¸ dispon´vel para Windows, MacOS X, Unix e Linux (desktop e ı embarcado). ˜ 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)
  • 9.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ´ Historia do Qt ˜ ˜ Em 1999, a versao 2.0 do Qt foi liberada. Uma versao do Qt para linux embarcado, por sua vez, foi lancada em 2000. ¸ ˜ Em 2001, seguiu-se o lancamento da versao 3.0 do Qt, agora ¸ dispon´vel para Windows, MacOS X, Unix e Linux (desktop e ı embarcado). ˜ 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)
  • 10.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ´ Historia do Qt ˜ ˜ Em 1999, a versao 2.0 do Qt foi liberada. Uma versao do Qt para linux embarcado, por sua vez, foi lancada em 2000. ¸ ˜ Em 2001, seguiu-se o lancamento da versao 3.0 do Qt, agora ¸ dispon´vel para Windows, MacOS X, Unix e Linux (desktop e ı embarcado). ˜ 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)
  • 11.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ´ Historia do Qt Em 2008, a empresa Trolltech foi adquirida pela Nokia. Trolltech ´ agora e chamada de Qt 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 para ¸˜ desenvolvimento de aplicacoes: o Qt Creator. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (7/112)
  • 12.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ´ Historia do Qt Em 2008, a empresa Trolltech foi adquirida pela Nokia. Trolltech ´ agora e chamada de Qt 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 para ¸˜ desenvolvimento de aplicacoes: o Qt Creator. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (7/112)
  • 13.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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)
  • 14.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo Quem usa Qt? ¸˜ Em Aplicacoes Desktop Phoenix, um sistema para controle de agendamento e ¸˜ ˆ monitoracao de voos, desenvolvido pela DFS (empresa de ´ controle aereo da Alemanha). VLC, reprodutor de m´dia. ı ¸˜ ´ 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)
  • 15.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo Quem usa Qt? Em Sistemas Embarcados Porta-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)
  • 16.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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 (11/112)
  • 17.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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 poss´vel apenas estudar as diferencas ı ¸ ´ ´ sintaticas para ja iniciar o aprendizado. ´ Estudar atraves de exemplos ¸˜ ´ ¸˜ A instalacao do Qt ja vem com muitos exemplos de aplicacoes ˜ ´ uteis. 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)
  • 18.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ 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 (275 Mb)”. ˆ ´ ¸˜ 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 seguintes pacotes: libfreetype6-dev e libgtk2.0-dev. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (13/112)
  • 19.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Instalacao - Tela 1 Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (14/112)
  • 20.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Instalacao - Tela 2 Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (15/112)
  • 21.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Instalacao - Tela 3 Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (16/112)
  • 22.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Instalacao - Tela 4 Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (17/112)
  • 23.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Instalacao - Tela 5 Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (18/112)
  • 24.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Instalacao - Tela 6 Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (19/112)
  • 25.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Instalacao - Tela 7 Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (20/112)
  • 26.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Instalacao - Tela 8 Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (21/112)
  • 27.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ 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 IDE Qt Creator. ´ ¸˜ lib armazena bibliotecas necessarias a execucao do Qt Creator. ´ qt e onde se encontra o framework Qt e suas ferramen- ´ ´ ´ tas. Dentro deste, ha outro diretorio bin que 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)
  • 28.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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 ˜ um arquivo objeto com a extensao .obj (no Windows) ou .o (no ´ ´ Unix ou MACOS X). O arquivo objeto e um arquivo binario com ´ ´ ´ o codigo de maquina espec´fico da arquitetura da maquina onde ı foi gerado. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (23/112)
  • 29.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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 ˜ um arquivo objeto com a extensao .obj (no Windows) ou .o (no ´ ´ Unix ou MACOS X). O arquivo objeto e um arquivo binario com ´ ´ ´ o codigo de maquina espec´fico da arquitetura da maquina onde ı foi gerado. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (23/112)
  • 30.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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)
  • 31.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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)
  • 32.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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)
  • 33.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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)
  • 34.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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)
  • 35.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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)
  • 36.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ´ 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)
  • 37.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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 projeto ´ de tela sem programar qualquer linha de codigo. ¸˜ Qt Linguist para editar arquivos de traducoes, tornando uma ¸˜ aplicacao 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)
  • 38.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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 projeto ´ de tela sem programar qualquer linha de codigo. ¸˜ Qt Linguist para editar arquivos de traducoes, tornando uma ¸˜ aplicacao 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)
  • 39.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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 projeto ´ de tela sem programar qualquer linha de codigo. ¸˜ Qt Linguist para editar arquivos de traducoes, tornando uma ¸˜ aplicacao 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)
  • 40.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo 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 projeto ´ de tela sem programar qualquer linha de codigo. ¸˜ Qt Linguist para editar arquivos de traducoes, tornando uma ¸˜ aplicacao 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)
  • 41.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ 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)
  • 42.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Minha primeira aplicacao com Qt ´ ´ ´ ´ Apos criar um diretorio hello, sera inclu´do 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)
  • 43.
    ´ Parte Teorica Por que C++ e Qt? ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones O que preciso para comecar? ¸ Resumo ¸˜ Minha primeira aplicacao com Qt Figura: No Linux Figura: No Windows Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (29/112)
  • 44.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 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 (30/112)
  • 45.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 propostas versoes incrementais da aplicacao exemplo. ˜ ˜ 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)
  • 46.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 da ¸˜ aplicacao. ´ agenda-telefonica2.zip contem o layout inicial da tela princi- ¸˜ pal da aplicacao. ´ agenda-telefonica3.zip contem a barra de ferramentas da ¸˜ ¸˜ ´ tela principal da aplicacao com as acoes basicas e ´cones. ı ´ agenda-telefonica4.zip contem o recurso de ativar a ¸˜ ´ ¸˜ aplicacao na area de notificacao. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (32/112)
  • 47.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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)
  • 48.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 telas ˆ ´ ¸˜ traduzidas 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 GPL installJammer. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (34/112)
  • 49.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ Requisitos da Aplicacao Requisitos I ´ Cada pessoa cadastrada na agenda devera ser associada a um departamento na qual trabalha. ´ ´ Todo departamento sera identificado por um codigo, uma ˜ sigla e um nome. Siglas e nomes dos departamentos serao ´ alfanumericos. ´ O cadastro de cada pessoa e seu telefone de contato podera ´ ¸˜ tambem ser acrescido com a informacao de um numero de ´ ramal. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (35/112)
  • 50.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ Requisitos da Aplicacao Requisitos II ˜ Os dados dos cadastros serao armazenados localmente, 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 os telefones, ordenados por nome da pessoa. ´ ´ Devera ser exibido na janela principal tambem um contador do numero de itens exibidos nesta lista. ´ Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (36/112)
  • 51.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ Requisitos da Aplicacao Requisitos III ´ Devera existir uma janela de busca avancada onde poderao ¸ ˜ ser 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)
  • 52.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots 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)
  • 53.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots 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)
  • 54.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots 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 banco Sqlite. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (40/112)
  • 55.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 56.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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 RESTRICT ON INSERT RESTRICT, DDD INTEGER, TELEFONE INTEGER NOT NULL, RAMAL INTEGER ); Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (42/112)
  • 57.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 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 (43/112)
  • 58.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ Exerc´cio de Criacao do Projeto ı Exerc´cio 01 ı Objetivo: Aprender como criar um projeto de ¸˜ aplicacao 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)
  • 59.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ 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)
  • 60.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ 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)
  • 61.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ 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)
  • 62.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ 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)
  • 63.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ 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)
  • 64.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ 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)
  • 65.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 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 (51/112)
  • 66.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Widgets ˜ Widgets (Window Gadgets) sao componentes que possuem uma ¸˜ ´ representacao grafica no projeto de telas. Com o Qt Designer, o ´ ´ desenvolvedor pode criar interfaces graficas de usuario apenas ´ arrastando e soltando varios widgets sobre a janela que esta ´ sendo projetada. ´ ´ E poss´vel tambem testar o funcionamento “visual” da janela sob ı ´ temas graficos diferentes (Plastique, GTK+, Motif, CleanLooks etc). Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (52/112)
  • 67.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Exerc´cio com Widgets ı Exerc´cio 02 ı Objetivo: Aprender a criar projetos de telas com componentes visuais. Tempo Estimado: 2 a 5 min. Resultado Esperado: Adicionar todos os widgets ´ necessarios para o projeto da janela principal da Agenda. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (53/112)
  • 68.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Exerc´cio com Widgets - Esboco da Tela ı ¸ Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (54/112)
  • 69.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Exerc´cio com Widgets - Atribuindo textos ı Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (55/112)
  • 70.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 71.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Atribuindo textos ao Menu (QMenu) Ao adicionar itens ao menu principal, automaticamente ˜ ˜ ´ serao criadas Actions que poderao ser ligadas a metodos ´ ´ da janela principal. Tambem e poss´vel definir ´cones para ı ı ´ ´ as Actions, mas para isso e necessario criar um arquivo de recursos. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (57/112)
  • 72.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando um arquivo de recursos Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (58/112)
  • 73.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando um arquivo de recursos Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (59/112)
  • 74.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando um arquivo de recursos Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (60/112)
  • 75.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando um arquivo de recursos Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (61/112)
  • 76.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Atribuindo um ´cone a uma Action ı Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (62/112)
  • 77.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Atribuindo um ´cone a uma Action ı Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (63/112)
  • 78.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Atribuindo um ´cone a uma Action ı Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (64/112)
  • 79.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Actions e Barra de Ferramentas ´ A partir do painel de actions, e poss´vel arrastar e soltar actions ı sobre a barra de ferramentas da janela principal. Com isto, serao˜ ˜ automaticamente criados botoes na barra de ferramentas que ˜ acionarao as actions ao serem clicados. Os ´cones das actions ı ´ ˜ ˜ tambem aparecerao nos botoes da barra de ferramentas. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (65/112)
  • 80.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Exerc´cio com Layouts ı Exerc´cio 03 ı Objetivo: Aprender a definir os layouts de telas com 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)
  • 81.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Definindo o primeiro layout Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (67/112)
  • 82.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Definindo o primeiro layout Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (68/112)
  • 83.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Definindo o primeiro layout Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (69/112)
  • 84.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Definindo o primeiro layout Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (70/112)
  • 85.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 86.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 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)
  • 87.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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 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 metodo e o slot. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (73/112)
  • 88.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 89.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Definindo signal e slot apropriados Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (75/112)
  • 90.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Exerc´cio com Signals ı Exerc´cio 04 ı Objetivo: Aprender a conectar signals e slots dos widgets com 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)
  • 91.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao 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)
  • 92.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 93.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao 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 c´clica. 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 exemplo aqui tratada. Quando forem criados, modificados ou exclu´dos ı departamentos, a ComboBox de Departamento da janela ´ principal devera ser atualizada. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (79/112)
  • 94.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 95.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 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)
  • 96.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ´ Modulo QtSql ´ ´ ´ O modulo QtSql e 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 poss´vel acessar outros bancos com o driver ODBC, 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)
  • 97.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 98.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 99.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Exerc´cio com Banco de Dados ı Exerc´cio 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 que recupera os nomes dos departamentos existentes no banco de dados. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (85/112)
  • 100.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 101.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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 um QStringList. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (87/112)
  • 102.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 103.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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 Sql QSqlQueryModel: Um modelo de dados read-only baseado em uma consulta SQL. QSqlTableModel: Um modelo read-write que trabalha so- mente sobre uma unica tabela. ´ QSqlRelationalTableModel: ¸˜ Uma especializacao de QSqlTableModel mas com suporte a chaves estrangeiras ¸˜ (relacoes com outras tabelas). Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (89/112)
  • 104.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 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 (90/112)
  • 105.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Qt Linguist ´ ¸˜ A forma mais facil de tornar uma aplicacao Qt com suporte a ´ outras 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)
  • 106.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ 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 janelas ´ criadas com o Qt Designer e tambem encapsuladas por tr() nos ¸˜ demais arquivos fontes da aplicacao. Sintaxe: lupdate arquivo do projeto.pro Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (92/112)
  • 107.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ Produzindo um arquivo de traducao ¸˜ ¸˜ 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 l´nguas de origem e destino dos tex- ı tos capturados. Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (93/112)
  • 108.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ Produzindo um arquivo de traducao ´ ´ O Qt 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)
  • 109.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ Produzindo um arquivo de traducao ´ ¸˜ ¸˜ Apos concluir todas as traducoes das strings, utiliza-se a opcao ´ de menu File->Release do Qt Linguist. Com isto, sera gerado ¸˜ ¸˜ um arquivo de compilacao (.qm) do projeto de traducao. Para ¸˜ carregar 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)
  • 110.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo 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 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 (96/112)
  • 111.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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 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 configurar variaveis de ´ ambiente temporarias e executar o arquivo executavel. ´ Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (97/112)
  • 112.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ Implantando uma aplicacao Qt ¸˜ No caso da aplicacao exemplo, Agenda de Telefones: ´ Arquivo executavel: agenda-telefonica Arquivos .qm: agenda-telefonica.qm Arquivos de bibliotecas do Qt: libQtCore.so.4, libQtSql.so.4, libQtGui.so.4, libQtNetwork.so.4 ´ Diretorio sqldrivers: com o plugin libqsqlite.so Arquivo .sh: agenda-telefonica.sh ´cones: agenda-telefonica.png e uninstall.png I Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (98/112)
  • 113.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao ¸˜ Implantando uma aplicacao Qt ´ Existem varias formas poss´veis de construir um pacote de ı ¸˜ ¸˜ ˜ implantacao de uma aplicacao Qt. Algumas delas sao: ¸˜ Pacotes .rpm, .deb, .tgz: a criacao de pacotes espec´ficos de ı ¸˜ ´ distribuicoes linux e uma das formas mais comuns e tende a ˆ transmitir 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)
  • 114.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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 com ´ Qt e a capacidade de desenvolver sistemas multiplatafor- ´ mas, e interessante utilizar uma ferramenta de instalacao ¸˜ ´ multiplataforma. Esta e uma caracter´stica do installJammer. ı Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (100/112)
  • 115.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando o instalador Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (101/112)
  • 116.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando o instalador Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (102/112)
  • 117.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando o instalador Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (103/112)
  • 118.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando o instalador Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (104/112)
  • 119.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando o instalador Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (105/112)
  • 120.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando o instalador Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (106/112)
  • 121.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando o instalador Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (107/112)
  • 122.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando o instalador Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (108/112)
  • 123.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo o instalador da Aplicacao Criando o instalador ´ ¸˜ Apos passar pelas telas do assistente de criacao de projeto do ´ ´ ¸˜ InstallJammer, sera exibida a tela com a arvore de configuracoes ¸˜ do 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)
  • 124.
    ´ Roteiro para a Pratica Criando o projeto com o Qt Creator ´ Parte Teorica Trabalhando com Widgets, Layouts, Actions Etc. ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones Conectando Signals e Slots Resumo Acesso a Bancos de Dados ¸˜ Traduzindo a Aplicacao ¸˜ Construindo 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)
  • 125.
    ´ Parte Teorica Resumo ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones ˆ Referencias Resumo 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)
  • 126.
    ´ Parte Teorica Resumo ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones ˆ Referencias Resumo 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)
  • 127.
    ´ Parte Teorica Resumo ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones ˆ Referencias Resumo 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)
  • 128.
    ´ Parte Teorica Resumo ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones ˆ Referencias Resumo 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)
  • 129.
    ´ Parte Teorica Resumo ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones ˆ Referencias Resumo 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)
  • 130.
    ´ Parte Teorica Resumo ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones ˆ Referencias Resumo 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)
  • 131.
    ´ Parte Teorica Resumo ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones ˆ Referencias Resumo 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)
  • 132.
    ´ Parte Teorica Resumo ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones ˆ Referencias Resumo 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)
  • 133.
    ´ Parte Teorica Resumo ´ ¸˜ Pratica - Construcao de uma Agenda de Telefones ˆ Referencias Resumo ˆ Referencias J. Blanchette and M. Summerfield. C++ GUI Programming with Qt 4. Prentice Hall, 2008. ¸˜ Documentacao do Qt 4.5 http://qt.nokia.com/doc/4.5/index.html ´ Pagina do InstallJammer http://www.installjammer.com IDE Kevora http://kevora.sourceforge.net Antonio Marcio A. Menezes ¸˜ ` ¸˜ Introducao a Programacao C++ com Qt 4 (112/112)