Qt

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Qt
Qt Designer 4 4 3.png
Qt Designer 4.4.3
Desenvolvedor Qt Project e Digia
Lançamento 20 de maio de 1995[1]
Versão estável 5.2.1 (5 de fevereiro de 2014; há 36 semanas e 5 dias[2] )
Versão em teste 5.3 Alpha (27 de fevereiro de 2014; há 33 semanas e 4 dias[3] )
Escrito em C++
Sistema operacional Multiplataforma
Gênero(s) Framework para aplicativo
Licença
Página oficial qt-project.org

Qt (oficialmente pronunciado como a palavra inglesa cute [8] ) é um framework multiplataforma para desenvolvimento de interfaces gráficas em C++ criado pela empresa norueguesa Trolltech. Com ele é possível desenvolver aplicativos e bibliotecas uma única vez e compilá-los para diversas plataformas sem que seja necessário alterar o código fonte.

Qt é utilizado largamente no ambiente desktop KDE e na nova plataforma para dispositivos móveis da Nokia, Maemo (também livre), além do BlackBerry 10 e diversos softwares conhecidos e outros internos por grandes empresas não só da área de tecnologia como Google, HP e Adobe, mas também dos mais variados setores como Disney, DreamWorks SKG, Lucasfilm, Siemens, Volvo, NASA, ESA, Philips, Samsung e Panasonic.

Qt é mantido pelo Qt Project, uma iniciativa de software livre envolvendo desenvolvedores individuais e provenientes de empresas como Nokia, Digia e outras. Antes do lançamento do Qt Project, era desenvolvido pela divisão da Nokia Qt Development Frameworks, da empresa Norueguesa Trolltech, a desenvolvedora original do Qt. Em fevereiro de 2011 a Nokia anunciou sua decisão de abandonar as tecnologias baseadas no Symbian e usar tecnologias da Microsoft em seus aparelhos. Logo após foi anunciado que a Digia, uma empresa finlandesa de softwares corporativos e uma das principais usuárias e colaboradoras do Qt, iria assumir o licenciamento comercial e serviços de suporte do Qt. Em agosto de 2012 um anúncio foi realizado que a Digia iria assumir todo desenvolvimento do Qt já que a Nokia não teria mais qualquer interesse no framework.[9] Antes da aquisição a Nokia já preparava o lançamento do Qt 5, uma versão completamente reestruturada .[10] [11]

Plataformas[editar | editar código-fonte]

Qt funcionam nas seguintes plataformas:

Plataformas suportadas pela comunidade[editar | editar código-fonte]

Como o Qt está aberto no Gitorious várias plataformas são suportadas pela comunidade:

Design[editar | editar código-fonte]

Qt usa o C++ padrão com geração de código através do seu Meta Object Compiler, ou moc com várias macros para enriquecer a linguagem. Qt pode ser usado por várias linguagens de programação através de bibliotecas de ligação. Roda nas principais plataformas de desktop, dispositivos móveis e embarcados. Tem suporte à internacionalização. Algumas das características não relacionadas à GUI incluem SQL para acesso a diversos banco de dados, XML, JSON, thread, redes, impressão, PDF, manipulação de imagens como SVG e uma API unificada multiplataforma para manipulação de arquivos, além de diversas estrutura de dados, por isso o Qt é um framework completo para desenvolvimento de aplicações multiplataforma.

Módulos[editar | editar código-fonte]

  • Módulos para desenvolvimento geral
    • QtCore – contém classes não relacionadas a GUI, incluindo o laço de eventos e mecanismo de sinal e slot, abstrações independentes da plataforma para Unicode, processos leves, arquivos mapeados, memória compartilhada, expressões regulares, e configuração de aplicação
    • QtGui – contém a maioria das classes GUI; incluindo classes para tabelas, árvores e listas de acordo com o Padrão de projeto de software, MVC; também inclui um controlo sofisticado de ecrã 2D capaz de suportar milhares de outros objetos. Na versão 5 muitos dos widgets serão deslocados para outra biblioteca
    • QtMultimedia – implementa funcionalidade baixo nível de multimídia
    • QtNetwork – contém classes para manipulação de clientes and servidores UDP e TCP; implementando clientes FTP e HTTP, suportando buscas DNS; os eventos de rede são integrados o laço de eventos geral facilitando o desenvolvimento de aplicações de rede
    • QtOpenGL – contém classes que suportam OpenGL e reprodução de gráficos 3D
    • QtOpenVG – plugin para desenho de OpenVG
    • QtPrintSupport - classes para controlo de impressão, PDF, etc
    • QtPublishSubscribe - mecanismo simplificado de notificações
    • QtScript – mecanismo para script baseado no ECMAScript
    • QtScriptTools – componentes adicionais para uso com QtScript
    • QtSensors - controlo de sensores de hardware
    • QtServiceFramework - criação de execução de serviços
    • QtSql – contém classes com suporte a diversos bases de dados livres e proprietárias. Inclui modelos editáveis para utilização com as classes GUI. E inclui ainda uma implementação do SQLite
    • QtSvg – contém classes para visualização de arquivos SVG
    • QtSystemInfo - para obter informações sobre o dispositivo
    • QtWebKit – fornece um mecanismo de reprodução gráfica e interação web baseados no WebKit
    • QtXml – implementa SAX e DOM interfaces para o manipulador XML
    • QtXmlPatterns – dá suporte a XPath, XQuery, XSLT e validação de XML
    • PhononAPI multimídia
    • Qt3Support – classes legadas
    • Qt Declarative[32] framework declarativo para construir interfaces fluidas em QML
    • QtWidgets - classes widgets
  • Módulos para uso com ferramentas Qt
    • QtDesigner
    • QtUiTools
    • QtHelp
    • QtTest
  • Módulos para desenvolvedores Unix
    • QtDBus – biblioteca para realizar comunicação entre processos via protocolo D-Bus
  • Módulos para desenvolvedores Windows
    • QAxContainer – extensão para acessar controles ActiveX e objetos COM
    • QAxServer – biblioteca estática que transforma um binário padrão em um servidor COM

A nova versão será Qt 5 e espra ser lançada em agosto de 2012.[11] Essa nova versão marca uma grande mudança produzindo um framework mais modularizado, gráficos acelerados por hardware, QML e JavaScript tendo papel importante. C++ Widgets continuarão suportados mas não serão mais parte central da plataforma. Qt 5 também terá novas funcionalidades, melhoria em performance, rapidez de desenvolvimento e suporte básico ao C++11 mantendo compatibilidade com C++98.[10]

Uso de renderização nativa da UI[editar | editar código-fonte]

QT é usada para emular o visual nativo das plataformas, onde ocasionalmente leva a algumas leves discrepâncias onde a emulação é imperfeita. Versões recentes usam APIs nativas das diferentes plataformas para selecionar métricas e desenhar parte dos controles e não sofrem tanto dos problemas citados.

Em algumas plataformas (como no MeeGo e KDE) Qt é a API nativa.

Compilador Metaobject[editar | editar código-fonte]

O compilador metaobject, ou moc, é uma ferramenta que processa fontes de um programa Qt gerando código C++ padrão. Ele interpresa certas macros em um código C++ como anotação de código e as usa para gerar código C++ adicional com Meta Informação sobre as classes usada no programa. Essa meta informação é usada para prover funcionalidades não disponíveis no C++ tais como signais e slots, introspecção de tipos e chamadas de função assíncronas.

Bindings para outras linguagens[editar | editar código-fonte]

Diversas outras linguagens de programação além do C++ podem usar a Qt através de bibliotecas que conectam a linguagem ao framework. Algumas delas permitem acesso completo a todos os módulos enquanto outras apenas a alguns módulos mais importantes para a programação de uma GUI. Esses bindings são criados pelas comunidades e não são suportados oficialmente pelos desenvolvedores da Qt, embora algumas delas já tenham recebido esse suporte no passado. As principais linguagens com bindings são: Ada, C# e .Net, D, Haskell, Harbour, Java, Lisp, Lua, Pascal, Perl, PHP, Python, R, Ruby, Scheme, Tcl além do QML que é uma linguagem declarativa pertencente ao próprio Qt e o QtScript, uma linguagem baseada no Ecmascript também disponível no framework e suporta por pelas ferramentas oficiais.

Qualquer aplicação pode ser configurada por scripts através do QtScript.

Programa Olá Mundo[editar | editar código-fonte]

#include <QtGui>
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel label("Olá, Mundo!");
    label.show();
    return app.exec();
}

Ferramentas[editar | editar código-fonte]

  • Qt Creator, é uma IDE completa e específica para C++, QtScript e QML para todas as plataformas suportadas
  • qmake, que automatiza a geração de Makefiles para desenvolvimento em todas as plataformas suportadas
  • Qt Designer
  • Qt Assistant
  • Qt Linguist
  • lupdate
  • lrelease
  • lconvert
  • QVFb
  • makeqpf
  • uic (User Interface Compiler)
  • rcc (Resource Compiler)
  • qtconfig
  • qconfig
  • qtdemo
  • qt3to4
  • qdbusxml2cpp
  • D-Bus Viewer
  • Qt Visual Studio Add-in
  • Qt Eclipse Integration
  • Qt Simulator
  • Nokia Smart Installer for Symbian
  • qmlviewer
  • Qt Quick

História[editar | editar código-fonte]

Haavard Nord e Eirik Chambe-Eng (os desenvolvedores originais da Qt e o CEO e Presidente, respectivamente da Trolltech) começaram o desenvolvimento da "Qt" em 1991.

O toolkit foi chamado de Qt porque a letra Q ficava atraente no Emacs, e "t" foi inspirado no Xt, o toolkit X.[33]

As primeiras versões contavam apenas com duas edições: Qt/X11 for Unix e Qt/Windows for Windows. A versão para Windows só estava disponível em licença proprietária, significando que aplicações escritas para o Qt for X11 não poderiam ser portadas para Windows sem a compra de uma licença comercial.

No fim de 2001, a Trolltech lançou a Qt 3.0, adicionando suporte para o Mac OS X. O suporte para o Mac OS X também estava disponível apenas com licença proprietária até Junnho de 2003, quando a Trolltech lançou a Qt 3.2 com suporte ao Mac OS X disponível através de licença GPL.

Em Junho de 2005, a Trolltech lançou a Qt 4.0.[34]

A Nokia adiquiriu a Trolltech ASA em 17 de Junnho de 2008 e mudou seu nome inicialmente para Qt Software, e depois para Qt Development Frameworks. Desde então o desenvolvimento da Qt foi focado no suporte para seus dispositivos, usando tecnologias como Symbian S60 platform. Version 1.0 of the Nokia Qt SDK was released on 23 June 2010.[35] O código fonte foi liberado através do Gitorious, para aumentar a adoção e participação da comunidade nas melhorias da Qt.

Licenciamento[editar | editar código-fonte]

A Qt sempre esteve disponível para licenciamento para aplicações proprietárias. Com o tempo a Qt foi sendo disponibilizada através de licenças livres. Atualmente está disponível sob as licenças:

Ver também[editar | editar código-fonte]

Outros projetos Wikimedia também contêm material sobre este tema:
Wikilivros Livros e manuais no Wikilivros

Referências

  1. Blanchette, Jasmin; Summerfield, Mark. C++ GUI Programming with Qt 4 (em inglês). [S.l.]: Prentice-Hall, 2006. ISBN 0-13-187249-4
  2. Tuukka Turunen (5 de fevereiro de 2014). Qt 5.2.1 Released (em inglês) blog.qt.digia.com. Visitado em 2 de março de 2014.
  3. Lars Knoll (27 de fevereiro de 2014). Qt 5.3 Alpha Available (em inglês) blog.qt.digia.com. Visitado em 2 de março de 2014.
  4. a b c d e f Qt Licensing (em inglês) qt-project.org. Visitado em 2 de março de 2014.
  5. a b GNU General Public License (GPL) (em inglês) qt-project.org. Visitado em 2 de março de 2014.
  6. a b GNU Lesser General Public License (LGPL) (em inglês) qt-project.org. Visitado em 2 de março de 2014.
  7. a b Qt Commercial License (em inglês) qt-project.org. Visitado em 2 de março de 2014.
  8. That smartphone is so Qt (16 de fevereiro de 2010). Visitado em 29 de novembro de 2013.
  9. Digia to Acquire Qt from Nokia (9 agosto 2012). Visitado em 2012-08-13.
  10. a b Thoughts about Qt 5 (9 maio 2011). Visitado em 2012-08-13.
  11. a b http://www.h-online.com/open/news/item/Final-Qt-5-0-release-delayed-until-August-1564405.html
  12. Developer.qt.nokia.com (11 agosto 2011). Qt Wiki – Support for Windows. Visitado em 2012-08-13.
  13. Developer.qt.nokia.com (12 agosto 2011). Qt Wiki – Support for Windows CE and Windows Mobile. Visitado em 2012-08-13.
  14. Developer.qt.nokia.com. Qt Wiki – Support for Symbian. Visitado em 2012-08-13.
  15. All About Symbian (20 outubro 2008). Nokia Announce Technology preview of Qt on S60. Visitado em 2012-08-13.
  16. Developer.qt.nokia.com (14 agosto 2011). Qt Wiki – Support for Mac OS X. Visitado em 2012-08-13.
  17. Developer.qt.nokia.com (12 agosto 2011). Qt Wiki – Suporte para Linux/X11. Visitado em 2012-08-13.
  18. Developer.qt.nokia.com (12 agosto 2011). Qt Wiki – Support for Embedded Linux. Visitado em 2012-08-13.
  19. Developer.qt.nokia.com (14 agosto 2011). Qt Wiki – Qt on Maemo/MeeGo. Visitado em 2012-08-13.
  20. Qt for BlackBerry.
  21. Getting started with Lighthouse.
  22. Kristian Høgsberg (25 janeiro 2011). Add wayland lighthouse plugin.
  23. Hub.opensolaris.org (26 outubro 2009). KDE on OpenSolaris. Visitado em 2012-08-13.
  24. Qt-haiku.ru. Qt Applications and UI Framework for Haiku. Visitado em 2012-08-13.
  25. Svn.netlabs.org (15 setembro 2011). Qt 4 Application and UI Framework for eCS. Visitado em 2012-08-13.
  26. Gitorious.org. Experimental development of qt for the iPhone. Visitado em 2012-08-13.
  27. Qt-iphone.com. Qt-iPhone project. Visitado em 2012-08-13.
  28. Griffin.net (25 fevereiro 2010). Blog: Qt on the Palm Pre. Visitado em 2012-08-13.
  29. Griffin.net. Blog: Qt on Amazon Kindle DX. Visitado em 2012-08-13.
  30. Sourceforge.net. Necessitas project. Visitado em 2012-08-13.
  31. Slashdot (22 fevereiro 2011). First Alpha of Qt For Android Released. Visitado em 2012-08-13.
  32. Doc.qt.nokia.com. Qt 4.7: Qt Declarative Module. Visitado em 2012-08-13.
  33. A Brief History of Qt. Visitado em 2012-08-13.
  34. Dot.kde.org. Trolltech Releases Qt 4.0 | KDE.news. Visitado em 2012-08-13.
  35. Niels Weber (23 Junho 2010). Nokia Qt SDK 1.0 released. Visitado em 2012-08-13.

Ligações externas[editar | editar código-fonte]