Tags: #c++ #programação #qt
Inicio agora uma série de artigos sobre como programar em Qt.
O que é a Qt ?
A Qt (lê-se cute – igual a fofo mesmo) é uma biblioteca para desenvolvimento de aplicações.
Está contida nela a biblioteca e uma IDE, o qtcreator. É uma ótima IDE, mas não é obrigatória.
Ao invés de começar usando o QtCreator, vamos fazer um projeto simples na mão para que se entenda como tudo funciona por baixo dos panos – E isso é muito importante.
Dependências
Arquitetura básica
Um projeto em Qt, tem a seguinte arquitetura:
Nós vamos usar o qmake (gerador padrão de makefiles da Qt) para criar o projeto.
Inicialmente, vamos criar um arquivo main.cpp, colocando dentro o conteúdo:
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QString s="Teste de aplicação do Thiago";
QMessageBox::information(NULL, "AVISO", s); //Mostra uma mensagem na tela.
return 0;
}
Tendo o arquivo main.cpp criado, vamos criar o projeto.
No shell, dentro do diretório aonde está o main.cpp, vamos executar
$ qmake -project
o qmake, com esse parâmetro, irá criar um arquivo “.pro”. No meu caso, estou dentro do diretório TesteQt, será criado o arquivo TesteQt.pro
######################################################################
# Automatically generated by qmake (2.01a) sex 15. jan 16:09:32 2010
######################################################################
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS +=
SOURCES += main.cpp
Repare, que esse não é um makefile.
Agora, para compilar, faça no mesmo diretório
qmake
make
Rode o programa e veja o resultado.
O que acontece por baixo dos panos ?
O qmake, gera os makefiles.
O make gera os arquivos moc_* e compila a todos.
O responsável pela geração dos arquivos moc_* é o programa moc.
Ele faz a leitura das macros dos arquivos .cpp e .h
Vamos agora, incluir uma janela no nosso programinha.
crie os arquivos Teste.h e Teste.cpp e inclua os conteúdos
Teste.h
#pragma once
#include <QWidget>
class Teste : public QWidget
{
Q_OBJECT
public:
explicit Teste(QWidget *parent = 0);
signals:
public slots:
void sairEvent();
};
Teste.cpp
#include "Teste.h"
#include <QtGui>
Teste::Teste(QWidget *parent) :
QWidget(parent)
{
//Vamos criar o layout do widget
this->setLayout( new QVBoxLayout() );
//Cria-se agora um botao
QPushButton *btn = new QPushButton(this);
btn->setText("Clique para sair");
//Adiciona o botao no layout criado
this->layout()->addWidget(btn);
//Conecta o sinal clicked do botao recem criado no metodo sairEvent
connect(btn, SIGNAL(clicked()), this, SLOT(sairEvent()));
}
void Teste::sairEvent()
{
//Fecha este widget
this->close();
}
main.cpp
#include <QtGui>
#include "Teste.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//Cria classe e manda exibir janela
Teste teste;
teste.show();
return app.exec();
}
Ao executar, veja que foi criada uma janela com um botão no meio, e ao clicar nele, o widget será fechado e o programa terminado.
Podemos ver neste programinha
Após conseguir rodar este programa, sugestões para os próximos passos enquanto eu não escrevo o próximo artigo:
– Baixe a qt-sdk + qtcreator do site http://qt.nokia.com/
– Abra o QtCreator e comece a desenvolver seus programas por lá. (O QtCreator tem auto-complete dentre outras coisas muito interessantes).
– Leia a documentação extensa e excelente feita pelo pessoal da nokia/trolltech.
E agora, happy programming e é hora de fuçar e aprender!