SlideShare uma empresa Scribd logo
O que é Qt ?
              Como começar?
                Programando
                    Futuro...




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
O que é Qt ?
                         Como começar?
                           Programando
                               Futuro...
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
O que é Qt ?
                       Como começar?
                         Programando
                             Futuro...
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
O que é Qt ?
                       Como começar?
                         Programando
                             Futuro...
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
O que é Qt ?
                       Como começar?
                         Programando
                             Futuro...
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
O que é Qt ?
                      Como começar?
                        Programando
                            Futuro...
Instalação

  Denition
  Método Fácil

      Instale Linux
      Usando o instalador de programas, instale todos os pacotes
      com qt4
      Não esqueça do compilador (g++) e do make




                   Dr. Henrique Marks   Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                       Como começar?
                         Programando
                             Futuro...
Instalação

  Denition
  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 as
      instruções corretamente




                   Dr. Henrique Marks    Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                     Como começar?
                       Programando
                           Futuro...
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 dos
      demais
      Um programa pode (e será) composto de vários arquivos

  Denition
  Vantagem deste método

      É rápido, é eciente, é simples
      Sem as complexidades de um IDE

                  Dr. Henrique Marks   Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                    Como começar?
                      Programando
                          Futuro...
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
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 1
  Denition
  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
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 1
  Denition
  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
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 1

  Denition
  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
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 1

  Denition
  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
O que é Qt ?
                      Como começar?
                        Programando
                            Futuro...
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 -project
         qmake-qt4
         make
     O primeiro comando cria um arquivo de projeto (.pro)
     O segundo cria um Makele, com instruções de compilação
     O terceiro compila, linka, etc, seguindo as instruções do
     makele
     Rode o executável (clique no arquivo prog1 que está nesta
     pasta)

                   Dr. Henrique Marks   Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                   Como começar?
                     Programando
                         Futuro...
Programa rodando




               Dr. Henrique Marks    Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
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
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 2
  Denition
  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 de
      classes do Qt.
      QPushButton herda de Qwidget, ou seja, é uma sub-classe de
      QWidget
                   Dr. Henrique Marks     Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 2
  Denition
  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 de
      classes do Qt.
      QPushButton herda de Qwidget, ou seja, é uma sub-classe de
      QWidget
                   Dr. Henrique Marks     Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 2
  Denition
  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 de
      classes do Qt.
      QPushButton herda de Qwidget, ou seja, é uma sub-classe de
      QWidget
                   Dr. Henrique Marks     Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 2
  Denition
  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 denir a fonte
      Uma função do QPushButton para denir a geometria
                   Dr. Henrique Marks     Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 2
  Denition
  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 denir a fonte
      Uma função do QPushButton para denir a geometria
                   Dr. Henrique Marks     Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 2
  Denition
  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 quit
      do 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
O que é Qt ?
                        Como começar?
                          Programando
                              Futuro...
Exemplo 2
  Denition
  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 quit
      do 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
O que é Qt ?
                   Como começar?
                     Programando
                         Futuro...
Programa Rodando




              Dr. Henrique Marks     Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                   Como começar?
                     Programando
                         Futuro...
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
O que é Qt ?
                    Como começar?
                      Programando
                          Futuro...
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
O que é Qt ?
                      Como começar?
                        Programando
                            Futuro...
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
O que é Qt ?
                      Como começar?
                        Programando
                            Futuro...
Exemplo 3

  Denition
  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
O que é Qt ?
                      Como começar?
                        Programando
                            Futuro...
Exemplo 3

  Denition
  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
O que é Qt ?
                      Como começar?
                        Programando
                            Futuro...
Exemplo 3

  Denition
  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
O que é Qt ?
                     Como começar?
                       Programando
                           Futuro...
Exemplo 3
  Denition
  Entendendo o Código (mainwindow.h)

      class MainWindow : public QMainWindow {
          Q_OBJECT
          public: MainWindow();
          private: QTableWidget *tableWidget; };

      Deniçã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
O que é Qt ?
                     Como começar?
                       Programando
                           Futuro...
Exemplo 3
  Denition
  Entendendo o Código (mainwindow.h)

      class MainWindow : public QMainWindow {
          Q_OBJECT
          public: MainWindow();
          private: QTableWidget *tableWidget; };

      Deniçã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
O que é Qt ?
                      Como começar?
                        Programando
                            Futuro...
Exemplo 3
  Denition
  Entendendo o Código (mainwindow.cpp)

      #include mainwindow.h
      MainWindow::MainWindow() {
          tableWidget = new QTableWidget(10,20,this);
          setCentralWidget(tableWidget); }

      Inclusão da denição
      Denição da contrutora:
          Criamos um (ponteiro) objeto tableWidget
          Chamamos a função que diz que ele é o Widget central


                   Dr. Henrique Marks   Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                      Como começar?
                        Programando
                            Futuro...
Exemplo 3
  Denition
  Entendendo o Código (mainwindow.cpp)

      #include mainwindow.h
      MainWindow::MainWindow() {
          tableWidget = new QTableWidget(10,20,this);
          setCentralWidget(tableWidget); }

      Inclusão da denição
      Denição da contrutora:
          Criamos um (ponteiro) objeto tableWidget
          Chamamos a função que diz que ele é o Widget central


                   Dr. Henrique Marks   Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                   Como começar?
                     Programando
                         Futuro...
Programa Rodando




              Dr. Henrique Marks     Desenvolvimento orientado a objetos com C++ e Qt4
O que é Qt ?
                     Como começar?
                       Programando
                           Futuro...
Aprendendo Mais


     Vá na página da Trolltech (agora Nokia):
         www.trolltech.com
         doc.trolltech.com
     Vá na minha página
         henriquemarks.googlepages.com
         Estamos na sétima aula na FACSUL, teremos 12.




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

Mais conteúdo relacionado

PDF
Introdução à Programação C++ com Qt 4
PDF
Introdução ao Qt
PDF
Desenvolvendo Aplicações Android com Qt
PDF
Apresentacao android por Júlio Cesar Bueno Cotta
PPT
Abordagem Funcional para Gerenciamento de Erros em .NET
PDF
Treinamento TDD - Atech
PDF
Criando aplicações com PHP-GTK
PPT
Programação Funcional usando C#
Introdução à Programação C++ com Qt 4
Introdução ao Qt
Desenvolvendo Aplicações Android com Qt
Apresentacao android por Júlio Cesar Bueno Cotta
Abordagem Funcional para Gerenciamento de Erros em .NET
Treinamento TDD - Atech
Criando aplicações com PHP-GTK
Programação Funcional usando C#

Destaque (20)

PDF
Como criar o seu próprio joystick!
PDF
Big data, e eu com isso?
PDF
Qt Techday - João Pessoa
PDF
Dicas de otimização para aplicações Qt
PDF
Algoritmo de Smith-Waterman
PDF
PySide
PPTX
Arquivos FASTQ
PPTX
Listas, tuplas, conjuntos e dicionários
PPTX
Busca em largura - BFS
PPTX
Análise Assintótica
PPTX
Programação dinâmica
PPTX
Algoritmos gulosos
PPTX
Problema do Caixeiro Viajante
PPTX
Algoritmo de Kosaraju
PPTX
Maratona de Programação com STL
PPTX
Backtracking - Gerar todos os subconjuntos
PDF
Mágica com qt’s meta object system
PPTX
Construção de interfaces gráficas com Tkinter
PPTX
Árvores de Decisão
PPTX
Metaheurística Simulated Annealing
Como criar o seu próprio joystick!
Big data, e eu com isso?
Qt Techday - João Pessoa
Dicas de otimização para aplicações Qt
Algoritmo de Smith-Waterman
PySide
Arquivos FASTQ
Listas, tuplas, conjuntos e dicionários
Busca em largura - BFS
Análise Assintótica
Programação dinâmica
Algoritmos gulosos
Problema do Caixeiro Viajante
Algoritmo de Kosaraju
Maratona de Programação com STL
Backtracking - Gerar todos os subconjuntos
Mágica com qt’s meta object system
Construção de interfaces gráficas com Tkinter
Árvores de Decisão
Metaheurística Simulated Annealing
Anúncio

Semelhante a Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks (20)

PDF
c-gui-programming-with-qt-4-2ndedition -Cap1e2
PDF
Introdução ao qt
PDF
Apresentação QtConBr
PDF
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
PDF
Introdução ao Qt
PDF
Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
PDF
PDF
Kde para iniciantes - Camila Ayres
PDF
_Aula 1 - Introdução à Linguagem Java.pdf
PDF
Carrefour E-commerce - Multicloud Brasil Day 2017
PDF
Qt tchelinux-2010
PDF
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
PPTX
K8sGPT - Superpoderes na administração Kubernetes.pptx
PDF
Meetup-Churrops
PDF
Criando Webservice REST com NodeJS, NoSQL & Docker
PDF
Arquitetura e Design QCon2010 - Paulo Silveira - Caelum
PPT
Gt 2 – ferramentas
PDF
Programando para web com python - Introdução a Python
PPTX
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
PPTX
Minicurso wxWidgets
c-gui-programming-with-qt-4-2ndedition -Cap1e2
Introdução ao qt
Apresentação QtConBr
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
Introdução ao Qt
Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
Kde para iniciantes - Camila Ayres
_Aula 1 - Introdução à Linguagem Java.pdf
Carrefour E-commerce - Multicloud Brasil Day 2017
Qt tchelinux-2010
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
K8sGPT - Superpoderes na administração Kubernetes.pptx
Meetup-Churrops
Criando Webservice REST com NodeJS, NoSQL & Docker
Arquitetura e Design QCon2010 - Paulo Silveira - Caelum
Gt 2 – ferramentas
Programando para web com python - Introdução a Python
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso wxWidgets
Anúncio

Mais de Tchelinux (20)

PDF
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
PDF
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
PDF
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
PDF
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
PDF
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
PDF
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
PPTX
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
PDF
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
PDF
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
PDF
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
PDF
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
PDF
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
PDF
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
ODP
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
PDF
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
PDF
Com que ônibus eu vou? Uma gentil introdução ao Python.
PDF
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
PDF
Não deixe para testar depois o que você pode testar antes.
PDF
Desenvolvendo jogos com pygame
PDF
Essa câmera faz fotos muito boas, né?
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Com que ônibus eu vou? Uma gentil introdução ao Python.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
Não deixe para testar depois o que você pode testar antes.
Desenvolvendo jogos com pygame
Essa câmera faz fotos muito boas, né?

Último (8)

PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Mecânico de Manutenção de Equipamentos.pptx
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Arquitetura de computadores - Memórias Secundárias
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Manejo integrado de pragas na cultura do algodão
Mecânico de Manutenção de Equipamentos.pptx
Viasol Energia Solar -Soluções para geração e economia de energia
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Arquitetura de computadores - Memórias Secundárias

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

  • 1. O que é Qt ? Como começar? Programando Futuro... 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
  • 2. O que é Qt ? Como começar? Programando Futuro... 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
  • 3. O que é Qt ? Como começar? Programando Futuro... 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
  • 4. O que é Qt ? Como começar? Programando Futuro... 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
  • 5. O que é Qt ? Como começar? Programando Futuro... 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
  • 6. O que é Qt ? Como começar? Programando Futuro... Instalação Denition Método Fácil Instale Linux Usando o instalador de programas, instale todos os pacotes com qt4 Não esqueça do compilador (g++) e do make Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 7. O que é Qt ? Como começar? Programando Futuro... Instalação Denition 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 as instruções corretamente Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 8. O que é Qt ? Como começar? Programando Futuro... 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 dos demais Um programa pode (e será) composto de vários arquivos Denition Vantagem deste método É rápido, é eciente, é simples Sem as complexidades de um IDE Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 9. O que é Qt ? Como começar? Programando Futuro... 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
  • 10. O que é Qt ? Como começar? Programando Futuro... Exemplo 1 Denition 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
  • 11. O que é Qt ? Como começar? Programando Futuro... Exemplo 1 Denition 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
  • 12. O que é Qt ? Como começar? Programando Futuro... Exemplo 1 Denition 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
  • 13. O que é Qt ? Como começar? Programando Futuro... Exemplo 1 Denition 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
  • 14. O que é Qt ? Como começar? Programando Futuro... 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 -project qmake-qt4 make O primeiro comando cria um arquivo de projeto (.pro) O segundo cria um Makele, com instruções de compilação O terceiro compila, linka, etc, seguindo as instruções do makele Rode o executável (clique no arquivo prog1 que está nesta pasta) Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 15. O que é Qt ? Como começar? Programando Futuro... Programa rodando Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 16. O que é Qt ? Como começar? Programando Futuro... 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
  • 17. O que é Qt ? Como começar? Programando Futuro... Exemplo 2 Denition 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 de classes do Qt. QPushButton herda de Qwidget, ou seja, é uma sub-classe de QWidget Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 18. O que é Qt ? Como começar? Programando Futuro... Exemplo 2 Denition 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 de classes do Qt. QPushButton herda de Qwidget, ou seja, é uma sub-classe de QWidget Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 19. O que é Qt ? Como começar? Programando Futuro... Exemplo 2 Denition 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 de classes do Qt. QPushButton herda de Qwidget, ou seja, é uma sub-classe de QWidget Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 20. O que é Qt ? Como começar? Programando Futuro... Exemplo 2 Denition 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 denir a fonte Uma função do QPushButton para denir a geometria Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 21. O que é Qt ? Como começar? Programando Futuro... Exemplo 2 Denition 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 denir a fonte Uma função do QPushButton para denir a geometria Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 22. O que é Qt ? Como começar? Programando Futuro... Exemplo 2 Denition 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 quit do 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
  • 23. O que é Qt ? Como começar? Programando Futuro... Exemplo 2 Denition 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 quit do 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
  • 24. O que é Qt ? Como começar? Programando Futuro... Programa Rodando Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 25. O que é Qt ? Como começar? Programando Futuro... 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
  • 26. O que é Qt ? Como começar? Programando Futuro... 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
  • 27. O que é Qt ? Como começar? Programando Futuro... 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
  • 28. O que é Qt ? Como começar? Programando Futuro... Exemplo 3 Denition 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
  • 29. O que é Qt ? Como começar? Programando Futuro... Exemplo 3 Denition 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
  • 30. O que é Qt ? Como começar? Programando Futuro... Exemplo 3 Denition 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
  • 31. O que é Qt ? Como começar? Programando Futuro... Exemplo 3 Denition Entendendo o Código (mainwindow.h) class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); private: QTableWidget *tableWidget; }; Deniçã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
  • 32. O que é Qt ? Como começar? Programando Futuro... Exemplo 3 Denition Entendendo o Código (mainwindow.h) class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(); private: QTableWidget *tableWidget; }; Deniçã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
  • 33. O que é Qt ? Como começar? Programando Futuro... Exemplo 3 Denition Entendendo o Código (mainwindow.cpp) #include mainwindow.h MainWindow::MainWindow() { tableWidget = new QTableWidget(10,20,this); setCentralWidget(tableWidget); } Inclusão da denição Denição da contrutora: Criamos um (ponteiro) objeto tableWidget Chamamos a função que diz que ele é o Widget central Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 34. O que é Qt ? Como começar? Programando Futuro... Exemplo 3 Denition Entendendo o Código (mainwindow.cpp) #include mainwindow.h MainWindow::MainWindow() { tableWidget = new QTableWidget(10,20,this); setCentralWidget(tableWidget); } Inclusão da denição Denição da contrutora: Criamos um (ponteiro) objeto tableWidget Chamamos a função que diz que ele é o Widget central Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 35. O que é Qt ? Como começar? Programando Futuro... Programa Rodando Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
  • 36. O que é Qt ? Como começar? Programando Futuro... Aprendendo Mais Vá na página da Trolltech (agora Nokia): www.trolltech.com doc.trolltech.com Vá na minha página henriquemarks.googlepages.com Estamos na sétima aula na FACSUL, teremos 12. Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4