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á 73 semanas e 6 dias[2] )
Versão em teste 5.3 Alpha (27 de fevereiro de 2014; há 70 semanas e 5 dias[3] )
Linguagem 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. 2010/02/16/that-smartphone-is-so-qt/ 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]