36

Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

Embed Size (px)

Citation preview

Page 1: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Desenvolvimento orientado a objetos com C++ e

Qt4

Dr. Henrique Marks

November 8, 2008

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 2: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Sumário

1 O que é Qt ?

2 Como começar?

3 Programando

4 Futuro...

Nível Intermediário

Programação visual, orientada a objetos, C++ e Qt

Pré-requisitos: Um pouco de C++.

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 3: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Biblioteca de Classes

Totalmente orientada a objetos

Multi-plataforma

Classes visuais cobrindo múltiplas necessidades

Classes-extra, de uso geral

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 4: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Utilização

Criação de aplicativos para o Desktop

Criação de aplicativos embarcados

Criação de aplicativos para o shell (!)

Exemplos de Uso: KDE, Lyx, Skype, ...

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 5: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Utilização

Criação de aplicativos para o Desktop

Criação de aplicativos embarcados

Criação de aplicativos para o shell (!)

Exemplos de Uso: KDE, Lyx, Skype, ...

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 6: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Instalação

De�nition

Método Fácil

Instale Linux

Usando o instalador de programas, instale todos os pacotescom qt4

Não esqueça do compilador (g++) e do make

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 7: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Instalação

De�nition

Método menos fácil

Vá no site da Trolltech: www.trolltech.com

Baixe o que for necessário

Não esqueça de baixar a versão com mingw, e seguir asinstruções corretamente

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 8: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Ambiente de Desenvolvimento

Vamos escrever o código num editor de textos simples

Vamos compilar o código no terminal

Cada programa DEVE ser colocado numa pasta separada dosdemais

Um programa pode (e será) composto de vários arquivos

De�nition

Vantagem deste método

É rápido, é e�ciente, é simples

Sem as complexidades de um IDE

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 9: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 1

Example

Hello World

#include <QApplication>

#include <QLabel>

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

{

QApplication app(argc, argv);

QLabel *label = new QLabel("Hello Qt!");

label->show();

return app.exec();

}

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 10: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 1

De�nition

Entendendo o Código

#include <QApplication>

#include <QLabel>

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

{

QApplication app(argc, argv);

Arquivos de cabeçalho, função main, e criação do Objeto app,do tipo QApplication

Sempre igual, em todos os programas

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 11: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 1

De�nition

Entendendo o Código

#include <QApplication>

#include <QLabel>

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

{

QApplication app(argc, argv);

Arquivos de cabeçalho, função main, e criação do Objeto app,do tipo QApplication

Sempre igual, em todos os programas

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 12: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 1

De�nition

Entendendo o Código

QLabel *label = new QLabel("Hello Qt!");

label->show();

Criamos um objeto (ponteiro) label, do tipo QLabel.

Chamamos a construtora do objeto, passando a string(QString) "Hello Qt!"

Mostramos o QWidget no programa.

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 13: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 1

De�nition

Entendendo o Código

QLabel *label = new QLabel("Hello Qt!");

label->show();

Criamos um objeto (ponteiro) label, do tipo QLabel.

Chamamos a construtora do objeto, passando a string(QString) "Hello Qt!"

Mostramos o QWidget no programa.

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 14: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Compilando e rodando

Crie a pasta prog1, salve o arquivo ali como ex1.cpp

Pelo terminal, entre na pasta e rode os comandos

qmake-qt4 -projectqmake-qt4make

O primeiro comando cria um arquivo de projeto (.pro)

O segundo cria um Make�le, com instruções de compilação

O terceiro compila, linka, etc, seguindo as instruções domake�le

Rode o executável (clique no arquivo prog1 que está nestapasta)

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 15: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Programa rodando

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 16: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 2

Example

Fazendo conexões

QApplication app(argc, argv);

QWidget window;

window.resize(200, 120);

QPushButton quit("Quit", &window);

quit.setFont(QFont("Times", 18, QFont::Bold));

quit.setGeometry(10, 40, 180, 40);

QObject::connect(&quit, SIGNAL(clicked()),

&app, SLOT(quit()));

window.show();

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 17: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 2

De�nition

Entendendo o Código

QWidget window;

window.resize(200, 120);

Criamos o objeto window, do tipo QWidget

Chamamos a função resize para este objeto

QWidget é uma classe muito importante na hierarquia declasses do Qt.

QPushButton herda de Qwidget, ou seja, é uma sub-classe deQWidget

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 18: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 2

De�nition

Entendendo o Código

QWidget window;

window.resize(200, 120);

Criamos o objeto window, do tipo QWidget

Chamamos a função resize para este objeto

QWidget é uma classe muito importante na hierarquia declasses do Qt.

QPushButton herda de Qwidget, ou seja, é uma sub-classe deQWidget

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 19: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 2

De�nition

Entendendo o Código

QWidget window;

window.resize(200, 120);

Criamos o objeto window, do tipo QWidget

Chamamos a função resize para este objeto

QWidget é uma classe muito importante na hierarquia declasses do Qt.

QPushButton herda de Qwidget, ou seja, é uma sub-classe deQWidget

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 20: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 2

De�nition

Entendendo o Código

QPushButton quit("Quit", &window);

quit.setFont(QFont("Times", 18, QFont::Bold));

quit.setGeometry(10, 40, 180, 40);

Criamos o objeto quit, do tipo QPushButton

Chamamos sua construtora, com dois parâmetros:

Uma QString "Quit"O ponteiro para o QWidget que conterá este botão (&window)

Uma função do QPushButton para de�nir a fonte

Uma função do QPushButton para de�nir a geometria

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 21: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 2

De�nition

Entendendo o Código

QPushButton quit("Quit", &window);

quit.setFont(QFont("Times", 18, QFont::Bold));

quit.setGeometry(10, 40, 180, 40);

Criamos o objeto quit, do tipo QPushButton

Chamamos sua construtora, com dois parâmetros:

Uma QString "Quit"O ponteiro para o QWidget que conterá este botão (&window)

Uma função do QPushButton para de�nir a fonte

Uma função do QPushButton para de�nir a geometria

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 22: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 2

De�nition

Entendendo o código

QObject::connect(&quit, SIGNAL(clicked()),

&app, SLOT(quit()));

window.show();

Mecanismo Signal - Slot do Qt

Quando o botão quit for clicado, será chamada a função quitdo objeto app

Sinais: clicked, drag, drop, release, etc.

Slots: Nossas Funções (o nosso código!!!)

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 23: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 2

De�nition

Entendendo o código

QObject::connect(&quit, SIGNAL(clicked()),

&app, SLOT(quit()));

window.show();

Mecanismo Signal - Slot do Qt

Quando o botão quit for clicado, será chamada a função quitdo objeto app

Sinais: clicked, drag, drop, release, etc.

Slots: Nossas Funções (o nosso código!!!)

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 24: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Programa Rodando

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 25: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

main.cpp

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

{

QApplication app(argc, argv);

MainWindow mainWin;

mainWin.show();

return app.exec();

}

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 26: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

mainwindow.h

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

MainWindow();

private:

QTableWidget *tableWidget;

};

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 27: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

mainwindow.cpp

#include "mainwindow.h"

MainWindow::MainWindow()

{

tableWidget = new QTableWidget(10,20,this);

setCentralWidget(tableWidget);

}

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 28: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

De�nition

Entendendo o código (main.cpp)

MainWindow mainWin;

mainWin.show();

Criando o objeto mainWin do tipo MainWindow

Chamando a função show deste objeto

Que classe é esta, MainWindow ?

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 29: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

De�nition

Entendendo o código (main.cpp)

MainWindow mainWin;

mainWin.show();

Criando o objeto mainWin do tipo MainWindow

Chamando a função show deste objeto

Que classe é esta, MainWindow ?

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 30: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

De�nition

Entendendo o código (main.cpp)

MainWindow mainWin;

mainWin.show();

Criando o objeto mainWin do tipo MainWindow

Chamando a função show deste objeto

Que classe é esta, MainWindow ?

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 31: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

De�nition

Entendendo o Código (mainwindow.h)

class MainWindow : public QMainWindow {

Q_OBJECT

public: MainWindow();

private: QTableWidget *tableWidget; };

De�nição da classe MainWindow, que herda de QMainWindow

A classe contém uma construtora MainWindow()

A classe contém um objeto do tipo QTableWidget

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 32: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

De�nition

Entendendo o Código (mainwindow.h)

class MainWindow : public QMainWindow {

Q_OBJECT

public: MainWindow();

private: QTableWidget *tableWidget; };

De�nição da classe MainWindow, que herda de QMainWindow

A classe contém uma construtora MainWindow()

A classe contém um objeto do tipo QTableWidget

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 33: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

De�nition

Entendendo o Código (mainwindow.cpp)

#include "mainwindow.h"

MainWindow::MainWindow() {

tableWidget = new QTableWidget(10,20,this);

setCentralWidget(tableWidget); }

Inclusão da de�nição

De�nição da contrutora:

Criamos um (ponteiro) objeto tableWidgetChamamos a função que diz que ele é o Widget central

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 34: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Exemplo 3

De�nition

Entendendo o Código (mainwindow.cpp)

#include "mainwindow.h"

MainWindow::MainWindow() {

tableWidget = new QTableWidget(10,20,this);

setCentralWidget(tableWidget); }

Inclusão da de�nição

De�nição da contrutora:

Criamos um (ponteiro) objeto tableWidgetChamamos a função que diz que ele é o Widget central

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 35: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Programa Rodando

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4

Page 36: Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks

O que é Qt ?Como começar?

ProgramandoFuturo...

Aprendendo Mais

Vá na página da Trolltech (agora Nokia):

www.trolltech.comdoc.trolltech.com

Vá na minha página

henriquemarks.googlepages.comEstamos na sétima aula na FACSUL, teremos 12.

Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4