Qt5 – Conhecendo um verdadeiro canivete-suiço

Opa, nova categoria no blog! Agora irei escrever um pouco sobre Qt que se pronuncia (cute), não o conheço de forma pré-histórica mas digo que o vejo a uns 4 anos, um excelente framework para interfaces gráficas em C++ onde além de C++ possui um grande uso com outras linguagens como Python com PyQt ou até mesmo o PySide um wrapper do Qt ;), é bem parecido porém um é GPL e o outro LGPL.

Então o Qt hoje na data que escrevo este post ele esta na versão 5.3.1, usei e uso muito a versão 4.8, o que me fez a conhecer o Qt foi ele ser multiplataforma, e poder “criar” GUI com C++ de uma forma mais fácil, pra quem não sabe o KDE do kubuntu e de outras distribuições é escrito em Qt, vi que VLC esta migrando para Qt, já ouviu falar do MalwareBytes? Então descobri recentemente que a nova versão foi escrita com Qt, multiplataforma? Sim! Estou falando de compilar para Linux, Windows, Android, Mac OS, QXN, VxWorks e para ARM como o RaspberryPI por exemplo, enfim…

Empresas como HP, Panasonic, Google, Adobe, Siemens, Disney, Volvo e por ae vai usam Qt, framework que nasceu em 1991 á 1995 onde saiu as primeiras versões, representado pela empresa Trolltech, em 2001 já tinha suporte até para Mac OS X, em 2005 saiu o Qt4 já em 2008 a Nokia adquiriu a Trolltech e ficou conhecido como Qt Software que respectivamente torno-se Qt Developement Frameworks, diversos dispositivos usaram Qt como Symbian S60, que mais tarde em 2011 a Nokia abandonou o projeto para Symbian e passou para Microsoft :(, porém no mesmo embalo Digia uma empresa finlandesa de softwares e que era colaboradora forte do Qt asssumiu a frente do Qt, e em 2012 a Digia assumiu todo o development do Qt visto que a Nokia não havia mais interesse no framework, sendo hoje mantido pela Digia :) ufa!!!

QtMultiplataforma

Hoje e desde a versão 4.8 ele esta muito bem estruturado seus modulos são sensacionais, todos começando com Qt no nome e vou citar alguns:

Qt5

QtCore – classes envolvendo o backend do framework, eventos e mecanismo de sinal, slot e configuração de aplicação, vou citar apenas alguns pra vocês sentirem o gosto QThread, QTimer, QCache, QBuffer, QDate, QDebug, QFile, QHash, QIODevice, QMap, QTConfig, QSysInfo, QSemaphore, QProcess, QMutex, QLocale. Hum opa, quem viu Mutex, Semaphore, Thread se pensou no que eu pensei é isso mesmo galera, tem muita coisa pronta e muito funcional esperando para ser usada :)

QtGui – Classes de GUI; modelo MVC

QtMultimedia – implementa funcionalidade multimidia

QtNetwork – Clientes e servidores UDP e TCP, os eventos de rede são integrados ao laço de eventos geral facilitando o desenvolvimento de aplicações de rede

QtSql – Suporte a diversos bases de dados livres e proprietárias

QtWebKit – fornece um mecanismo de reprodução gráfica e interação web baseados no WebKit

QtXml – Manipulador XML

QtWidgets – Classes widgets

E na versão 5.3 vi os seguintes módulos adicionados e outros com mais expansão:

QtBluetooth – Módulo que disponibiliza um conjunto de classes que possibilitam procurar, interagir(de todas as formas) e conectar com dispositivos outros dispositivos;

QtPositioning – Módulo que torna possível determinar uma posição desejada, através de diversas ferramentas como: Wi-Fi, GPS, sendo possível estabelecer posições em mapas.

QtMacExtras – INteração com sistema operacional MacOS.;

QtWinExtras – Interação com o sistema operacional Windows.

QtX11Extras – Interação com distribuições Linux que utilizam X11.

QtMultimediaWidgets – Permiti interagir com conteúdo multimídia e ao mesmo tempo fornece a interação desse conteúdo com os widgets disponibilizados no módulo QtWidgets;

QtSerialPort – Classe para interação com porta serial sem necessidade de recursos de terceiro.

QtPrintSupport – Classe utilizada para permitir impressão.

QtTest – Módulo novo que permite executar testes unitários.

QtQml – Reformulado e com mais suporte a facilidades para criação do que a versão anterior.

QtQuick – Classe que oferece itens básicos para a criação de interfaces utilizando o QML.

QtWebkitWidgets – Módulo básico baseado em Webkit que fornece interação com QtWidgets.

Ahhh beleza, falou falou falou mas e pra usar esse tal de Qt? Ae que ta o mais legal da historia os caras fornecem uma IDE monstro para você trabalhar chamada Qt Creator que dela derivam:

Qt Designer: Para construir as interfaces gráficas (GUI) bem estilo clica e solta tanto para Linux, Windows, Mac OS no estilo RAD.

Qt Assistant: Para procurar e visualizar toda documentação da IDE e dos modulos envolvidos.

Qt Linguist: Nunca utilizei mas o Wikipedia diz “ferramentas para as funções tipicamente envolvidos na localização de aplicativos: desenvolvedores, tradutores e gestores de lançamento”.

qmake: Já usou o make do Linux? O qmake é o que constrói “compila” tudo para diferentes plataformas.

Na figura01, a tela inicial assim que você executa o Qt Creator:

Qt5TelaInicial

 Tela Inicial Qt Creator – Figura01

Referente a cada cor segue suas informações:

Quadrado Azul: < Edit > Onde você irá criar e editar os header, sources, e arquivos como o .pro
Quadrado Vermelho: < Design > O nome já explica não? É onde você irá “desenhar” as telas
Quadrado Laranja: < Debug > Ajustar os modos de Debug e configurá-los
Quadrado Verde: < Projects > Aqui muito importante é onde você irá modificar a configuração para compilar seu projeto como para executa-lo

Quadrado Violeta: < Run > Aqui você clica para executar sua aplicação, atalho Ctrl+R
Quadrado Marron: < Start Debugging > Executa aplicação com modo Debug, atalho F5
Quadrado Amarelo: < Build Project > Irá construir sua aplicação, realizar o build dela, as vezes é necessario este apenas e não o Run, por exemplo quando se desenvolve cross-compiling para um ARM, atalho Ctrl+Shift+B

Para intuito de curiosidade:

“O toolkit foi chamado de Qt porque a letra Q ficava atraente no Emacs, e “t” foi inspirado no Xt, o toolkit X”

Em breve, irei escrever sobre a instalação do Qt Creator.

Bom pessoal, fico por aqui espero ter ajudado na apresentação dessa ferramenta sensacional e até a próxima!

Referências

http://qt-project.org/downloads
http://pt.wikipedia.org/wiki/Qt
http://qt-project.org/wiki

Share Button

CC BY-NC-SA 4.0 Qt5 – Conhecendo um verdadeiro canivete-suiço by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

  • Parabéns pelo artigo Cleiton, espero os próximos posts. Abraços

    • Opa, obrigado. Com certeza em breve vem mais coisa legal por ae :)

      • quero aprender bem sobre essa ferramenta, você indica algum curso?

        Abraços.

        Fábio Souza

        • Legal, nossa Qt é muito top. Eu conheço a um tempo sobre material os bons são os que estão no site da própria Digia, apesar que o Qt5 ta bem carente de material ainda viu :(

          Me interessei e arrisquei a aprender quando tive que migrar uma aplicação Windows para Linux tambem, foi estranho no começo depois foi que foi, ae logo foquei em estudar a parte de Embedded Qt que depois que peguei os macetes de configurar a IDE e as libs que devem ser usadas, fiz a GUI do meu TCC assim sem a necessidade de um servidor X rodando.

          Pretendo passar do inicio até parte de Threads, Banco de dados e comunicação TCP/UDP também que é bem legal, caso tiver interesse me add no Skype e batemos um papo.

          Você é o Fabio do Embarcados ou estou confundindo?

          Abraço

          • Maravilha cara, eu vou estudar um pouco sobre ele. Vou acompanhar seus artigos.

            Sou o Fábio do embarcados. Adorei o seu site parabéns pelo trabalho. meu skype: fabio_souza85.

            Abraços

          • Opa, fico feliz que tenha gostado. Acompanha que estou escrevendo bastante coisa pra postar, aos poucos vai quase chegando a um blog mais ou menos rs :)

            Grande abraço e ja add.