Linguagem de Programação I



Documentos relacionados
Um Framework LGPL Multiplataforma. Wagner Reck

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

Computação II Orientação a Objetos

Básico, Ferramentas e o Primeiro Programa em Qt

FBV - Linguagem de Programação II. Um pouco sobre Java

Case de uso: Desenvolvimento de um Infotainment System com Qt WebEngine e Yocto. Luis Gustavo S. Barreto

Guia de Início Rápido

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

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2005/ Valores

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

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

Antonio Marcio A. Menezes. Outubro de 2009

O Primeiro Programa em Visual Studio.net

Prof. Jhonatan Fernando

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Templates e Pilhas. 1. Introdução

Fundamentos de Programação II. Introdução à linguagem de programação C++

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

Pilhas. Profa Morganna Diniz

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

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

DESENVOLVIMENTO DE SOFTWARE II. Aula 07 A linguagem de programação C# e sua sintaxe

Conceito de classe em C++

Como se tornar um desenvolvedor de plug-ins para AutoCAD e Revit

Calligra. Uma Introdução Geral. Raphael Langerhorst Jost Schenck Tradução: Marcus Gama

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

Manual do Blogilo. Mehrdad Momeny Tradução: Marcus Gama

Dominando Action Script 3

Integração com Joomla

CONVENÇÃO DE CÓDIGO JAVA

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

Desenvolvendo Widgets QML para o KDE Plasma

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Ambientes Visuais. Ambientes Visuais

Cenário atual de uso e das ferramentas de software livre em Geoprocessamento

Introdução ao Tableau Server 7.0

Orientação a Objetos com Java

Repeater no GASweb. Regiões

Tipos de Dados, Tipos Abstratos de Dados Estruturas de Dados

Laboratório de Programação I

JavaScript 2.0X X

Arquivos de Textos no C - Básico

Introdução ao Veridis Biometrics SDK VERIDIS

Lógica de Programação

Técnicas de Programação II

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

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Introdução a Computação

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Java. Marcio de Carvalho Victorino

Framework.NET, Microsoft Visual C# 2010 Express e Elementos da Linguagem C#

Este tutorial está publicado originalmente em

Adobe Flex. Cainã Fuck dos Santos Thiago Vieira Puluceno Jonathan Kuntz Fornari Gustavo Nascimento Costa

Técnicas de Programação II

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

NetBeans. Conhecendo um pouco da IDE

INFORMÁTICA APLICADA AULA 02 LINGUAGEM DE PROGRAMAÇÃO C++

Parte I. Demoiselle Mail

Oficina de ferramentas de Gerência para Redes em Linux. Prof. Jefferson Santiago

MC-102 Aula 01. Instituto de Computação Unicamp

Software Livre e GIS: Quais são as alternativas?

POO Programação Orientada a Objetos. Classes em Java

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

DESENVOLVENDO SOLUÇÕES COM VISUAL FOXPRO 8 E 9

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Programação Orientada a Objetos em Java

ez Flow Guia do Usuário versão 1.0 experts em Gestão de Conteúdo

GraphicsLib Biblioteca Gráfica 2D. Documentação

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

TDC desenvolvimento. para iphone. Helder da Rocha

Programação com Acesso a BD. Programação com OO Acesso em Java

EndNote Web. Quick Reference Card THOMSON SCIENTIFIC

Introdução a Programação de Jogos

Ferramentas de Administração. PostgreSQL

Análise de Programação

Minicurso introdutório de desenvolvimento para dispositivos Android. Cristiano Costa

Programação científica C++

AULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme

VisTrails. Fernando Seabra Chirigati Aluno de Engenharia de Computação e Informação COPPE/UFRJ fernando_seabra@cos.ufrj.br

Figura 01 Kernel de um Sistema Operacional

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos

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

Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha

CURSO DE PROGRAMAÇÃO EM JAVA

Linguagem de Programação III

Início Rápido Desktop Release 1 Xojo, Inc.

Programação de Interfaces Gráficas. Aula 1. Carlos Eduardo de Carvalho Dantas

Programação Web com PHP. Prof. Wylliams Barbosa Santos Optativa IV Projetos de Sistemas Web

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

O programa abaixo exemplifica o uso da classe Image para carregar e mostrar uma imagem localizada em um arquivo.

Transcrição:

Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br

Introdução ao Qt O ambiente Qt Creator QML API C++ Interfaces gráficas usando Qt 2

É um framework para aplicações multiplataforma em C++ É baseado no C++ padrão mas pode ser utilizado com diversas outras linguagens. Suporta aplicações com e sem interface gráfica. Desenvolvido inicialmente pela TrollTech, foi mantido como projeto OpenSource pela Nokia e atualmente pertence a Digia É suportado pelas principais plataformas móveis e de desktop Permite escrever um único código para múltiplas plataformas. Qt 5 Qt 3

Possui suporte a internacionalização de Aplicações. É distribuido nas licenças LGPL v2.1, GPL e Comercial (Qt Comercial) Suporta recursos gráficos avançados Permite a mistura de código nativo com código web Possui uma IDE com suporte a recursos avançados. Qt Creator 3.1 Qt 4

5

Utiliza o conceito de sinal-slot, modelo MVC, graphics view/scene/item. Possui ampla documentação. Uma comunidade ativa e participativa Vários projetos usam Skype, Maya, Google Earth, KDE, Spotify (Linux), Virtualbox, VLC... Versão corrente: Qt 5 Qt 6

Qt 7

Qt 8

Qt 9

QtQuick (Qt User Interface Creation Kit) é uma interface de alto nível para criação simplificada de interfaces. É composto por: QML: Uma linguagem declarativa Qt Creator API em C++ para integração com o Qt Qt Interface 10

QML é uma linguagem declarativa para elementos de interface gráfica. Descreve a interface gráfica Como os elementos são Como eles se comportam A interface final é uma árvore de elementos com propriedades (semelhante ao HTML) Qt - QML 11

Qt - QML 12

Para usar um módulo, primeiro precisamos importá-lo. Especifica o nome do módulo e a versão desejada import QtQuick 1.1 // Define um quadrado azul claro Rectangle { width: 400; height: 400 color: "lightblue" } Qt - QML 13

Vários elementos estão disponível para uso. São estruturas na linguagem Representam partes visíveis e não visíveis. Item é o elemento mais básico Não é visível por si só Tem uma posição e dimensões É usado para agrupar elementos visuais Geralmente é o elemento de maior nível Outros elementos: Text, TextInput, Page, Circle, Row, Column... Qt - QML 14

QML também define elementos sem representação visual Estados, transições. Gradientes, timers. Cada elemento possui propriedades Propriedades customizadas podem podem ser criadas Consultar documentação sobre as propriedades de cada tipo de elemento. Qt - QML 15

O Qt Creator IDE possui: Editor visual para criar e editar componentes QML Construtor de GUI (Interface Gráfica com o Usuário) Ferramentas de projeto e build de aplicações Sistema de ajuda integrado e sensível ao contexto Debugger visual Ferramentas para navegação rápida no código Qt Creator 16

Editor de código com suporte a C++, QML e ECMAscript Ferramentas de navegação rápida pelo código Realçamento de sintaxe e auto-complemento de código Checagem estática de código e dicas de estilo enquanto você digita Suporte a refatoração de código Ajuda sensível a contexto Dobramento de código Correspondência de parênteses e modo de seleção de parênteses Qt Creator 17

O depurador visual para C++ conhece a estrutura de muitas classes Qt, aumentando sua habilidade de exibir os dados do Qt claramente. Addicionalmente, o Qt Creator exibe os dados brutos do GDB de modo limpo e conciso. Interrompa a execução do programa. Ande através do programa linha por linha ou instrução por instrução. Defina pontos de parada. Examine o conteúdo da pilha de chamada, observadores e variáveis locais e globais. Qt Creator 18

Qt Creator 19

Qt Creator 20

Qt Creator 21

O Qt Quick suporta interação com C++ QtDeclarative é a API que permite interagir e gerenciar componentes A interação ocorre através de objetos expostos ao ambiente QML como novos tipos Elementos não visuais são subclasses do tipo QObject. Tipos visuais (items) são subclasses do tipo QDeclarativeItem QdeclarativeItem é o equivalente ao Item do QML A interação entre QML e C++ ocorre através de: Propriedades Sinais e Slots (métodos que não retornam valores) Métodos (definidos com a macro Q_INVOKABLE) Qt API C++ 22

Aplicação Exemplo 23

class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); protected: void closeevent(qcloseevent *event); private: QPlainTextEdit *textedit; QString curfile; QMenu *filemenu; QMenu *editmenu; QMenu *helpmenu; QToolBar *filetoolbar; QToolBar *edittoolbar; QAction *newact; QAction *openact; QAction *saveact; QAction *saveasact; QAction *exitact; QAction *cutact; QAction *copyact; QAction *pasteact; QAction *aboutact; QAction *aboutqtact; }; 24

private slots: void newfile(); void open(); bool save(); bool saveas(); void about(); void documentwasmodified(); void createactions(); void createmenus(); void createtoolbars(); void createstatusbar(); void readsettings(); void writesettings(); bool maybesave(); void loadfile(const QString &filename); bool savefile(const QString &filename); void setcurrentfile(const QString &filename); QString strippedname(const QString &fullfilename); 25

MainWindow::MainWindow() { textedit = new QPlainTextEdit; setcentralwidget(textedit); createactions(); createmenus(); createtoolbars(); createstatusbar(); readsettings(); connect(textedit->document(), SIGNAL(contentsChanged()), this, SLOT(documentWasModified())); setcurrentfile(""); setunifiedtitleandtoolbaronmac(true); } 26

void MainWindow::about() { QMessageBox::about(this, tr("about Application"), tr("the <b>application</b> example demonstrates how to " "write modern GUI applications using Qt, with a menu bar, " "toolbars, and a status bar.")); } 27

bool MainWindow::maybeSave() { if (textedit->document()->ismodified()) { QMessageBox::StandardButton ret; ret = QMessageBox::warning(this, tr("application"), tr("the document has been modified.\n" "Do you want to save your changes?"), QMessageBox::Save QMessageBox::Discard QMessageBox::Cancel); if (ret == QMessageBox::Save) return save(); else if (ret == QMessageBox::Cancel) return false; } return true; } 28

void MainWindow::loadFile(const QString &filename) { QFile file(filename); if (file.open(qfile::readonly QFile::Text)) { QMessageBox::warning(this, tr("application"), tr("cannot read file %1:\n%2.").arg(fileName).arg(file.errorString())); return; } QTextStream in(&file); #ifndef QT_NO_CURSOR QApplication::setOverrideCursor(Qt::WaitCursor); #endif textedit->setplaintext(in.readall()); #ifndef QT_NO_CURSOR QApplication::restoreOverrideCursor(); #endif setcurrentfile(filename); statusbar()->showmessage(tr("file loaded"), 2000); } 29

bool MainWindow::saveFile(const QString &filename) { QFile file(filename); if (file.open(qfile::writeonly QFile::Text)) { QMessageBox::warning(this, tr("application"), tr("cannot write file %1:\n%2.").arg(fileName).arg(file.errorString())); return false; } QTextStream out(&file); #ifndef QT_NO_CURSOR QApplication::setOverrideCursor(Qt::WaitCursor); #endif out << textedit->toplaintext(); #ifndef QT_NO_CURSOR QApplication::restoreOverrideCursor(); #endif setcurrentfile(filename); statusbar()->showmessage(tr("file saved"), 2000); return true; } 30

#include <QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { Q_INIT_RESOURCE(application); QApplication app(argc, argv); app.setorganizationname("qtproject"); app.setapplicationname("application Example"); MainWindow mainwin; mainwin.show(); return app.exec(); } 31

http://qt-project.org/doc/qt-5/qtwidgetsmainwindows-application-example.html Aplicação exemplo 32

http://qt-project.org/doc/qt-5/qtquickwindow-example.html http://qt-project.org/doc/qt-5/qtwidgetsmainwindows-mainwindow-example.html Outros exemplos 33

Notas de aula Claudio Esperança e Paulo Cavalcanti (UFRJ) Notas de aula Allan Lima (citi/ufpe) Notas de aula Daniel Bittencourt (INdT) Referências 34

Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br