Qt

 Nota: Para outros significados, veja QT.
Qt
Logótipo
Qt
Desenvolvedor Qt Company e KDAB
Plataforma Windows, Linux, BSD, macOS, Android, iOS
Lançamento 20 de maio de 1995 (29 anos)[1]
Versão estável 6.7.1 (21 de maio de 2024; há 5 meses[2])
Escrito em C++, QML
Sistema operacional Multiplataforma
Gênero(s) Framework para Aplicativo
Licença
Página oficial www.qt.io
Repositório code.qt.io/cgit/qt/qtbase.git/

Qt (oficialmente pronunciado como a palavra inglesa cute [7]) é 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 antiga 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.[8] Antes da aquisição a Nokia já preparava o lançamento do Qt 5, uma versão completamente reestruturada.[9][10]

Plataformas

Qt funcionam nas seguintes plataformas:

Plataformas suportadas pela comunidade

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

Design

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

  • 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[31] 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
  • 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.[10] 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.[9]

Uso de renderização nativa da UI

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

O compilador metaobject, ou moc, é uma ferramenta que processa fontes de um programa Qt gerando código C++ padrão. Ele interpreta 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

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, Go, Haskell, Harbour, Java, Lisp, Lua, OCaml, Pascal, Perl, PHP, Python, R, Ruby, Rust, 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

#include <QtGui>

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

Ferramentas

  • 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

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.[32]

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.[33]

A Nokia adquiriu 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 do Nokia Qt SDK foi lançado em 23 de Junho de 2010.[34] O código fonte foi liberado através do Gitorious, para aumentar a adoção e participação da comunidade nas melhorias da Qt.

Em Dezembro de 2012, foi lançada a Qt 5.0.[35]

Em Dezembro de 2020, foi lançada a Qt 6.0.[36]

Licenciamento

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

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

Referências

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

Ligações externas