• Nenhum resultado encontrado

Antonio Marcio A. Menezes. Outubro de 2009

N/A
N/A
Protected

Academic year: 2021

Share "Antonio Marcio A. Menezes. Outubro de 2009"

Copied!
133
0
0

Texto

(1)

Introduc¸ ˜ao `a Programac¸ ˜ao C++ com Qt 4

Antonio Marcio A. Menezes

antonio-marcio.menezes@serpro.gov.br

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

(2)

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc. Conectando Signals e Slots

Acesso a Bancos de Dados Traduzindo a Aplicac¸ ˜ao

(3)

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones

Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc. Conectando Signals e Slots

Acesso a Bancos de Dados Traduzindo a Aplicac¸ ˜ao

(4)

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc. Conectando Signals e Slots

Acesso a Bancos de Dados Traduzindo a Aplicac¸ ˜ao

(5)

Qt, o que ´e isso?

Qt,muito mais que uma biblioteca, ´e um framework para desen-volvimento multi-plataforma de aplicac¸ ˜oes.

Qt est ´a dispon´ıvel para as seguintes plataformas: Windows. Windows CE. Linux/X11. Linux Embarcado. S60 (Symbian - Em Breve). MacOS X.

(6)

Hist ´oria do Qt

O framework Qt comec¸ou a estar dispon´ıvel publicamente a

partir de maio de1995. Foi criado por Haarvard Nord e Eirik

Chambe-Eng, fundadores da empresa Trolltech. Desde seu in´ıcio, Qt foi concebido para ser multiplataforma.

Em marc¸o de 1996, a ag ˆencia espacial europ ´eia se tornou o segundo cliente do Qt. E emsetembro deste ano, foi lanc¸ada a vers ˜ao 1.0do Qt. Ainda neste ano, foi iniciado o projeto KDE, desenvolvido com Qt, porMatthias Ettrich. Mais tarde, em1998, Matthias foi contratado pela Trolltech.

(7)

Hist ´oria do Qt

O framework Qt comec¸ou a estar dispon´ıvel publicamente a

partir de maio de1995. Foi criado por Haarvard Nord e Eirik

Chambe-Eng, fundadores da empresa Trolltech. Desde seu in´ıcio, Qt foi concebido para ser multiplataforma.

Em marc¸o de 1996, a ag ˆencia espacial europ ´eia se tornou o

segundo cliente do Qt. E emsetembro deste ano, foi lanc¸ada a

vers ˜ao 1.0do Qt. Ainda neste ano, foi iniciado o projeto KDE,

desenvolvido com Qt, porMatthias Ettrich. Mais tarde, em1998,

(8)

Hist ´oria do Qt

Em1999, a vers ˜ao 2.0 do Qt foi liberada. Uma vers ˜ao do Qt

para linux embarcado, por sua vez, foi lanc¸ada em2000.

Em2001, seguiu-se o lanc¸amento davers ˜ao 3.0 do Qt, agora dispon´ıvel para Windows, MacOS X, Unix e Linux (desktop e embarcado).

Em meados de2005, avers ˜ao Qt 4.0tornou-se dispon´ıvel, con-tando com 500 classes e mais de 9000 func¸ ˜oes.

(9)

Hist ´oria do Qt

Em1999, a vers ˜ao 2.0 do Qt foi liberada. Uma vers ˜ao do Qt

para linux embarcado, por sua vez, foi lanc¸ada em2000.

Em2001, seguiu-se o lanc¸amento davers ˜ao 3.0 do Qt, agora

dispon´ıvel para Windows, MacOS X, Unix e Linux (desktop e embarcado).

Em meados de2005, avers ˜ao Qt 4.0tornou-se dispon´ıvel, con-tando com 500 classes e mais de 9000 func¸ ˜oes.

(10)

Hist ´oria do Qt

Em1999, a vers ˜ao 2.0 do Qt foi liberada. Uma vers ˜ao do Qt

para linux embarcado, por sua vez, foi lanc¸ada em2000.

Em2001, seguiu-se o lanc¸amento davers ˜ao 3.0 do Qt, agora

dispon´ıvel para Windows, MacOS X, Unix e Linux (desktop e embarcado).

Em meados de2005, avers ˜ao Qt 4.0tornou-se dispon´ıvel,

(11)

Hist ´oria do Qt

Em2008, a empresa Trolltech foi adquirida pelaNokia. Trolltech

agora ´e chamada de Qt Software. Pouco tempo depois, o Qt

passou a ser lanc¸ado sob as licenc¸as GPL, LGPL e comercial.

Recentemente, al ´em de ser fornecido o framework Qt, a em-presa Qt Software passou a fornecer uma IDE amig ´avel para desenvolvimento de aplicac¸ ˜oes: oQt Creator.

(12)

Hist ´oria do Qt

Em2008, a empresa Trolltech foi adquirida pelaNokia. Trolltech

agora ´e chamada de Qt Software. Pouco tempo depois, o Qt

passou a ser lanc¸ado sob as licenc¸as GPL, LGPL e comercial. Recentemente, al ´em de ser fornecido o framework Qt, a em-presa Qt Software passou a fornecer uma IDE amig ´avel para

(13)

Por que C++ e Qt?

O que eu ganho em programar com C++ e Qt?

DesenvolvimentoMultiplataforma.

Programac¸ ˜ao C++ mais amig ´avelcom Qt.

Implemente uma vez. Compile em qualquer lugar.

Aplicac¸ ˜oes KDEs ˜ao feitas com Qt.

Criac¸ ˜ao de interfaces gr ´aficaselegantes e amig ´aveis. Utilizac¸ ˜ao de uma APIrica e ´util.

(14)

Quem usa Qt?

Em Aplicac¸ ˜oes Desktop

Phoenix, um sistema para controle de agendamento e monitorac¸ ˜ao de v ˆoos, desenvolvido pela DFS (empresa de controle a ´ereo da Alemanha).

VLC, reprodutor de m´ıdia.

Google Earth, para visualizac¸ ˜ao de imagens de sat ´elite e outras informac¸ ˜oes georreferenciadas.

Skype, ferramenta de comunic¸ ˜ao de voz e dados via internet.

(15)

Quem usa Qt?

Em Sistemas Embarcados

Porta-retrato digital SPF-105V daSamsung.

V ´arios modelos de celulares daMotorola.

V´ıdeo-fone VP 5500 daPhilips.

Sony mylo, um comunicador pessoal.

Telefone Wi-Fi KX-WP1050 paraSkypedaPanasonic.

Smartphones 3G daZTE.

GPS Naviflash 1020 daBury.

(16)

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc. Conectando Signals e Slots

Acesso a Bancos de Dados Traduzindo a Aplicac¸ ˜ao

(17)

O que preciso para comec¸ar?

Conhecer C ou C++

Apesar de ser importante um conhecimento mais avanc¸ado de C++, para quem programa em Java ou outras linguagens orientadas a objetos ´e poss´ıvel apenas estudar as diferenc¸as sint ´aticas para j ´a iniciar o aprendizado.

Estudar atrav ´es de exemplos

A instalac¸ ˜ao do Qt j ´a vem com muitos exemplos de aplicac¸ ˜oes ´uteis. Estes exemplos s ˜ao fornecidos com seus c ´odigos.

Instalar o Qt SDK e consultar outras refer ˆencias

(18)

Instalac¸ ˜ao

Na p ´agina http://qt.nokia.com/downloads voc ˆe pode fazer o

download da vers ˜ao LGPL/Free.

Clique em “Download Qt SDK for Linux/X11 32-bit (275

Mb)”.

Com isto, voc ˆe ir ´a obter o arquivo de instalac¸ ˜ao (certifique-se de conceder permiss ˜ao de execuc¸ ˜ao para o mesmo):

qt-sdk-linux-x86-opensource-2009.03.1.bin. ´

E necess ´ario tamb ´em verificar se est ˜ao instalados os seguintes

(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)

Instalac¸ ˜ao - Resumo

Ao final, no diret ´orio de instalac¸ ˜ao do Qt SDK, ser ˜ao encontra-dos os seguintes subdiret ´orios:

bin ´e o diret ´orio onde se encontra o execut ´avel do IDE Qt Creator.

libarmazena bibliotecas necess ´arias a execuc¸ ˜ao do Qt

Creator.

qt´e onde se encontra o framework Qt e suas

ferramen-tas. Dentro deste, h ´a outro diret ´oriobinque cont ´em os execut ´aveis do framework.

share ´e apenas um diret ´orio de recursos (doc, ima-gens etc) utilizados pelo Qt Creator.

(28)

Fundamentos

Um programa em C++ consiste de um ou mais unidades de

compilac¸ ˜ao. Cada unidade de compilac¸ ˜ao ´e um arquivo texto

de c ´odigo fonte, tipicamente, com uma extens ˜ao.cpp(ou .cc ou

.cxx).

Para uma unidade de compilac¸ ˜ao, o compilador ir ´a gerar um arquivo objetocom a extens ˜ao .obj (no Windows) ou .o(no Unix ou MACOS X). O arquivo objeto ´e umarquivo bin ´ario com o c ´odigo de m ´aquinaespec´ıfico da arquiteturada m ´aquina onde foi gerado.

(29)

Fundamentos

Um programa em C++ consiste de um ou mais unidades de

compilac¸ ˜ao. Cada unidade de compilac¸ ˜ao ´e um arquivo texto

de c ´odigo fonte, tipicamente, com uma extens ˜ao.cpp(ou .cc ou

.cxx).

Para uma unidade de compilac¸ ˜ao, o compilador ir ´a gerar um arquivo objetocom a extens ˜ao .obj (no Windows) ou .o(no

Unix ou MACOS X). O arquivo objeto ´e umarquivo bin ´ario com

o c ´odigo de m ´aquinaespec´ıfico da arquiteturada m ´aquina onde

(30)

Fundamentos

Um programa em C++ passa por 6 passos

Edic¸ ˜ao(com um programa editor de texto, por exemplo). Pr ´e-processamento (atrav ´es de diretivas s ˜ao realizadas in-clus ˜oes e substituic¸ ˜oes de textos).

Compilac¸ ˜ao(gerac¸ ˜ao do c ´odigo objeto).

Ligac¸ ˜ao(“linking” com o c ´odigo das rotinas referenciadas em bibliotecas).

Carga(carga do programa e bibliotecas na mem ´oria). Execuc¸ ˜ao(sob controle da CPU, uma instruc¸ ˜ao por vez).

(31)

Fundamentos

Um programa em C++ passa por 6 passos

Edic¸ ˜ao(com um programa editor de texto, por exemplo).

Pr ´e-processamento (atrav ´es de diretivas s ˜ao realizadas in-clus ˜oes e substituic¸ ˜oes de textos).

Compilac¸ ˜ao(gerac¸ ˜ao do c ´odigo objeto).

Ligac¸ ˜ao(“linking” com o c ´odigo das rotinas referenciadas em bibliotecas).

Carga(carga do programa e bibliotecas na mem ´oria). Execuc¸ ˜ao(sob controle da CPU, uma instruc¸ ˜ao por vez).

(32)

Fundamentos

Um programa em C++ passa por 6 passos

Edic¸ ˜ao(com um programa editor de texto, por exemplo).

Pr ´e-processamento (atrav ´es de diretivas s ˜ao realizadas in-clus ˜oes e substituic¸ ˜oes de textos).

Compilac¸ ˜ao(gerac¸ ˜ao do c ´odigo objeto).

Ligac¸ ˜ao(“linking” com o c ´odigo das rotinas referenciadas em bibliotecas).

Carga(carga do programa e bibliotecas na mem ´oria).

(33)

Fundamentos

Um programa em C++ passa por 6 passos

Edic¸ ˜ao(com um programa editor de texto, por exemplo).

Pr ´e-processamento (atrav ´es de diretivas s ˜ao realizadas in-clus ˜oes e substituic¸ ˜oes de textos).

Compilac¸ ˜ao(gerac¸ ˜ao do c ´odigo objeto).

Ligac¸ ˜ao(“linking” com o c ´odigo das rotinas referenciadas em bibliotecas).

Carga(carga do programa e bibliotecas na mem ´oria).

(34)

Fundamentos

Um programa em C++ passa por 6 passos

Edic¸ ˜ao(com um programa editor de texto, por exemplo).

Pr ´e-processamento (atrav ´es de diretivas s ˜ao realizadas in-clus ˜oes e substituic¸ ˜oes de textos).

Compilac¸ ˜ao(gerac¸ ˜ao do c ´odigo objeto).

Ligac¸ ˜ao(“linking” com o c ´odigo das rotinas referenciadas em bibliotecas).

Carga(carga do programa e bibliotecas na mem ´oria).

(35)

Fundamentos

Um programa em C++ passa por 6 passos

Edic¸ ˜ao(com um programa editor de texto, por exemplo).

Pr ´e-processamento (atrav ´es de diretivas s ˜ao realizadas in-clus ˜oes e substituic¸ ˜oes de textos).

Compilac¸ ˜ao(gerac¸ ˜ao do c ´odigo objeto).

Ligac¸ ˜ao(“linking” com o c ´odigo das rotinas referenciadas em bibliotecas).

Carga(carga do programa e bibliotecas na mem ´oria).

(36)

M ´odulos do Qt

Os m ´odulos que comp ˜oem, atualmente, o framework Qt s ˜ao:

QtCore, QtGui, QtNetwork, QtOpenGL, QtScript, QtSql, QSvg, QtWebKit, QtXml, QtXmlPatterns, Phonon, Qt3Support, QtTest, QtDBus.

(37)

Ferramentas do Qt

O Qt tamb ´em vem acompanhado de um conjunto de ferramen-tas que auxiliam o processo de desenvolvimento.

Qt Designerpara o projeto de telas. Permite testar o projeto de tela sem programar qualquer linha de c ´odigo.

Qt Linguistpara editar arquivos de traduc¸ ˜oes, tornando uma

aplicac¸ ˜ao com suporte a diferentes l´ınguas.

Qt Assistant ´e um guia de consulta r ´apida e sens´ıvel a

con-texto para a API do Qt.

(38)

Ferramentas do Qt

O Qt tamb ´em vem acompanhado de um conjunto de ferramen-tas que auxiliam o processo de desenvolvimento.

Qt Designerpara o projeto de telas. Permite testar o projeto de tela sem programar qualquer linha de c ´odigo.

Qt Linguistpara editar arquivos de traduc¸ ˜oes, tornando uma aplicac¸ ˜ao com suporte a diferentes l´ınguas.

Qt Assistant ´e um guia de consulta r ´apida e sens´ıvel a

con-texto para a API do Qt.

(39)

Ferramentas do Qt

O Qt tamb ´em vem acompanhado de um conjunto de ferramen-tas que auxiliam o processo de desenvolvimento.

Qt Designerpara o projeto de telas. Permite testar o projeto de tela sem programar qualquer linha de c ´odigo.

Qt Linguistpara editar arquivos de traduc¸ ˜oes, tornando uma aplicac¸ ˜ao com suporte a diferentes l´ınguas.

Qt Assistant ´e um guia de consulta r ´apida e sens´ıvel a con-texto para a API do Qt.

(40)

Ferramentas do Qt

O Qt tamb ´em vem acompanhado de um conjunto de ferramen-tas que auxiliam o processo de desenvolvimento.

Qt Designerpara o projeto de telas. Permite testar o projeto de tela sem programar qualquer linha de c ´odigo.

Qt Linguistpara editar arquivos de traduc¸ ˜oes, tornando uma aplicac¸ ˜ao com suporte a diferentes l´ınguas.

Qt Assistant ´e um guia de consulta r ´apida e sens´ıvel a con-texto para a API do Qt.

(41)

Minha primeira aplicac¸ ˜ao com Qt

hello.cpp

#include <QApplication> #include <QLabel>

int main(int argc, char *argv[]) {

QApplicationapp(argc, argv);

QLabel*label = newQLabel(QString::fromUtf8(”Ol ´a Qt!”)); label->show();

return app.exec(); }

(42)

Minha primeira aplicac¸ ˜ao com Qt

Ap ´os criar um diret ´orio hello, ser ´a inclu´ıdo deste diret ´orio o

arquivo .cpp da minha primeira aplicac¸ ˜ao:hello.cpp

Ao digitar qmake -project, ser ´a criado o arquivo de projeto

hello.pro

qmake hello.pro ir ´a gerar o arquivo Makefile, que orientar ´a a compilac¸ ˜ao do projeto.

Ao digitar make, ser ´a compilado e gerado o execut ´avel da

(43)

Minha primeira aplicac¸ ˜ao com Qt

(44)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones

Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc. Conectando Signals e Slots

Acesso a Bancos de Dados Traduzindo a Aplicac¸ ˜ao

(45)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Roteiro para a Pr ´atica

Neste treinamento, ser ˜ao exercitadas algumas tarefas comuns no desenvolvimento de um sistema informatizado. Para agilizar o

treinamento, ser ˜ao propostasvers ˜oes incrementaisda aplicac¸ ˜ao

exemplo.

Estas vers ˜oes incrementais poder ˜ao ser enxergadas como

pontos de controle. Quando um aluno concluir a principal

ativi-dade de um ponto de controle, ele poder ´a adotar uma vers ˜ao

(46)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Roteiro para a Pr ´atica

Vers ˜oes incrementais da aplicac¸ ˜ao

agenda-telefonica1.zip cont ´em o projeto inicial, sem pro-jeto de tela e apenas um arquivo principal de execuc¸ ˜ao da aplicac¸ ˜ao.

agenda-telefonica2.zipcont ´em o layout inicial da tela princi-pal da aplicac¸ ˜ao.

agenda-telefonica3.zip cont ´em a barra de ferramentas da tela principal da aplicac¸ ˜ao com as ac¸ ˜oes b ´asicas e ´ıcones.

agenda-telefonica4.zip cont ´em o recurso de ativar a aplicac¸ ˜ao na ´area de notificac¸ ˜ao.

(47)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Roteiro para a Pr ´atica

Vers ˜oes incrementais da aplicac¸ ˜ao

agenda-telefonica5.zipinclui c ´odigo para evitar que mais de uma agenda seja carregada na mem ´oria ao mesmo tempo. S ˜ao criadas as primeiras conex ˜oes entre signals e slots.

agenda-telefonica6.zip cont ´em o primeiro c ´odigo para acesso ao banco de dados e apresentac¸ ˜ao dos dados na janela principal.

agenda-telefonica7.zipinclui o projeto das telas de cadastro de departamentos e de telefones, e o armazenamento em banco de dados.

(48)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Roteiro para a Pr ´atica

Vers ˜oes incrementais da aplicac¸ ˜ao

agenda-telefonica8.zip cont ´em a aplicac¸ ˜ao com suas telas traduzidas para o ingl ˆes e tamb ´em o arquivo de traduc¸ ˜ao da aplicac¸ ˜ao para o portugu ˆes.

agenda-telefonica9.zip cont ´em os arquivos necess ´arios da agenda para o instalador da aplicac¸ ˜ao.

agenda-telefonica10.zipinclui o projeto do instalador com a

(49)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Requisitos da Aplicac¸ ˜ao

Requisitos I

Cadapessoacadastrada na agenda dever ´a ser associada a umdepartamentona qual trabalha.

Todo departamento ser ´a identificado por um c ´odigo, uma

siglae umnome. Siglas e nomes dos departamentos ser ˜ao alfanum ´ericos.

O cadastro de cada pessoa e seu telefone de contato poder ´a tamb ´em ser acrescido com a informac¸ ˜ao de um n ´umero de

(50)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Requisitos da Aplicac¸ ˜ao

Requisitos II

Os dados dos cadastros ser ˜ao armazenadoslocalmente, na

m ´aquina onde se executa a agenda.

A janela principal da agenda dever ´a fornecer umabusca

sim-plificada dos telefones pelos crit ´erios: nome (ou parte do nome) da pessoa e o nome do departamento.

Inicialmente, a janela principal mostrar ´a a lista de todos os telefones, ordenados por nome da pessoa.

Dever ´a ser exibido na janela principal tamb ´em umcontador

(51)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Requisitos da Aplicac¸ ˜ao

Requisitos III

Dever ´a existir uma janela debusca avanc¸adaonde poder ˜ao

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 dever ´a ficar

ainda ativa, com um ´ıcone na ´area de notificac¸ ˜ao (System

TrayBar). Nesta situac¸ ˜ao, o usu ´ario poder ´a clicar sobre este ´ıcone e solicitar que a janela seja novamente exibida.

(52)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Requisitos da Aplicac¸ ˜ao

Requisitos IV

O cadastro dos departamentos ser ´a feito em uma janela,

separadamente. Em outra janela, ser ´a feito o cadastro das pessoas e seus telefones.

N ˜ao poder ´a ser cadastrado mais de um n ´umero de telefone por pessoa.

A empresa que utilizar ´a a agenda de telefones e ramais

de-seja executar este programa em m ´aquinas com Linux ou

(53)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(54)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Diagrama ER da Aplicac¸ ˜ao

(55)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Script de criac¸ ˜ao do banco de dados

create tableDEPARTAMENTOS(

CODIGOINTEGER NOT NULL

PRIMARY KEY AUTOINCREMENT,

NOMEVARCHAR(256) NOT NULL UNIQUE,

SIGLAVARCHAR(30) NULL

(56)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Script de criac¸ ˜ao do banco de dados

create tablePESSOAS(

NOMEVARCHAR(80) NOT NULL PRIMARY KEY,

DEP CODIGOINTEGER NOT NULL

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

DDDINTEGER,

TELEFONEINTEGER NOT NULL,

RAMALINTEGER

(57)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc. Conectando Signals e Slots

Acesso a Bancos de Dados Traduzindo a Aplicac¸ ˜ao

(58)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Exerc´ıcio de Criac¸ ˜ao do Projeto

Exerc´ıcio 01

Objetivo: Aprender como criar um projeto de aplicac¸ ˜ao 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 vers ˜ao agenda-telefonica1.zip.

(59)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(60)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(61)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(62)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(63)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(64)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(65)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc.

Conectando Signals e Slots Acesso a Bancos de Dados Traduzindo a Aplicac¸ ˜ao

(66)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Widgets

Widgets (Window Gadgets) s ˜ao componentes que possuem uma

representac¸ ˜ao gr ´afica no projeto de telas. Com oQt Designer, o

desenvolvedor pode criar interfaces gr ´aficas de usu ´ario apenas arrastando e soltando v ´arios widgets sobre a janela que est ´a sendo projetada.

´

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

(67)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

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 necess ´arios para o projeto da janela principal da Agenda.

(68)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(69)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(70)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(71)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Atribuindo textos ao Menu (QMenu)

Ao adicionar itens ao menu principal, automaticamente

ser ˜ao criadasActions que poder ˜ao ser ligadas a m ´etodos

da janela principal. Tamb ´em ´e poss´ıvel definir ´ıcones para as Actions, mas para isso ´e necess ´ario criar um arquivo de recursos.

(72)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(73)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(74)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(75)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(76)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(77)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(78)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(79)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Actions e Barra de Ferramentas

A partir do painel de actions, ´e poss´ıvel arrastar e soltar actions

sobre abarra de ferramentasda janela principal. Com isto, ser ˜ao

automaticamente criados bot ˜oes na barra de ferramentas que

acionar ˜ao as actions ao serem clicados. Os´ıconesdas actions

(80)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

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 b ´asico de widgets na janela principal.

(81)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(82)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(83)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(84)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(85)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(86)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc.

Conectando Signals e Slots

Acesso a Bancos de Dados Traduzindo a Aplicac¸ ˜ao

(87)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

O que s ˜ao signals e slots?

No Qt, umsignal(sinal) ´e emitido quando um evento ocorre.

Exis-tem signals pr ´e-definidos, mas tamb ´em ´e poss´ıvel de definir seus pr ´oprios signals. Um signal pode ser ligado a um m ´etodo. Desta forma, quando o signal for emitido, este m ´etodo ser ´a executado. Nesta ligac¸ ˜ao entre signal e m ´etodo, o m ´etodo ´e oslot.

(88)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(89)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(90)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

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 umQPushButton

execu-tar ´a o m ´etodo clean de umQLineEdit. Testar este

(91)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Signals e Slots no Qt Designer

Num painel (ou janela) do Qt Designer, se pode consultar as conex ˜oes j ´a definidas entre sinais e slots.

(92)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Conectando signal e slot, programaticamente

Exemplo conectando Signal e Slot

void conectarSignals() {

connect(

ui->pushButton 2, SIGNAL(clicked()), lineEdit, SLOT(clear())

); }

(93)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Mais sobre signals

Um signal tamb ´em podem ser conectado a outro signal.

O mecanismo de conex ˜ao entre signals e slots tamb ´em

pode resolver o problema de refer ˆencia c´ıclica. Por exemplo,

a janela principal pode criar uma outra janela e esperar que interac¸ ˜oes nesta segunda janela determinem mudanc¸as na janela principal.

Este comportamento ir ´a aparecer na aplicac¸ ˜ao exemplo aqui tratada. Quando forem criados, modificados ou exclu´ıdos

departamentos, a ComboBox de Departamento da janela

(94)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Mais sobre signals

Trecho do m ´etodo mostrarCadastroDepartamentos()

void Principal::mostrarCadastroDepartamentos() {

Departamentos*dep = newDepartamentos();

connect(

dep, SIGNAL(departamentosAtualizados()),

this, SLOT(atualizarComboDepartamentos())

); }

(95)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc. Conectando Signals e Slots

Acesso a Bancos de Dados

Traduzindo a Aplicac¸ ˜ao

(96)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

M ´odulo QtSql

O m ´odulo QtSql ´e o que fornece as classes e rotinas necess ´arias para estabelecer conex ˜oes a bancos de dados e execuc¸ ˜ao de

operac¸ ˜oes, em diferentes SGBDs: IBM DB2,Interbase/Firebird,

MySQL,Oracle,PostgreSQL,SQLite,Sybase. ´

E poss´ıvel acessar outros bancos com o driverODBC, al ´em de

tamb ´em existirem plugins para acesso a outras bases de dados (xBase, por exemplo).

(97)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Criando uma conex ˜ao a um banco de dados

bool criarConexao() {

QSqlDatabasebd =QSqlDatabase::addDatabase(“QPSQL”); bd.setHostName(“sgbd.empresa.com.br”);

bd.setDatabaseName(“BdFuncionarios”); bd.setUserName(“usuario”);

bd.setPassword(“senha”); if (! bd.open() ) {

QMessageBox::critical(0,tr(”DB Error”), bd.lastError().text()); return false; }

(98)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Realizando uma consulta no banco

QStringListlistaTelefones;

QSqlQueryconsulta;

consulta.exec(“SELECT TELEFONE FROM PESSOAS”); while (consulta.next()) {

QString telefone = consulta.value(0).toString(); listaTelefones.append(telefone);

(99)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Exerc´ıcio com Banco de Dados

Exerc´ıcio 05

Objetivo: Aprender a executar uma conex ˜ao 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 ser ˜ao obtida-dos atrav ´es de consulta que recupera os nomes dos departamentos existentes no banco de dados.

(100)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Exerc´ıcio com Banco de Dados

QStringListPrincipal::getDepartamentos() {

QStringListlista; lista.append(“Todos”);

QSqlQueryquery( “select distinct NOME from DEPARTAMENTOS order by NOME”, bancoDeDados);

while (query.next()) {

lista.append(query.value(0).toString()); }

return lista; }

(101)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Exerc´ıcio com Banco de Dados

void Principal::atualizarComboDepartamentos() {

ui->comboDepartamento->clear();

ui->comboDepartamento->addItems(getDepartamentos());

}

O m ´etodo addItems deQComboBoxrecebe como par ˆametro um

(102)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Atualizando dados em um banco

QSqlQueryoper; oper.prepare(

“insert into DEPART(NOME, SIGLA) values (:NM, :SG)” );

oper.bindValue(“:NM”, “Desenvolvimento e TI”); oper.bindValue(“:SG”, “DTI”);

oper.exec();

QSqlQueryoper2(

(103)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Classes de Modelo Sql

Para quem prefere uma interac¸ ˜ao 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 especializac¸ ˜ao de QSqlTableModel mas com suporte a chaves estrangeiras (relac¸ ˜oes com outras tabelas).

(104)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc. Conectando Signals e Slots

Acesso a Bancos de Dados

Traduzindo a Aplicac¸ ˜ao

(105)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Qt Linguist

A forma mais f ´acil de tornar uma aplicac¸ ˜ao Qt com suporte a outras l´ınguas ´e:

Usar o m ´etodo tr() em todas as QStrings desta aplicac¸ ˜ao.

Este m ´etodo ´e definido emQObject.

Carregar no momento de inicializac¸ ˜ao da aplicac¸ ˜ao um

ar-quivo de traduc¸ ˜ao (.qm), previamente gerado com oQt

(106)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Produzindo um arquivo de traduc¸ ˜ao

Para preparar um arquivo de traduc¸ ˜ao deve-se usar a ferramenta

lupdate, presente no diret ´orio bin do Qt. Esta ferramenta ´e capaz de extrair todos os literais de strings presentes em janelas

criadas com o Qt Designer e tamb ´em encapsuladas por tr()nos

demais arquivos fontes da aplicac¸ ˜ao.

(107)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Produzindo um arquivo de traduc¸ ˜ao

Com a criac¸ ˜ao do arquivo fonte de traduc¸ ˜ao (.ts), basta apenas abr´ı-lo com o Qt Linguist. Na primeira janela de di ´alogo, se de-finem as configurac¸ ˜oes das l´ınguas de origem e destino dos tex-tos capturados.

(108)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Produzindo um arquivo de traduc¸ ˜ao

OQt Linguist ´e capaz de exibir visualmente a janela ou o c ´odigo fonte no qual se est ´a fazendo a traduc¸ ˜ao de uma string. Para cada string, realiza-se a traduc¸ ˜ao em uma sec¸ ˜ao como esta:

(109)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Produzindo um arquivo de traduc¸ ˜ao

Ap ´os concluir todas as traduc¸ ˜oes das strings, utiliza-se a opc¸ ˜ao

de menu File->Release do Qt Linguist. Com isto, ser ´a gerado

um arquivo de compilac¸ ˜ao (.qm) do projeto de traduc¸ ˜ao. Para

carregar este arquivo no momento de in´ıcio da aplicac¸ ˜ao, pode-se utilizar o pode-seguinte c ´odigo nomain.cpp:

QApplicationa(argc, argv);

QTranslatortradutor;

tradutor.load(“agenda-telefonica.qm”,

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

(110)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Agenda

1 Parte Te ´orica

Por que C++ e Qt?

O que preciso para comec¸ar?

2 Pr ´atica - Construc¸ ˜ao de uma Agenda de Telefones Roteiro para a Pr ´atica

Criando o projeto com o Qt Creator

Trabalhando com Widgets, Layouts, Actions Etc. Conectando Signals e Slots

Acesso a Bancos de Dados Traduzindo a Aplicac¸ ˜ao

(111)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Implantando uma aplicac¸ ˜ao Qt

Uma aplicac¸ ˜ao Qt (com compilac¸ ˜ao din ˆamica) usualmente ne-cessitar ´a da seguinte estrutura:

Arquivo execut ´avel da aplicac¸ ˜ao.

Arquivos .qm: arquivos de traduc¸ ˜ao.

Arquivos de bibliotecas do Qt: no linux, por exemplo,

ar-quivos libQtCore.so, libQtSql.so, libQtGui.so (caso n ˜ao se

deseje utilizar as bibliotecas fornecidas na distribuic¸ ˜ao linux).

Diret ´orio sqldrivers: com os plugins do Qt de drivers para conex ˜ao a bancos de dados.

Arquivo .sh: shell script que poder ´a configurarvari ´aveis de ambiente tempor ´ariase executar oarquivo execut ´avel.

(112)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Implantando uma aplicac¸ ˜ao Qt

No caso da aplicac¸ ˜ao exemplo, Agenda de Telefones:

Arquivo execut ´avel: agenda-telefonica

Arquivos .qm: agenda-telefonica.qm

Arquivos de bibliotecas do Qt: libQtCore.so.4, libQtSql.so.4, libQtGui.so.4, libQtNetwork.so.4

Diret ´orio sqldrivers: com o pluginlibqsqlite.so Arquivo .sh: agenda-telefonica.sh

(113)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Implantando uma aplicac¸ ˜ao Qt

Existem v ´arias formas poss´ıveis de construir um pacote de implantac¸ ˜ao de uma aplicac¸ ˜ao Qt. Algumas delas s ˜ao:

Pacotes .rpm, .deb, .tgz: a criac¸ ˜ao de pacotes espec´ıficos de distribuic¸ ˜oes linux ´e uma das formas mais comuns e tende a transmitir um “qu ˆe” de formalidade no mundo linux.

Pacotes de c ´odigo fonte: tamb ´em s ˜ao muito utilizados, mas exigem um maior conhecimento dos usu ´arios no momento de compilar e decidir onde implantar o software.

Instaladores execut ´aveis: tende a ser a opc¸ ˜ao mais simples para usu ´arios e agrada bastante a quem j ´a est ´a acostumado com instaladores no Windows.

(114)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Implantando uma aplicac¸ ˜ao Qt

Aqui ser ´a tratada a implantac¸ ˜ao a partir de instaladores

exe-cut ´aveis, mais precisamente criados com oinstallJammer. Como um dos aspectos importantes em desenvolver com

Qt ´e a capacidade de desenvolver sistemas

multiplatafor-mas, ´e interessante utilizar uma ferramenta de instalac¸ ˜ao

(115)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(116)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(117)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(118)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(119)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(120)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(121)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(122)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

(123)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Criando o instalador

Ap ´os passar pelas telas do assistente de criac¸ ˜ao de projeto do

InstallJammer, ser ´a exibida a tela com a ´arvore de configurac¸ ˜oes do projeto. Para configurar os ´ıcones da aplicac¸ ˜ao, configure: EmAction Groups→InstallActions :

ProgramShortcut →IconPath:

<%InstallDir%>agenda-telefonica.png

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

(124)

Traduzindo a Aplicac¸ ˜ao

Construindo o instalador da Aplicac¸ ˜ao

Criando o instalador

EmAction Groups→FinishActions :

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

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

(125)

Resumo do que foi visto

Introduc¸ ˜ao ao Qt.

Como iniciar um projeto de aplicac¸ ˜ao C++ com Qt. Como realizar o projeto de telas com Qt Designer.

Como criar mecanismos de controle atrav ´es de signals e slots. Como trabalhar com banco de dados em uma aplicac¸ ˜ao Qt. Como traduzir uma aplicac¸ ˜ao Qt para outra l´ıngua.

(126)

Resumo do que foi visto

Introduc¸ ˜ao ao Qt.

Como iniciar um projeto de aplicac¸ ˜ao C++ com Qt.

Como realizar o projeto de telas com Qt Designer.

Como criar mecanismos de controle atrav ´es de signals e slots. Como trabalhar com banco de dados em uma aplicac¸ ˜ao Qt. Como traduzir uma aplicac¸ ˜ao Qt para outra l´ıngua.

(127)

Resumo do que foi visto

Introduc¸ ˜ao ao Qt.

Como iniciar um projeto de aplicac¸ ˜ao C++ com Qt. Como realizar o projeto de telas com Qt Designer.

Como criar mecanismos de controle atrav ´es de signals e slots. Como trabalhar com banco de dados em uma aplicac¸ ˜ao Qt. Como traduzir uma aplicac¸ ˜ao Qt para outra l´ıngua.

(128)

Resumo do que foi visto

Introduc¸ ˜ao ao Qt.

Como iniciar um projeto de aplicac¸ ˜ao C++ com Qt. Como realizar o projeto de telas com Qt Designer.

Como criar mecanismos de controle atrav ´es de signals e slots.

Como trabalhar com banco de dados em uma aplicac¸ ˜ao Qt. Como traduzir uma aplicac¸ ˜ao Qt para outra l´ıngua.

(129)

Resumo do que foi visto

Introduc¸ ˜ao ao Qt.

Como iniciar um projeto de aplicac¸ ˜ao C++ com Qt. Como realizar o projeto de telas com Qt Designer.

Como criar mecanismos de controle atrav ´es de signals e slots. Como trabalhar com banco de dados em uma aplicac¸ ˜ao Qt.

Como traduzir uma aplicac¸ ˜ao Qt para outra l´ıngua. Como produzir o instalador da aplicac¸ ˜ao.

(130)

Resumo do que foi visto

Introduc¸ ˜ao ao Qt.

Como iniciar um projeto de aplicac¸ ˜ao C++ com Qt. Como realizar o projeto de telas com Qt Designer.

Como criar mecanismos de controle atrav ´es de signals e slots. Como trabalhar com banco de dados em uma aplicac¸ ˜ao Qt. Como traduzir uma aplicac¸ ˜ao Qt para outra l´ıngua.

(131)

Resumo do que foi visto

Introduc¸ ˜ao ao Qt.

Como iniciar um projeto de aplicac¸ ˜ao C++ com Qt. Como realizar o projeto de telas com Qt Designer.

Como criar mecanismos de controle atrav ´es de signals e slots. Como trabalhar com banco de dados em uma aplicac¸ ˜ao Qt. Como traduzir uma aplicac¸ ˜ao Qt para outra l´ıngua.

(132)

Resumo do que foi visto

Introduc¸ ˜ao ao Qt.

Como iniciar um projeto de aplicac¸ ˜ao C++ com Qt. Como realizar o projeto de telas com Qt Designer.

Como criar mecanismos de controle atrav ´es de signals e slots. Como trabalhar com banco de dados em uma aplicac¸ ˜ao Qt. Como traduzir uma aplicac¸ ˜ao Qt para outra l´ıngua.

(133)

Refer ˆencias

J. Blanchette and M. Summerfield.

C++ GUI Programming with Qt 4.

Prentice Hall, 2008. Documentac¸ ˜ao do Qt 4.5 http://qt.nokia.com/doc/4.5/index.html P ´agina do InstallJammer http://www.installjammer.com IDE Kevora http://kevora.sourceforge.net

Referências

Documentos relacionados

O primeiro passo para introduzir o MTT como procedimento para mudança do comportamento alimentar consiste no profissional psicoeducar o paciente a todo o processo,

Podem treinar tropas (fornecidas pelo cliente) ou levá-las para combate. Geralmente, organizam-se de forma ad-hoc, que respondem a solicitações de Estados; 2)

O objetivo deste trabalho foi avaliar épocas de colheita na produção de biomassa e no rendimento de óleo essencial de Piper aduncum L.. em Manaus

GRUPO e contribuem mensalmente para um FUNDO COMUM, em um determinado prazo e com quantia determinada em percentual do preço do VEÍCULO OBJETO DO PLANO DE

Os interessados em adquirir quaisquer dos animais inscritos nos páreos de claiming deverão comparecer à sala da Diretoria Geral de Turfe, localizada no 4º andar da Arquibancada

Para esse fim, analisou, além do EVTEA, os Termos de Referência (TR) do EVTEA e do EIA da Ferrogrão, o manual para elaboração de EVTEA da empresa pública Valec –

Requiring a realignment of the EVTEA with its ToR, fine-tuning it to include the most relevant socio-environmental components and robust methodologies for assessing Ferrogrão’s impact

• The definition of the concept of the project’s area of indirect influence should consider the area affected by changes in economic, social and environmental dynamics induced