Primeiros Passos no Qt

Após algum tempo sem postar no KDE-RS, estou de volta com um bom assunto para comentar. Partirei do princípio de que o pessoal já conhece o Qt e sabe o que ele é capaz de fazer. Andei trabalhando um bocado com o mesmo durante o mês de setembro, num trabalho de faculdade, mais especificamente. A professora havia liberado o uso de qualquer tecnologia, achei que seria interessante trabalhar com este framework. Já tenho experiência com C++ faz uns 7 meses, aproximadamente, e posso dizer que aprendi bastante durante este período. Ainda brigo um pouquinho com os ponteiros e os segfaults, mas, acredito que seja tudo normal. :) Já estava lendo e estudando há um tempo sobre o Qt, e, pelo que vi, achei muito interessante, tanto é que vivo divulgando ele pela faculdade. Eu comecei efetivamente a desenvolver nesse framework neste trabalho, tinha alguma noção das classes e módulos, porém muito pequena antes disso. Manipulei muito mais com o QtGui do que com o resto dos módulos disponíveis, pois só estava utilizando como toolkit para interface gráfica. Primeiro, comecei com um diálogo bem simples, algo do tipo “Hello World!”:

#include<QtGui/QApplication>
#include<QtGui/QLabel>
int main(int argc, char* argv[])
{
QApplication app(argc,argv);
QLabel label(“Hello World!”,window);
label.show()
return app.exec();
}
Não imaginei que seria tão fácil assim. Tenho poucas experiências em interfaces gráficas, um pouquinho de GTK+, quase nada, e o Swing, do Java, do qual prefiro manter distância, da linguagem e do toolkit gráfico. :) Claro, isso reproduz uma aplicação em Qt extremamente simples, nem layouts e botões tem na configuração desta janela, porém, já é um bom começo. Acho que no dia que criei este pequeníssimo programa, eu demorei mais fazendo o arquivo de configuração do CMake do que o próprio código, devido a incômodos com as headers do Qt, pois no exemplo mostrava sempre #include<QtGui>, e na prática nunca funcionava, até que me dei conta de que as aplicações nos exemplos eram compiladas pelo qmake. Baita mancada minha, mas, ainda bem, não me custou um dia inteiro, acho que só uma tarde, menos mal. :) Agora, vamos dar algumas incrementadas neste programa em Qt, para deixar com um visual, digamos, mais interessante:
#include<QtGui/QApplication>
#include<QtGui/QLabel>
#include<QtGui/QPushButton>
#include<QtGui/QVBoxLayout>
int main(int argc, char* argv[])
{
QApplication app(argc,argv);
QWidget *window = new QWidget();
QLabel *textone = new QLabel(“Just another text.”,window);
QLabel *texttwo = new QLabel(“Hello World!”, window);
QPushButton *ok = new QPushButton(“OK”,window);
QVBoxLayout *vbox = new QVBoxLayout();
vbox->addWidget(textone);
vbox->addWidget(texttwo);
vbox->addWidget(ok);
window->setLayout(vbox);
window->resize(320,240);
window->show();
return app.exec();
}
Aqui introduzo dois conceitos bastante importantes ao trabalhar com esta toolkit gráfica. Todos os widgets podem respeitar um determinado layout, bastando apenas eles estarem ligados a este; o mesmo serve para o widget principal, seja ele um QWidget, QMainWindow ou um QDialog. Resumindo, um widget é o componente básico da janela, e um layout é um conjunto deles. Podemos também ter vários layouts, variando de horizontal a vertical, dependendo do que se deseja desenhar de interface gráfica. O normal é sempre ter de um a três na vertical, e vários na horizontal. Pelo menos é assim que sempre faço. Acredito que tenha conseguido pelo menos introduzir o pessoal que anda interessando em programar em Qt/C++, e incentivá-los a desenvolver nesta ótima tecnologia, que possui uma boa documentação e uma estrutura extremamente organizada, além de ser livre (LGPL) e multiplataforma, o que torna-o uma excelente opção, de desenvolvedores independentes a empresas. Pretendo falar também um pouco de sinais e slots, muito importantes dentro do Qt, especialmente para tratamento de eventos, mas, isso é assunto para outra hora. Ficasse interessado? Seguem os links de documentação do Qt e de exemplos, muito úteis para quem está começando a programar neste ótimo framework:
Ah, e também não posso me esquecer do Qt Assistant, que me ajuda nas (diversas) horas em que estou off-line. Ele está incluso no Qt SDK. Para baixar o Qt, conforme teu gosto, SO, ou licença, basta entrar no seguinte site:

5 Responses to Primeiros Passos no Qt

  1. Camila San says:

    quanto mais eu estudo java, mais eu gosto de C++ :)
    e é bem isso, o Qt tem muita documentação mesmo! e uma comunidade super ativa, além de ser a base do KDE :D
    que tal incluir uns links para o pessoal estudar?
    mandou bem!

    • William Lagos says:

      Acabei de incluir os links. Havia me esquecido. Muito obrigado pelo elogio! :D Pois é, o C++ parece tão mais interessante que o Java, ainda mais com as inúmeras boas bibliotecas e frameworks disponíveis, dentre eles o Qt, e uma sintaxe mais inteligente e organizada, na minha opinião.

    • William Lagos says:

      Acabei de incluir os links. Havia me esquecido. Muito obrigado pelo elogio! :D É sempre bom ver teus comentários nas minhas postagens. Pois é, o C++ parece tão mais interessante que o Java, ainda mais com as inúmeras boas bibliotecas e frameworks disponíveis, dentre eles o Qt, e uma sintaxe mais inteligente e organizada, na minha opinião.

  2. O primeiro exemplo pode ser reduzido.

    #include
    #include

    int main(int argc, char *argv[]){
    QApplication app(argc, argv);
    QLabel l(“Oi mundo);
    l.show();
    return app.exec();
    }

    já que qualquer widget de Qt é sua própria janela.

    • William Lagos says:

      Já corrigido. Tava em dúvida se poderia por o QLabel direto como própria janela, aí deixei ligado ao QWidget só por precaução. Muito bom saber de que posso usar qualquer widget como própria janela. Muito obrigado pela ajuda!

Deixe um comentário