Programação C++ em Qt, Kdevelop, Qt Designer e Qt Creator
Por Rodolfo Ribeiro Machado, programador C++, Qt e PHP.
O objetivo desta pagina é divulgar o desenvolvimento de sistemas clientes/servidor em Qt como alternativa a ferramentas RAD proprietárias disponíveis no mercado, ensinando as técnicas essenciais para se criar um sistema em Qt que acesse um banco de dados em uma rede intranet, bem como os recursos essenciais que um sistema assim tem de ter, como:
Acesso a banco de dados (SQL)
Emissão de relatórios
Emissão de boletos
Codigo de barras
Emissão de notas fiscais
Uso de impressoras fiscais
Em fim, tudo aquilo que faz parte das chamadas “aplicações comercias” ou “automação comercial”, que são sempre aplicativos em arquitetura cliente/servidor, rodando numa rede intranet e acessando um banco de dados via SQL no servidor, este é o universo em que eu sempre trabalhei, antes no Windows® com ferramentas como o Delphi®, agora no Linux com a Qt, embora tudo o que a Qt faz no Linux faz no Windows® também pois é multi-plataforma.
Tenho notado que na Internet a muitos tutoriais sobre Qt sempre focados em programação básica, tutoriais voltados para quem esta iniciando na programação Qt e alguns num nível mais avançado, como criação de interfaces gráficas em Qt para aplicativos Linux de rede ou mesmo computação gráfica em Qt, mas nada sobre acesso a banco de dados que ainda é o maior “filão” do mercado de informática.
O desenvolvimento de sistemas para automação comercial é a área, dentro da informática, que mais emprega programadores, empresários como comerciantes e industriais querendo controlar o fluxo de informações relativos a seu negocio constituem a maioria dos clientes potenciais das empresas de desenvolvimento.
O framework ou bibliota Qt tem plenas funcionalidades para desenvolvimento de aplicativos cliente/servidor, sendo uma tecnologia madura e eficiente, testada e aprovada pelo mercado.
A evolução da arquitetura cliente/servidor Portanto o foco deste site é o desenvolvimento de aplicativos para automação comercial em Qt.
A enfase sera no desenvolvimento para Linux, mas também serão dados exemplos em Windows®, lembrando que a Qt é multiplataforma.
Na pagina a alguns exemplos de sistemas que desenvolvi utilizando a Qt juntamente com a IDE Kdevelop e a ferramenta de desenho QtDesigner, bem como diversos tutoriais (links à direita da pagina) por mim escritos e tutoriais de outros autores que demonstram como desenvolver sistemas em Qt.
Os tutoriais por mim escritos são específicos para sistemas acessando bancos de dados e emissão de relatórios, os outros são sobre programação básica em Qt.
Na coluna a direita da pagina você encontrara, sobre programação em Qt, tutoriais escritos por mim, tutoriais de outros autores, divididos em tutoriais on-line e tutoriais para download, links para fóruns e listas de programação, endereços da Qt Software, o desenvolvedor da Qt, links para vídeos didáticos sobre programação em Qt.
Sobre a linguagem C++, links para o desenvolvedor dos compiladores C++ GCC e G++ e também da versão do GCC/G++ para Windows®, o MinGW e alguns links para paginas sobre programação C++, guias de referência on-line C++ e tutoriais C++ para download.
Sobre bancos de dados, endereços dos bancos mais usados no Linux e no Windows® e suas respectivas ferramentas de administração.
A biblioteca Qt é escrita em linguagem C++ e é multiplataforma, o código pode ser escrito uma única vez, e depois recompilado para diversos sistemas operacionais, sem que seja necessário reescreve-lo, compõe-se de vários objetos ou widgets que são utilizados na criação de aplicativos ou interfaces gráficas, sendo o exemplo mais notável a interface gráfica KDE do Linux.
A versão open source, de que trata este site, esta licenciada sob a LGPL (Lesser General Public License).
A empresa responsável pela criação é a norueguesa Trolltech, agora adquirida pela Nokia passando a se chamar Qt Software.
Neste link (http://www.qtsoftware.com/qt-in-use) a uma excelente demonstração de vários softwares desenvolvidos em Qt.
Os desenvolvedores do KDE criaram a IDE (do inglês Integrated Development Environment ou Ambiente Integrado de Desenvolvimento) Kdevelop para agilizar o desenvolvimento da interface, utilizando o conceito RAD (do inglês Rapid Application Development ou Desenvolvimento Rápido de Aplicação), isto é conseguido através da integração do Kdevelop ao Qt Designer, uma ferramenta de construção de GUI, (do inglês Graphical User Interface ou ou interface gráfica do usuário), que desenha janelas e widgets da aplicação. O Qt Designer faz parte do pacote Qt.
O Kdevelop por sua vez usa o compilador g++ (no Linux) que faz parte do conjunto GNU Compiler Collection ou GCC distribuído pela Free Software Foundation.
Meus aplicativos se conectam a um banco de dados PostgreSQL. Como desenvolvi em Delphi® para Windows® por muito tempo, procurei seguir uma filosofia semelhante o maximo possivel, porque acredito que facilita usuários ja acostumados com softwares legados do Windows® a se adaptarem melhor e a uma imensa comunidade de programadores Delphi que talvez queiram desenvolver para Linux e não sabem como.
Destaco também a excelente ferramenta de geração de relatórios chamada openRPT,escrita em C++/Qt e que tem um tutorial em destaque aqui na pagina, esta ferramenta dá todo o poder de que a Qt precisa para gerar relatórios com código de barras, graficos e outros recursos, roda em Linux, Windows®, Mac-Os e outros, tem semelhanças no modo de operar com o Quickreport e o Kugar, veja as definiçõs do desenvolvedor do openRPT:
Definições de relatório são salvos no formato XML padrão.
Ferramenta padrão de Designer dos relatórios.
Suporte para cabeçalhos e rodapés em todas as paginas ou opção para só primeira/ultima pagina.
Suporte para múltiplas colunas nas seções detail.
Suporte para imagens estáticas e fontes de dados.
Suporte para várias seções detalhes e opcionais, grupo de múltiplas cabeçalhos e rodapés para cada seção detail.
Os formatos suportados:
Formatos de Código de Barras:
Código 3of9
Código 3of9 extendido
Código 128
UPC-A
UPC-E
EAN-8
EAN-13
Documentos
Suporte para retrato ou paisagem, Letter, Legal e A4
Plataformas suportadas
Sistemas Operacionais:
Windows 98/ME/NT/2K/XP
Linux
Mac OS X
xBSD
Solaris
AIX
HPUX
Bases de dados
PostgreSQL
ODBC
Oracle
Com um pouco de trabalho:
DB2
SQL Server
MySQL
Qt não seria o que é, flexível e poderosa, se não herdasse estas características da linguagem em que foi escrita, C++, uma linguagem em constante expansão e crescimento no mercado.
Razões para utilizar C++:
Desenvolvimento de sistemas para Linux.
Abaixo segue algumas telas de um sistema que eu desenvolvi para controlar custos de obras de construção.O objetivo do sistema e controlar os custos de uma obra de construção, podendo-se saber custos por material, mão de obra, data etc.
O sistema conta com os seguinte recursos:
Cadastros:
Projetos, onde se cadastram os principais dados do projeto, que é uma obra de construção, como endereço, tamanho do terreno, área a ser construída etc, também se pode acompanhar o total de despesas da obra por este cadastro.
Cidades, onde se cadastram cidades onde estão as obras.
Bairros, onde se cadastram bairros de uma cidade.
Ruas, onde se cadastram ruas.
Tipo de fornecedor, onde se cadastram os diversos tipos de fornecedores, como os de material básico(cimento, areia etc), elétrico(fiação,caixas, disjuntores etc), madeira etc.
Fornecedores, onde se cadastram os dados do fornecedor, como endereço, e o tipo do fornecedor, para facilitar, o sistema já vem com os fornecedores mais comuns separados em quatro cadastros distintos(Básico, Elétrico, Madeira e Tintas). O sistema grava todos em uma única tabela, mas filtra pelo tipo na ora de abrir os cadastros específicos. Também a um cadastro geral para outros tipos de fornecedores.
Tipo de profissionais, onde se cadastram os diverso tipos de profissionais, como pedreiros, pintores, carpinteiros, eletricistas, encanadores etc.
Profissionais, onde se cadastram os dados do profissional como endereço e o tipo do profissional, segue o mesmo principio do cadastro de fornecedores, com os tipos de profissionais mais comuns separados, pedreiros, eletricistas, encanadores , pintores e carpinteiros. O sistema grava todos em uma única tabela, mas filtra pelo tipo na ora de abrir os cadastros especifico. Também a um cadastro geral para outros tipos de profissionais.
Tipo de despesas, onde se cadastram os diversos tipos de despesas que irão compor as despesas relativas à obra, estes tipos de despesas irão aparecer no cadastro de despesas.
Despesas. onde se cadastram as despesas da obra, nele serão cadastrados o projeto, a data, o tipo de despesa, se é referente a mão de obra(profissional) ou se é referente a material(fornecedor), o valor da despesa, o numero do documento(cheque etc).
Usuários, o sistema controla os usuários através de uma tabela própria no banco de dados, onde constam nome, senha e nível de acesso ao sistema, o que permite estabelecer um administrador para o sistema e controlar o acesso de demais usuários aos recursos do sistema com restrições de somente leitura, por exemplo.
Relatórios:
Despesas, por projeto, por data, por tipo de despesa, por fornecedor, por profissional, por tipo de fornecedor, por tipo de profissional.
Abaixo:Tela principal e de login do sistema.(Clique na imagem para ampliar).
>
Abaixo:Cadastro de fornecedores. Nos cadastros procurei implementer funcionalidades semelhantes ao que o Delphi oferece, como DbNavigators, como não a estes componentes disponíveis na biblioteca, eu emulei suas funcionalidades via codigo. Observem os botões para primeiro registro, anterior próximo e ultimo, depois inserir, alterar,gravar,cancelar e excluir.(Clique na imagem para ampliar).
Abaixo:Tela de pesquisa de despesas. Nas telas de pesquisa, pode-se ordenar pelos campos disponíveis no RadioBotão e,conforme se digita um valor para o campo escolhido no campo de edição em cima na tela, a lista é percorrida até se encontrar o valor desejado.(Clique na imagem para ampliar).
Abaixo:Tela anterior a emissão de relatórios de despesas.(Clique na imagem para ampliar).
Abaixo:Tela do relatório montado. Os relatórios são gerados em XML por um codigo que eu criei e depois são interpretados pelo gerador de relatórios do KDE, o Kugar, que é uma ferramenta pertencente ao pacote KOffice. Ela também tem um desenhador de relatórios para se criar o layout. Existem outras ferramentas para gerar relatórios no Linux, como AgataReport, mas achei o Kugar mais fácil de integrar ao sistema.(Clique na imagem para ampliar).
Abaixo:Tela de preview do relatório.(Clique na imagem para ampliar).
Espero com este exemplo mostrar que o Linux, alem de sua já conhecida segurança contra vírus, troians e outras pragas virtuais, sua estabilidade e sua escalabilidade em rede, em relação ao concorrente mais conhecido, não precisa ficar só no servidor, o ambiente desktop também já é muito bem servido com suites de escritório como OpenOffice, diversos navegadores de internet como Firefox, Mozilla, Konqueror, Opera, Epiphany etc, clientes de e-mail como Kmail etc.
Estes exemplos que eu dei cobrem 90% do ambiente de uso nas empresas, ou seja, suite de escritório, acesso a internet e uma aplicação especifica cliente/servidor para a empresa, que eu mostrei aqui que pode ser criada com a mesma eficiência e produtividade que qualquer similar do sistema concorrente. Não a razão para não se adotar o Linux no desktop, sem contar os custos menores.
Para os empresários consumidores de Softwares e serviços de informática, fica evidente, cada vez mais, a superioridade do Linux na relação custo/beneficio em relação ao concorrente, argumentos como os de falta de softwares e aplicativos especificos não mais se aplicam ao ambiente empresarial, onde “games” e “players” de musica não são o foco de trabalho.
É possível sim igualar e superar o sistema concorrente no ambiente empresarial no quesito softwares básicos como acesso a internet, suites de escritório etc, é possível sim desenvolver aplicativos específicos para a empresa com a mesma eficiência e produtividade de qualquer ferramenta de desenvolvimento nativa da plataforma concorrente, escolha o banco de dados para seu aplicativo, quer open-source: PostgreSql, MySql, Firebird, quer proprietário: Oracle.
Existem compiladores e IDE's gráficas para toda linguagem de programação relevante no mercado( falo aqui de aplicativos para ambiente gráfico e linguagens compiladas) como C++(Kdevelop), Pascal(Lazarus/Free-Pascal), Java(Eclipse), Basic(Gambas) etc. Empresário, estou a disposição para desenvolver o seu sistema. Segue uma lista de usuários importantes do Linux ou que tem grande relevância no mercado:
Usuarios Linux importantes ou muito conhecidos:
Usuarios Linux de grande relevância no mercado:
- Casas Bahia
- Casas Bahia - 2
- Ponto Frio
- Carrefour
- Carrefour - 2
- Lojas Renner
- Petrobras
- Petrobras - 2
- Banco do Brasil
- Banco do Brasil - 2
- Itautec
- IBM
- Bolsa de valores de Nova York (NYSE)
- Companhia do Metropolitano de São Paulo - Metrô
Razões para adotar o Linux:
Uma visão sobre Open Source, colaboração, cloud computing(computação em nuvem) e mais razões para se adotar Software Livre:
Multiplataforma
A Qt também pode ser compilada no Windows® e Mac OS®, tornando-a multiplataforma e facilitando mais ainda o processo de migração para Linux, adotando o principio de migração gradual, ou seja, começa-se a migrar não o sistema operacional inteiro mas os softwares mais usados e comuns, como suites de escritório e navegadores de Internet.Assim o processo começa, por exemplo, com a migração para o OpenOffice rodando no Windows® e Firefox navegador de Internet também rodando no Windows® para mais tarde, quando os usúarios estiverem habituados com os novos softwares ai sim muda-se o sistema operacional, facilitando o processo, pois no Linux os usuarios irão encontrar os mesmos OpenOffice e Firefox tornando o processo mais tranquilo.
Neste sentido um aplicativo especifico da empresa desenvolvido em Qt pode rodar nos dois sistemas operacionais, facilitando mais ainda o processo de migração. No Windows esta disponível uma versão do compilador C++ do Linux, o g++, chamada MinGw (Minimalist GNU for Windows), ele ira compilar a versão Windows® da biblioteca Qt, no site da Qt Software esta disponível um pacote contendo a versão Windows® da biblioteca e o compilador MinGw.
Também no site da Qt Software pode-se baixar o QTCreator para Windows®, uma IDE para desenvolvimento Qt que integra o MinGw e o Qt Designer ou se preferir pode-se usar o Eclipse Ganymede com o plugin Qt, o Eclipse é um projeto de IDE para desenvolvimento em varias linguagems de programação e multiplataforma, foi iniciado pela IBM®, hoje é administrado pela Eclipse Foundation, a versão Ganymede é para C++ e pode desenvolver aplicativos Qt usando o plugin Qt.
No Windows® também esta disponível os bancos de dados open source, como PostgreSQL e MySQL bem como bancos de dados proprietarios como Oracle® , DB2® e Interbase® todos acessados pela Qt. Também ressalto que tudo isto esta disponível para quem pretende usar somente Windows® e não pretende migrar para outro OS, esta é a grande vantagem da Qt.
Abaixo, um sistema de vendas e controle de estoque desenvolvido por mim e compilado no Windows® e no Linux.
Sistema de vendas e controle de estoque rodando no Windows®.(Clique na imagem para ampliar).
Sistema de vendas e controle de estoque rodando no Linux.(Clique na imagem para ampliar).

Sistema para conexão a Internet.
Abaixo segue outro exemplo, um pequeno programa que eu fiz para automatizar a conexão a internet no Debian, que é a distribuição que eu uso.
É necessario criar permisões de administrador(root) para dois comandos editando o arquivo /etc/sudoers.
Abaixo, tela principal do sistema de conexão.(Clique na imagem para ampliar).
Abaixo, mensagem após pressionado o botão conectar.
Abaixo, mensagem após pressionado o botão estado da conexão.
Abaixo, mensagem após pressionado o botão desconectar.
As informações apresentadas neste site, bem como os tutoriais, não tem absolutamente nenhuma garantia implícita ou explicita decorrente de seu uso, podem ser copiadas,referenciadas, distribuídas e utilizadas, desde que expressamente citada esta fonte e o crédito do autor.
É necessario criar permisões de administrador(root) para dois comandos editando o arquivo /etc/sudoers.
Abaixo, tela principal do sistema de conexão.(Clique na imagem para ampliar).
Abaixo, mensagem após pressionado o botão conectar.
Abaixo, mensagem após pressionado o botão estado da conexão.
Abaixo, mensagem após pressionado o botão desconectar.
As informações apresentadas neste site, bem como os tutoriais, não tem absolutamente nenhuma garantia implícita ou explicita decorrente de seu uso, podem ser copiadas,referenciadas, distribuídas e utilizadas, desde que expressamente citada esta fonte e o crédito do autor.
Sua opinião é muito importante.
Colabore com o site.
Envie suas duvidas, sugestões, criticas ou sua colaboração (Artigos ou tutoriais).
Entre em contato para contratar trabalhos Freelancer ou consultoria sobre projetos em Qt.
Colabore com o site.
Envie suas duvidas, sugestões, criticas ou sua colaboração (Artigos ou tutoriais).
Deixe seu comentário:
Entre em contato para contratar trabalhos Freelancer ou consultoria sobre projetos em Qt.
E-Mail:
Sobre o autor:
Mapa do Site
Projetos do autor:
Tutoriais do autor:
- Tutorial: Introdução a construção(building) de um aplicativo Qt (Qmake, moc, uic e make), versão pdf
- Tutorial: Introdução a construção(building) de um aplicativo Qt (Qmake, moc, uic e make), versão HTML
- Tutorial: Desenvolvendo um aplicativo cliente/servidor em C++ Qt/Kdevelop, versão pdf
- Tutorial: Desenvolvendo um aplicativo cliente/servidor em C++ Qt/Kdevelop, versão HTML
- Tutorial: Criando um relatório para o aplicativo com o Kugar, versão pdf
- Tutorial: Criando um relatório para o aplicativo com o Kugar, versão HTML
- Tutorial: Integrando o Agata Report a um aplicativo Qt, versão pdf
- Tutorial: Integrando o Agata Report a um aplicativo Qt, versão HTML
- Tutorial: Integrando o openRPT a um aplicativo Qt, versão pdf
- Tutorial: Integrando o openRPT a um aplicativo Qt, versão HTML
- Tutorial: Compilando a Qt no Windows®
- Tutorial – Gerando senhas criptografadas em um aplicativo Qt com QCA: Qt Cryptographic Architecture , versão pdf
- Tutorial – Gerando senhas criptografadas em um aplicativo Qt com QCA: Qt Cryptographic Architecture , versão HTML
- Tutorial: Bloqueando um sistema Qt após inatividade do mouse ou teclado, versão pdf
- Tutorial: Bloqueando um sistema Qt após inatividade do mouse ou teclado, versão HTML
Geração de relatórios:
Arquivos fontes dos tutoriais:
- Desenvolvendo um aplicativo cliente/servidor em C++ Qt/Kdevelop
- Programa de conexão a internet
- Criptografia QCA e bloqueio do sistema
- Arquivos exemplo openRPT
Dicas Qt Linux
Dicas Qt Windows®
- Compilar o driver Qt PostgreSql no Windows®
- Compilar o driver Qt MySql no Windows®
- Compilar o driver Qt Firebird no Windows®
- Enriquecendo o ambiente de programação no Windows® com software Open Source
Links relacionados a Qt:
- Qt Software, desenvolvedora da biblioteca Qt
- Kdevelop, a IDE para desenvolvimento.
- Documentação do Kdevelop em português.
- qt-kde-br, lista de programação em Qt e KDE.
- qt-sp | Google Groups, lista de programação em Qt
- Prog-br, lista de programação para Linux.
- Forum, FAQ, documentação e indicações sobre QT.
- Qt-interest, lista de programação em Qt.
Tutoriais e apostilas Qt online:
- Qt Tutorial
- Tutorial API Gráfica Qt
- The Independent Qt® Tutorial
- Instalando e escrevendo sua primeira aplicação Qt no Windows
- Ambiente de programação C++/Qt no Eclipse
- Criando e compilando um projeto Qt na linha de comandos
- Criando uma aplicação gráfica com o Qt Designer
- Iniciando no QT, parte I
- Iniciando no QT, parte II - Sinais, Slots e Timers
- Iniciando no QT, parte III - qmake e .pro
- Mini curso de C++ e Qt
Tutoriais e apostilas Qt para Downloads:
- Apostilas sobre programação em Qt
- Apostila C++ GUI Programming with Qt 3
- Apostila C++ GUI Programming with Qt 4
- Construindo um jogo simples com o QCanvas da Qt
- Qt: Desenvolvendo Interfaces Gráficas em C++
- Desenvolvimento Cross-Platform em C++ com Qt (+fontes)
- The Book of Qt-4 The Art of Building Qt Applications
- Desenvolvimento de Software Livre com o Qt4 / KDevelop 3.4
Videos didaticos sobre Qt:
- Qt Designer
- Make Firefox Preference dialog in Qt Designer.
- Creating interactive QT hello world GUI application using QT Creator.
- Qt Creator - 01 An Introduction
- Qt Creator - 02 My first creation
- Qt Creator - 03 Smart Code Completion
- Qt Creator - 04 Editor keyboard shortcuts
Links programação C++:
- GCC Home Page - GNU Project - Free Software Foundation (FSF)
- MinGW, versão para Windows® do GCC
- Projetos for Linux - Documentação
- C/C++ - Artigos, tutoriais e dicas relacionados a C/C++/C#
- C, C++ - Linha de Código
- Entendendo C++
- Referência rápida de C++
- C++ Library Reference
Downloads tutoriais C++:
- Apostila C++ André Duarte Bueno, disponivel no site Software livre Unicamp
- C / C++ e Orientação a Objetos em Ambiente Multiplataforma
Bancos de dados:
- PostgreSQL
- Comunidade brasileira PostgreSQL
- Administração - pgAdmin
- Administração - TOra - Postgre e Oracle
- _________________________________
- MySQL
- Comunidade MySQL Brasil
- Administração - MySQL Administrator e MySQL Query Browser
- _________________________________
- Firebird
- FireBase - Firebird Brasil
- Administração - FlameRobin
- _________________________________
- Oracle
- GPO - Grupo de Profissionais Oracle
- GUORS - Grupo de Usuários Oracle
- Linux:Oracle - Comunidade
- Administração - Oracle SQL Developer
- Administração - TOra
- _________________________________
- Projeto Kevora - Uma IDE para Banco de Dados