Marcio Bueno

Criando uma Aplicação OpenGL com o Qt Creator

Ao se desenvolver uma aplicação OpenGL é preciso utilizar em conjunto alguma outra biblioteca para tratar de tarefas específicas como abrir uma janela e interagir com mouse e teclado. O problema é que normalmente estas outras bibliotecas são dependentes de sistema operacional.

Existem algumas alternativas para não ficar dependente de sistema operacional, das quais a mais conhecida é utilizar a GLUT, porém ela possui vários problemas. Dentre estes problemas, um dos piores é a necessidade de utilizar variáveis globais para criar a sua aplicação. Portanto, descartando a utilização da GLUT, uma outra abordagem é utilizar o framework Qt da Nokia.

Para contextualizar, será criada uma aplicação gráfica com OpenGL e Qt, onde a interface gráfica será criada utilizando o Qt Creator, que é uma IDE de código aberto que possui uma licença gratuita, inclusive para desenvolver aplicações comerciais.

A aplicação pode ser vista na figura abaixo e é bem simples. É basicamente um visualizador de polígonos, onde o usuário informa a quantidade de lados e o tamanho do raio através de dois sliders.

Aplicação OpenGL com Qt

Este tutorial está dividido em três partes e como ele foi gravado em 720p é recomendado que você selecione esta opção e visualize em tela cheia.

Tutorial de OpenGL com Qt Creator (Parte 1)

Tutorial de OpenGL com Qt Creator (Parte 2)

Tutorial de OpenGL com Qt Creator (Parte 3)

Você pode baixar o código fonte do Projeto OpenGL com Qt. Atualização: Se você não estiver conseguindo compilar o código, tente dar um #include <GL/glu.h> ou #include <glu.h>

Espero que tenham gostado deste tutorial. Comentários são bem vindos!

59 Responses

  1. jusefinu
    jusefinu 31 de março de 2010 at 17:02 |

    mutxu boum, mim agudô baztantxi!!!1111

    Reply
  2. Leonardo
    Leonardo 14 de abril de 2010 at 11:20 |

    Excelente. Só não precisava falar tão baixinho. 😉

    Reply
  3. Crystian Leão
    Crystian Leão 21 de maio de 2010 at 1:29 |

    Massa o tutorial Marcio, ótimo pra conhecer o funcionamento da ferramenta 🙂

    Reply
  4. Cristiano
    Cristiano 25 de junho de 2010 at 20:22 |

    Muito bom mesmo. Fácil, bem explicado e direto. Há algum tempo que tento aprender o Qt, mas não consigo sair do lugar. Seu tutorial foi um divisor de águas pra mim. Valeu!

    Reply
  5. Cristiano
    Cristiano 25 de junho de 2010 at 20:53 |

    Tive uma dúvida agora: Após concluiro projeto, como faço para levar apaneas o executável e rodar em outra máquina? Na verdade, nem mesmo na própria máquina, o executável gerado no projeto roda.

    Reply
  6. Cristiano
    Cristiano 25 de junho de 2010 at 20:58 |

    Problema resolvido: Inclui as pastas bin do Qt no path das variáveis de ambiente.

    Reply
  7. Fabio Nunes
    Fabio Nunes 27 de junho de 2010 at 1:53 |

    Marcio muito bom o tutorial, estava procurando exatamente essa explicação que você deu a alguns meses pelo google, trabalhei com o devcpp porém ele não tem as mesmas opções que o QT proporciona e eu estava justamente atrás da utilização de Widget como ambiente OpenGL, queria saber se você tem algum tem um curso especifico de Computação Gráfica com OpenGL a distância, pois estou em brasilia mas me interesso muito pelo assunto.

    Reply
  8. alciso filho
    alciso filho 3 de agosto de 2010 at 23:15 |

    Marcio, show de bola a video aula!
    De fato, é bem melhor que usar GLUT! 😀
    Abraços e até breve!!

    Reply
  9. Jefferson Oliveira
    Jefferson Oliveira 21 de agosto de 2010 at 20:47 |

    Mácio… Parabens pelo tutorial. =)

    Muito bom!

    Reply
  10. Rodrigo
    Rodrigo 22 de agosto de 2010 at 17:14 |

    Ótimo tutorial, parabens..

    Viva o Qt e Qt Creator.
    Pra mim são ás melhores ferramentas para c/c++ da atualidade..

    Abraço.

    Reply
  11. Joao
    Joao 22 de setembro de 2010 at 12:22 |

    Ola Marcio muito bom tutorial, estou a tentar configurar o meu widget no QT tal e qual como tu estas a ensinar, mas no fim esta-me a dar um erro e não consigo correr, será que te posso enviar o meu programa para o teu email e tentares-me ajudar por lá, dando uma vista de olhos no meu programa? Cumprimentos
    Joao

    Reply
  12. Carlos
    Carlos 4 de outubro de 2010 at 19:47 |

    ola pessoal, em que versão do QT creator foi feito o tutorial, o que acontece é que cuando eu tento criar o novo projeto não tenho as opções de incluir o QtOpenGl, ao proposito eu tenho a ultima versão do QT creator, obrigado pelas respostas

    Reply
  13. Carlos
    Carlos 8 de outubro de 2010 at 1:42 |

    Obrigado pela resposta, fiz o que vc diz e saiu tudo legal.

    Reply
  14. Fernando Sousa dos Santos
    Fernando Sousa dos Santos 26 de novembro de 2010 at 23:58 |

    Ei Marcio, qual é o link para aquele documento em pdf que aparece na parte 2 do tutorial WHITE PAPER que tem aqueles métodos que é para incrementar no código?

    Reply
  15. Fernando Sousa dos Santos
    Fernando Sousa dos Santos 5 de dezembro de 2010 at 16:13 |

    Marcio pode me ajudar?
    Toda vez que tento dar debug em qualquer código fonte(inclusive esse do opengl) dá esses erros:
    :: error: The Qt version is invalid: Could not determine the path to the binaries of the Qt installation, maybe the qmake path is wrong?
    e
    :: error: The qmake command “” was not found or is not executable.
    Sabe a solução pro meu problema?

    Reply
  16. Rogerio Pimentel
    Rogerio Pimentel 10 de dezembro de 2010 at 9:45 |

    Parabéns pelas apresentações !!!
    Um abraço!
    Rogerio

    Reply
  17. rique
    rique 12 de março de 2011 at 11:23 |

    amigo, otimo tutorial
    mas tenho uma duvida, eu estou tentando re-utilizar o seu trabalho para aprender mesmo e tentar modificado, so que quando edito o design dele, nao acontece nada; a figura do openGL eu edito normal, mas o design n.
    exemplo mudar o botao de lugar, quando executo continua no mesmo lugar.
    grato

    Reply
  18. Rique
    Rique 12 de março de 2011 at 22:30 |

    Ja esta tudo certo, muito obrigado cara!
    “Divisor de Aguas do QT”
    Vlw

    Reply
  19. Rique
    Rique 13 de março de 2011 at 1:45 |

    Parabéns pelo trabalho!

    Reply
  20. Joao
    Joao 13 de março de 2011 at 19:19 |

    Boa noite, alguem sabe quando sai ou se vai sair um aproximo video
    obrigado

    Reply
  21. Antonio dos Santos Reis
    Antonio dos Santos Reis 13 de março de 2011 at 19:31 |

    Boa noite, otimos videos!
    amigo tenho um projeto em OpenGL e o seu tutorial foi muito maravilhoso, mas a glRotatef nao funciona; coloco glRotatef(angulo,0,0,1) em cima do glBegin e simplesmente a figura nao gira; faço o mesmo no java e funciona; o amigo poderia me ajudar?
    desde ja obrigado

    Reply
  22. Lucas Cardoso
    Lucas Cardoso 29 de agosto de 2011 at 22:58 |

    Ola , eu tenho um projeto feito em opengl em que há eventos gerenciados pelos teclados, gostaria de criar um gui a partir do qt, como eu poderia alterar o codigo? o qt creator faz isso facilmente?

    Reply
  23. jose joan
    jose joan 20 de setembro de 2011 at 18:39 |

    como vai, estou com um problema. No Qt tenho um DoubleSpinBox,mas preciso tranformar ele em uma variável para que eu possa fazer calculos com ela, como devo fazer isso, já tentei usar Valuechange(double d) por exemplo, mas não funcionou.

    Reply
  24. Andres Flores
    Andres Flores 26 de maio de 2012 at 18:38 |

    Hello Marcio, thank you for you explanation about the use of programming OpenGL in QT. I have done the same application as you, but I have a problem in QT:
    -error: undefined reference to `gluOrtho2D’

    In fact I have downloaded your project, and the error is the same.

    I hope your answer soon.

    Have a nice day. Bless you God!

    Reply
  25. Francisco Falcão
    Francisco Falcão 30 de maio de 2012 at 18:30 |

    Muito bom professor!!

    Quem dera que mais professores tivessem a sua iniciativa!!

    Márcio, após a primeira compilação do projeto, o qt não permite alteração de layout?? eu consigo fazer as alterações normalmente, mas quando mando compilar ele reexibe o layout antigo.
    Ex.: No primeiro layout, existia um label. Excluo esse label. ao mandar compilar, lá está o bendito label de volta.

    Como resolveria isso??
    Mais uma vez, parabéns!

    Reply
  26. Diogo
    Diogo 25 de setembro de 2012 at 18:04 |

    Eu estou tentando compilar seu codigo aqui na minha maquina mas não consigo. Quando tento fazer de imediato(sem alterar nada) aparece uma mensagem de erro:”gluOrtho2D was not declared in this scope MeuPainelOpenGL.cpp”. Em primeiro momento pensei que o problema poderia no meu pc(to executando em um Ubuntu 12.04) mas nada. Mesmo mexendo no codigo não consigo executar. já reescrevi o codigo tanto no windows quanto no linux mas não da certo…me ajude por favor?

    Reply
  27. Dyego
    Dyego 4 de dezembro de 2012 at 21:48 |

    Primeiramente Vlw ai Marcio, e pra quem tiver problema com o gluOrtho2D mesmo usando o #include tenta usar o #include <glu.h> ou então procura onde o glu.h estar. vlw.

    Reply
    1. Carolina
      Carolina 11 de julho de 2013 at 11:32 |

      @Marcio, você deveria colocar a opção que o Dyego deu, no final do artigo tb.
      Estou usando o Qt5.1 no MacOSX 10.8 e só consegui fazer funcionar quando troquei o #include pelo

      Valeu, Dyego !

      Reply
  28. Joao
    Joao 21 de maio de 2013 at 3:00 |

    Muito Didático!
    Parabéns!

    Reply
  29. João
    João 3 de dezembro de 2013 at 19:14 |

    Boa noite,
    Primeiramente parabéns pelo tutorial, muito bom mesmo.
    Eu segui o tutorial, fiz todos os procedimentos e o Qt Creator faz o build certinho sem nenhum erro, contudo quando o programa vai executar, o Windows da aquele erro que o programa parou de funcionar e o fecha. Alguma idéia do que pode ser?
    Estou usando o Qt Creator 5.1.1 no Windows 8.
    A ultima vez que testei o programa e ele funcionou foi quando ele ainda estava sem os códigos do OpenGL.

    Reply
  30. Vinicius Mauricio
    Vinicius Mauricio 14 de maio de 2014 at 20:41 |

    Vlw, muito o bom o tutorial, me ajudou bastante!

    Reply
  31. Renato Santos
    Renato Santos 18 de agosto de 2014 at 18:10 |
    Reply
  32. Davis Maizing
    Davis Maizing 1 de setembro de 2015 at 8:56 |

    Olá professor Márcio,
    Esse tutorial é ótimo, mas se fosse possível atualizá-lo para o QT5 seria ótimo, pois acontecem muitos erros de GLUOrtho2d e _imp__ *** que não é possível rodá-lo.
    Obrigado!

    Reply

Leave a Reply