Uso o
Linux há alguns anos, sempre acompanho os seus melhoramentos e
que melhoramentos.
Uso atualmente o MDK 9.1 com KDE 3.1, pois pareceu-me mais estável.
Com este, podemos instalar vários ambientes de programação. Em evolução
constante, podemos encontrar o
Qt Designer. Este é um ótimo
gerenciador de projetos em C++.
Problemas
Utilizo a versão 3.1.1, que veio ótima, sem alguns bugs da versão
anterior. Ótima até iniciarmos a compilação com o
qmake. O
Makefile produzido parece não reconhecer os diretórios dos
binários nem das bibliotecas.
Programando
Vamos criar um projeto C++ bem simples:
- Inicie o Qt Designer.
- Selecione "C++ Project" para iniciar um novo projeto. Entre com o nome
do projeto em "Project File". Por exemplo, /Projects/qtExample.pro.
- Na aba C++, entre com "thread" em Config e clique em Ok.
Pronto! Criamos nosso projeto.
Vá em
File > New ou simplesmente clique em Ctrl + N. Será aberta
o diálogo
New File. Neste, selecione
Dialog. Redimensione-o
e insira um novo botão "pushButton1". Modifique sua propriedade Text
para "Ok".
Clique em
Conecct Signal/Slots ou simplesmente pressione F3. Observe
que o ponteiro do mouse modificou-se. Clique no botão Ok do formulário.
Veja que formou uma áurea em torno do botão. Clique agora no formulário.
Surgirá o diálogo
View and Edit Connections.
Qt Designer em ação.
Na coluna Signal clique sobre No Signal e selecione
Clicked (). Em Receiver escolha o Form1. Vá agora até Slot. Clique sobre No Slot e selecione Close().
Seu programa já está funcional. Clique em Preview >
Preview Form. Maravilha, não?
Salve seu formulário de diálogo. Por exemplo, /Projects/frmqt.ui.
Main file.
O próximo passo é criarmos o código básico que irá iniciar nosso formulário.
Clique em New > File e escolha C++ Main-File (main.cpp).
Clique em Ok e veja que surgirá o diálogo Configure Main-File. Observe que
em Main-Form só existe o formulário que criamos anteriormente. Clique em Ok.
Código do arquivo main.cpp.
Seu projeto já está pronto. Sai do Qt Designer. Observe no diretório do seu
projeto que foram criados três arquivos:
~/Projects/frmqt.ui /formulário do nosso projeto
~/Projects/main.cpp /código de inicialização do formulário
~/Projects/qtExample.pro /nosso projeto
Compilando
Nossos problemas surgem exatamente quando iniciamos a compilação de nosso
projeto. Entre num console e tente compilá-lo:
# qmake qtExample.pro
Tentei tanto como usurário quanto como root, não consigo iniciar o
qmake, já que este não se encontra em /bin ou /usr/bin e sim
/usr/lib/qt3/bin.
Então vamos até o qmake:
# /usr/lib/qt3/bin/qmake qtExample.pro
Observe que estamos dentro do diretório do nosso projeto. Podemos fazer
o comando acima como usuário normal. Será gerado o arquivo:
~/Projects/Makefile
Até aqui tudo bem.
# make
Veja o que acontece abaixo:
/bin/uic frmqt.ui -o .ui/frmqt.h
make: /bin/uic: Command not found
make: *** [.ui/frmqt.h] Error 127
Observe que o executável
uic não é encontrado, pois este
simplesmente se localiza em /usr/lib/qt3/bin. O que acontece é que o
make ao gerar o arquivo "Makefile" não conseguiu encontrar a
localização dos executáveis nem das bibliotecas.
O arquivo que inicializa o Qt Designer, designer, está ok. Veja abaixo.
Mas, parece não haver exportação dos respectivos paths.
#!/bin/sh
# Support script to properly set environments for Designer to run
export QTDIR=/usr/lib/qt3/
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
export MOC=/usr/lib/qt3/bin/moc
export UIC=/usr/lib/qt3/bin/uic
exec /usr/lib/qt3/bin/designer-real "$@"
Abra o arquivo "Makefile" e no início do arquivo escreva:
QTDIR = /usr/lib/qt3/
Teremos o problema de localização dos executáveis e das bibliotecas.
Mas, ainda teremos alguns erros, pois as bibliotecas lqt-mt
deveriam estar em /usr/X11R6 como as lXext, lX11, lm, etc. Veja a linha
22 do Makefile:
LIBS = $(SUBLIBS) -L$(QTDIR)/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -lpthread
Veja que as bibliotecas estão apontadas para /usr/X11R6/lib, então, copiei
todas as bibliotecas contidas em /usr/lib/qt3/lib, como root, para aquela
localização.
# cp /usr/lib/qt3/lib/*.* /usr/X11R6/lib
Agora utilize o comando make. Rode-o como usuário comum:
# make
Pronto! Já tem seu executável. Rode-o:
# ./rdl
OBS: algumas vezes, apesar de termos alterado na aba C++ Config como
"thread", essas mudanças não são salvas em rdl.pro. Antes de
compilar, de uma observada no código deste arquivo e procure a linha:
CONFIG += thread
Se não estiver assim, altere-a e salve-a.
Comentários ou sugestões serão bem vindos: #