SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
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

Destaque

Destaque (20)

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

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

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

c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2c-gui-programming-with-qt-4-2ndedition -Cap1e2
c-gui-programming-with-qt-4-2ndedition -Cap1e2
 
Introdução ao qt
Introdução ao qtIntrodução ao qt
Introdução ao qt
 
Apresentação QtConBr
Apresentação QtConBrApresentação QtConBr
Apresentação QtConBr
 
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoTO Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
O Qt e sua atuação no desenvolvimento desktop, mobile, embarcado e para IoT
 
Introdução ao Qt
Introdução ao QtIntrodução ao Qt
Introdução ao Qt
 
Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformasWebinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
Webinar: Qt: um toolkit, um código-fonte, múltiplas plataformas
 
Qt
QtQt
Qt
 
Kde para iniciantes - Camila Ayres
Kde para iniciantes - Camila AyresKde para iniciantes - Camila Ayres
Kde para iniciantes - Camila Ayres
 
Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017
 
Qt tchelinux-2010
Qt tchelinux-2010Qt tchelinux-2010
Qt tchelinux-2010
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
K8sGPT - Superpoderes na administração Kubernetes.pptx
K8sGPT - Superpoderes na administração Kubernetes.pptxK8sGPT - Superpoderes na administração Kubernetes.pptx
K8sGPT - Superpoderes na administração Kubernetes.pptx
 
Meetup-Churrops
Meetup-ChurropsMeetup-Churrops
Meetup-Churrops
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
Arquitetura e Design QCon2010 - Paulo Silveira - Caelum
Arquitetura e Design QCon2010 - Paulo Silveira - CaelumArquitetura e Design QCon2010 - Paulo Silveira - Caelum
Arquitetura e Design QCon2010 - Paulo Silveira - Caelum
 
Gt 2 – ferramentas
Gt 2 – ferramentasGt 2 – ferramentas
Gt 2 – ferramentas
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
Minicurso wxWidgets
Minicurso wxWidgetsMinicurso wxWidgets
Minicurso wxWidgets
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
 

Mais de Tchelinux

Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
Tchelinux
 

Mais de Tchelinux (20)

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

Último

Último (9)

Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

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