Básico, Ferramentas e o Primeiro Programa em Qt



Documentos relacionados
Principais classes e conceitos básicos de Qt. Danilo Freire de Souza Santos

Linguagens de Programação

Orientação a Objetos Programação em C++

MANUAL DE UTILIZAÇÃO DO PLUGIN GERADOR DE PLUGINS DO TERRAVIEW

Programação de Computadores I. Conhecendo a IDE Code::Blocks

Universidade Federal do Pará Centro de Tecnologia da Informação e Comunicação Grupo de Trabalho SET. Tutorial PyQT4

Plugins TerraView. Última revisão: 12/12/32006 Versão TerraLib: 3.1.4

Algoritmos e Programação Estruturada

02 - Usando o SiteMaster - Informações importantes

O Primeiro Programa em Visual Studio.net

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

Plugins TerraView. Versão TerraLib/TerraView: 3.2.0RC2. Código fonte completo da TerraLib na estrutura de diretórios sugerida no site da TerraLib 1.

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

Veja abaixo um exemplo de como os dados são mostrados quando usamos o

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Componentes da linguagem C++

Microsoft Access XP Módulo Um

Manual do Usuário. Tag List. Tag List Generator. smar FIRST IN FIELDBUS JUL / 02. Tag-List VERSÃO 1.0 TAGLSTC3MP

Orientação a Objetos

Trabalho 3: Agenda de Tarefas

Banco de Dados BrOffice Base

Introdução a Java. Hélder Nunes

Guião de Introdução ao Eclipse IDE Índice

Aula 09 - Atualização de uma tabela dinâmica. Aula 09 - Atualização de uma tabela dinâmica. Sumário. Atualizando a tabela dinâmica

Site do Advogado Manual

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Microsoft Office PowerPoint 2007

Lidar com números e estatísticas não é fácil. Reunir esses números numa apresentação pode ser ainda mais complicado.

Curso de Aprendizado Industrial Desenvolvedor WEB

Word 1 - Introdução Principais recursos do word A janela de documento Tela principal

Persistência de Dados

NetBeans. Conhecendo um pouco da IDE

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Computação II Orientação a Objetos

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

Introdução ao Android

ALBUM DE FOTOGRAFIAS NO POWER POINT

Programando em PHP. Conceitos Básicos

Para o PowerPoint, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

CURSO DE INFORMÁTICA BÁSICA AULA 2 O AMBIENTE WINDOWS

CURSO DE PROGRAMAÇÃO EM JAVA

Utilização do Webmail da UFS

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Usando o simulador MIPS

Capítulo 04: Persistência com SQLite

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Objetivos: Entender o funcionamento dos programas Java via linha de comando

Microsoft PowerPoint 2003

Versão PIMACO AUTOADESIVOS LTDA. Assistente Pimaco Ajuda ao Usuário

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Aula 5 Microsoft PowerPoint 2003: Criando uma Apresentação

Disciplina: INF Programação I. 1 a aula prática Introdução ao ambiente do Microsoft Visual Studio 2010

OpenCV.

Programação de Computadores - I. Profª Beatriz Profº Israel

Linguagens de Programação. Parte V. História do Qt. Primeiro Exemplo. Primeiras Classes. Primeiro Exemplo. Prof. Miguel Elias Mitre Campista

Programa ConsoleRPN. PUC-Rio CIV Sistemas Gráficos para Engenharia Luiz Fernando Martha & André Maués Brabo Pereira

Professor Paulo Lorini Najar

Cobrança Bancária. Contas / Manutenção.

Noções de. Microsoft SQL Server. Microsoft SQL Server

Manual do Painel Administrativo

Nota de Aula: Utilização da IDE Code::Blocks

GUIA INTEGRA SERVICES E STATUS MONITOR

QualiQuantiSoft Versão 1.3c

Criação e execução a partir do Dev-C... 1 Erros de compilação... 4 Executar programa no DOS... 4 Ajustando o programa para executar no DOS...

Manual do Contribuidor. Portal de Internet. Projeto: Novo Portal de internet

INTRODUÇÃO À PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. ADS 6º Período

Manipulação de Arquivos

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Sistemas Operacionais

O Microsoft Office é composto por diversos softwares, dentre eles o Word, o Excel, o Access e o Power Point.

Google Drive. Passos. Configurando o Google Drive

Manual de utilização do sistema OTRS (Atendimento) Cliente Externo

Como funciona? SUMÁRIO

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Manual do Atendente. Treinamento OTRS Help Desk

Interfaces Gráficas parte 3

SIMULADO Windows 7 Parte V

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Técnicas de Programação II

A. Tutorial para criação de Relatório Personalizado. Considerações Iniciais: Antes de iniciar o passo a passo, é preciso definir:

Boletim Técnico. Empresa. Vagas. Central de Estágio. Desenvolvimento/Procedimento. Acesse Atividades Acadêmicas Estágio Empresa

Tela Inicial: O Banco de Dados e seus objetos:

Banco de Dados. Microsoft Access

Portal Sindical. Manual Operacional Empresas/Escritórios

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

Rendering 2D com OpenGL e interface gráfica em Qt

Programação online em Java

Somador e subtrator de 8 bits

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Ambiente Online de Programação em C.

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS COTAS DE DISCO. Professor Carlos Muniz

Roteiro 2: (Planilhas Eletrônicas) - Função procv / manipulação de formulários

Introdução ao Tableau Server 7.0

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).

SCIM 1.0. Guia Rápido. Instalando, Parametrizando e Utilizando o Sistema de Controle Interno Municipal. Introdução

Introdução. Servidor de Tempo (SNTP) com opção de horário de verão automático; 1 Cadastro do novo modelo de equipamento Urano Topmax SS

Transcrição:

Conteúdo 1 Básico, Ferramentas e o Primeiro Programa em Qt 3 1.1 Primeiro Programa.......................... 3 1.1.1 Compilando o programa................... 4 1.2 Layouts................................ 5 1.3 Signals e Slots............................. 6 1.3.1 Sinais emitindo valores.................... 6 2 Recursos básicos de C++ 9 2.1 Tipos de dados............................ 9 2.1.1 Tamanhos........................... 10 2.2 Declarações.............................. 10 2.2.1 A estrutura de uma declaração............... 10 2.2.2 Declarando nomes múltiplos................. 10 2.2.3 Escopo............................. 10 2.2.4 Typedef............................ 10 1

2 CONTEÚDO

Capítulo 1 Básico, Ferramentas e o Primeiro Programa em Qt 1.1 Primeiro Programa Seguindo o exemplo de muitos livros e tutoriais de programação, vamos criar o tradicional programa Hello, World!. Esta é uma aplicação mínima usando Qt e simplesmente abre uma janela exibindo a frase Hello, World!. 1 #include <QApplication> 2 #include <QLabel> 3 4 int main ( int argc, char argv ) 5 { 6 QApplication app ( argc, argv ) ; 7 8 QLabel l a b e l ( " Hello, World! " ) ; 9 l a b e l. show ( ) ; 10 11 return app. exec ( ) ; 12 } Listing 1.1: helloworld/main.cpp A Listagem 1.1 apresenta o código-fonte do exemplo citado, podendo-se destacar alguns pontos. As linhas 1 e 2 incluem os arquivos de cabeçalho (headers) que contém as classes que serão usadas no decorrer do código. Neste caso, estes arquivos contém a descrição das classes QApplication e QLabel. No Qt 4 cada classe está contida em um arquivo de cabeçalho, sendo o mesmo nomeado sem a extensão.h (comum em C e C++). Os arquivos que contém a classe possuem o mesmo nome da classe em questão. A linha 4 apresenta a função main(). Nela estão contidas as rotinas que serão executadas no início da execução do programa. Neste caso, primeiramente (linha 6) é criado um objeto do tipo QApplication que é responsável pelo controle de 3

4CAPÍTULO 1. BÁSICO, FERRAMENTAS E O PRIMEIRO PROGRAMA EM QT aplicativos grácos (GUI). Este objeto, entre outras coisas, é responsável pelo loop do programa. Nas linhas 8 e 9 pode-se observar, respectivamente, a criação de um label com o texto Hello, World! e a exibição do mesmo. A Figura 1.1 ilustra o resultado do programa. Figura 1.1: Primeiro programa em Qt. Finalmente, na linha 11, a chamada ao método exec() faz com que o programa entre em um laço, recebendo e gerando eventos para os objetos apropriados. Este laço é terminado quando o método quit() do objeto QApplication é chamado. Neste exemplo, isto acontece indiretamente quando a última janela do aplicativo (neste caso a janela que contém o label) é fechada. Assim que fechada, a mesma é deletada da memória. 1.1.1 Compilando o programa Qt é suportado por muitas plataformas e torna-se evidente o problema de portabilidade de aplicativos entre sistemas operacionais. Para resolver este problema foi criada uma ferramenta: o qmake. O qmake gera um Makele a partir de um arquivo que descreve as propriedades do projeto. Sendo este arquivo independente de plataforma, o mesmo projeto pode ser compilado para outro sistema operacional sem nenhum ônus. Este arquivo contém toda informação necessária para compilar o programa em qualquer plataforma suportada. Para gerar o arquivo de projeto do programa Hello, World!, é necessário executar o programa qmake com a opção -project na pasta em que se encontra o projeto. Será gerado um arquivo como o apresentado na Listagem 1.2. Listing 1.2: helloworld/helloworld.pro 1 ###################################################################### 2 # Automatically generated by qmake ( 2. 0 1 a ) t e r ago 10 0 9 : 5 8 : 2 6 2010 3 ###################################################################### 4 5 TEMPLATE = app 6 TARGET = 7 DEPENDPATH +=. 8 INCLUDEPATH +=. 9 10 # Input 11 SOURCES += main. cpp Após a criação do arquivo de projeto, executando novamente o programa qmake, o Makele será gerado. Para compilar o programa basta executar o comando make na linha de comando. Será gerado um arquivo executável com o nome de helloworld.

1.2. LAYOUTS 5 1.2 Layouts Layouts permitem que componentes sejam arranjados ordenadamente na aplicação. Para isso, podemos usar o sistema de layouts do Qt, que arranja os componentes de forma automática assim como forem inseridos nas janelas. A Figura 1.2 ilustra dois labels dispostos dentro de um contêiner vertical. Em complemento ao exemplo anterior (Listagem 1.1), foi adicionado o objeto QVBoxLayout, responsável pela organização dos componentes de forma vertical o V indica vertical. Também foi criado um widget que representará a janela em que serão inseridos o widget e os labels. A Listagem 1.3 ilustra a criação de uma janela com dois labels dispostos de forma vertical. Na linha 11 é criado um objeto do tipo QVBoxLayout que representa um layout do tipo vertical. O construtor do objeto recebe por parâmetro a qual widget o mesmo irá estar associado (neste caso o objeto criado na linha 9). Nas linhas 12 e 13 são criados dois objetos do tipo QLabel que, posteriormente, nas linhas 15 e 16 são inseridos no layout principal. A linha 18 exibe o resultado. Listing 1.3: layout/main.cpp 1 #include <QApplication> 2 #include <QVBoxLayout> 3 #include <QLabel> 4 5 int main ( int argc, char argv ) 6 { 7 QApplication app ( argc, argv ) ; 8 9 QWidget window ; 10 11 QVBoxLayout mainlayout = new QVBoxLayout(&window ) ; 12 QLabel l a b e l 1 = new QLabel ( " Label 1" ) ; 13 QLabel l a b e l 2 = new QLabel ( " Label 2" ) ; 14 15 mainlayout >addwidget ( l a b e l 1 ) ; 16 mainlayout >addwidget ( l a b e l 2 ) ; 17 18 window. show ( ) ; 19 20 return app. exec ( ) ; 21 } Figura 1.2: Um widget com layout vertical.

6CAPÍTULO 1. BÁSICO, FERRAMENTAS E O PRIMEIRO PROGRAMA EM QT 1.3 Signals e Slots Signals e slots permitem que objetos se comuniquem de uma forma fácil e amigável, tornando a programação de interfaces simples e direta. Para ilustrar o seu uso, a Listagem 1.4 apresenta a criação de uma janela contendo um botão que ao ser pressionado fecha a aplicação. Na Figura 1.3 é ilustrada a tela da aplicação. Listing 1.4: signalslot/main.cpp 1 #include <QApplication> 2 #include <QPushButton> 3 4 int main ( int argc, char argv ) 5 { 6 QApplication app ( argc, argv ) ; 7 8 QPushButton button ( " S a i r " ) ; 9 button. show ( ) ; 10 11 QObject : : connect (&button, SIGNAL( c l i c k e d ( ) ), &app, SLOT( q u i t ( ) ) ) ; 12 13 return app. exec ( ) ; 14 } Pode-se destacar a criação de um objeto do tipo QPushButton, na linha 8, para representar um botão. A linha 9 ativa sua visualização. Também é importante salientar, na linha 11, a chamada ao método estático connect do objeto QObject. Este é responsável pela conexão de um sinal de um objeto (neste caso a função click() do objeto botão, que representa o pressionamento do mesmo) a alguma função de destino (neste caso a função quit(), responsável pelo fechamento da aplicação). Figura 1.3: Exemplo usando signals e slots. 1.3.1 Sinais emitindo valores Na Listagem 1.5 pode-se observar um exemplo um pouco mais elaborado no uso de signals e slots. Neste exemplo, quando o usuário interage com os objetos QSpinBox ou QSlider, são gerados sinais que levam a informação sobre qual o valor atual contido nos mesmos. Nas linhas 22 a 25 verica-se a conexão dos sinais dos objetos passíveis a mudanças (QSpinBox e QSlider) aos receptores dos objetos interessados em receber tal informação (QLabel, QSpinBox e QSlider). A Figura 1.3.1 apresenta o resultado nal da aplicação.

1.3. SIGNALS E SLOTS 7 Listing 1.5: signalslot2/main.cpp 1 #include <QApplication> 2 #include <QVBoxLayout> 3 #include <QLabel> 4 #include <QSpinBox> 5 #include <QSlider> 6 7 int main ( int argc, char argv ) 8 { 9 QApplication app ( argc, argv ) ; 10 11 QWidget window ; 12 13 QVBoxLayout mainlayout = new QVBoxLayout(&window ) ; 14 QLabel l a b e l = new QLabel ( "0" ) ; 15 QSpinBox spinbox = new QSpinBox ; 16 QSlider s l i d e r = new QSlider (Qt : : H o r i z o n t a l ) ; 17 18 mainlayout >addwidget ( l a b e l ) ; 19 mainlayout >addwidget ( spinbox ) ; 20 mainlayout >addwidget ( s l i d e r ) ; 21 22 QObject : : connect ( spinbox, SIGNAL( valuechanged ( int ) ), l a b e l, SLOT( setnum ( int ) ) ) ; 23 QObject : : connect ( spinbox, SIGNAL( valuechanged ( int ) ), s l i d e r, SLOT( setvalue ( int ) ) ) ; 24 QObject : : connect ( s l i d e r, SIGNAL( valuechanged ( int ) ), l a b e l, SLOT( setnum ( int ) ) ) ; 25 QObject : : connect ( s l i d e r, SIGNAL( valuechanged ( int ) ), spinbox, SLOT( setvalue ( int ) ) ) ; 26 27 window. show ( ) ; 28 29 return app. exec ( ) ; 30 } Figura 1.4: Exemplo melhorado usando signals e slots. Os três elementos exibem o mesmo valor.

8CAPÍTULO 1. BÁSICO, FERRAMENTAS E O PRIMEIRO PROGRAMA EM QT

Capítulo 2 Recursos básicos de C++ Esta parte descreve os tipos primitivos e os recursos básicos de C++ para a construção de programas com tais tipo. O subconjunto C de C++ é apresentado junto com o suporte adicional oferecido por C++ para os estilos de programação tradicionais. Ela também discute os recursos básicos para compor um programa C++ a partir de partes lógicas físicas. 2.1 Tipos de dados C++ tem um conjunto de tipos básicos que correspondem às unidades de armazenamento básicas mais comuns de um computador e às maneiras mais comuns de utilizá-las para armazenar dados: 1. Tipo lógico (bool) 2. Tipos de caracteres (char) 3. Tipos inteiros (int) 4. Tipos de ponto utuante (double) Além disso, o usuário pode denir tipos de enumeração para representar conjuntos de valores especícos (enum). Também existe em C++ (como em C) um tipo void, usado para indicar ausência de informação. A partir desses tipos básicos, podemos construir outros tipos, como: 1. Tipos ponteiros (int*) 2. Tipos de arrays (char[]) 3. Tipos de referência (como double&) 4. Estruturas de dados e classes 9

10 CAPÍTULO 2. RECURSOS BÁSICOS DE C++ 2.1.1 Tamanhos 2.2 Declarações 2.2.1 A estrutura de uma declaração 2.2.2 Declarando nomes múltiplos 2.2.3 Escopo 2.2.4 Typedef

Índice bool, 9 char, 9 char[], 9 double, 9 double&, 9 int, 9 int*, 9 QApplication, 3, 4 QLabel, 3, 6 qmake, 4 QObject, 6 QPushButton, 6 QSlider, 6 QSpinBox, 6 QVBoxLayout, 5 Signals e slots, 6 void, 9 widget, 5 11