Qt (oficialmente pronunciado como a palavra inglesa cute ) é 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. Antes da aquisição a Nokia já preparava o lançamento do Qt 5, uma versão completamente reestruturada.http://www.h-online.com/open/news/item/Final-Qt-5-0-release-delayed-until-August-1564405.html
Plataformas Qt funcionam nas seguintes plataformas:
Windows – Qt for Microsoft Windows Windows CE, Mobile – Qt for Windows CE and Windows Mobile Symbian – Qt for the Symbian. OS X – Qt for Apple OS X; suportando Cocoa X11 – Qt for X Window System (GNU/Linux, FreeBSD, HP-UX, Solaris, AIX, etc.) Embedded Linux – Qt for embedded platforms: personal digital assistant, smartphone, etc. Maemo, MeeGo – Qt for Maemo QNX / BlackBerry 10 - Qt for BlackBerry 10. Wayland – Qt for Wayland. Aplicações podem trocar entre X and Wayland em tempo de execução
Plataformas suportadas pela comunidade Como o Qt está aberto no Gitorious várias plataformas são suportadas pela comunidade: Qt for OpenSolaris – Qt for OpenSolaris Qt for Haiku – Qt for Haiku Qt for OS/2 – Qt for OS/2 eCS platform Qt-iPhone – experimental Qt for webOS – experimental Qt for Amazon Kindle DX – experimental Necessitas – Qt for Android
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 Phonon – API multimídia Qt3Support – classes legadas Qt Declarative 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. 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.
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.
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.
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. 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.
Em Dezembro de 2020, foi lançada a Qt 6.0.
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:
GPL 3.0 LGPL 2.1 (com exceção especial para desenvolvimento de software proprietário) Qt Commercial Developer License (software comercial)
Ver também
PyQT PySide GTK KDE GNOME
Ligações externas
Categoria:Toolkits gráficos Categoria:C++ Categoria:Linux embarcado Categoria:Software livre programado em C++ Categoria:Qt