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: #
1. Introdução
[1] Comentário enviado por
fabio em 13/03/2004 - 05:32h:
Olá,
Excelente artigo, curti bastante o Qt Designer, já venho ouvindo falar dele faz tempo, mas realmente só agora acompanhando o artigo que tomei coragem para testá-lo. Aqui no Debian Sid (unstable) não tive os problemas de compilação citados. Para ter o Qt Designer instalado só precisei dos seguintes pacotes:
# apt-get install qt3-designer libqt3-dev libqt3-headers
[]'s
[2] Comentário enviado por
jeffestanislau em 16/03/2004 - 08:14h:
Show de bola, muito interessante esta feramenta...
Parabéns pelo artigo!!!
[3] Comentário enviado por
ivandourado em 15/05/2004 - 23:10h:
uma vez tentei fazer algo e não consegui. com este artigo vou tentar novamente. acho que agora eu consigo.
[4] Comentário enviado por
freestyle em 31/05/2004 - 01:39h:
show este artigo!!! parabens!!
Mto massa o software!
[5] Comentário enviado por
LMaster em 14/06/2004 - 15:22h:
Excelente artigo cara!!!.... show de bola...
mais contribuições desse tipo deveriam ser expostas aqui...
[6] Comentário enviado por
ice2642 em 22/07/2004 - 22:08h:
Legal o seu artigo.
muito legal o QT, só por curiosidade, existe uma versão do qt para windows, usando o QT do windows o programa resultante vai precisar o gtk como o gimp para windows por ex ? ou ele vai usar o API do windows ?
[7] Comentário enviado por
HunZ em 03/09/2004 - 16:58h:
Legal o artigo :)
Legal esse QT..
abraços,
fique com Deus.
[8] Comentário enviado por
sucupira22 em 28/09/2004 - 17:05h:
POw...tipo eu to começando a mexer com isso...vc por acaso nao teria um tutorial do qtdesigner em português perdido por ae?
valeu
[9] Comentário enviado por
waraujobh em 11/11/2004 - 04:03h:
O artigo funciona mas as coisas não foram feitas de um jeito muito "marretado".
Para que todos os usuários possam usar o "qmake", basta criar um link simbólico para o mesmo no diretório "/usr/bin" (que deve - e provavelmente está - estar presente na variável de ambiente $PATH dos mesmos; Pra saber qual é o valor de uma variável de ambiente, basta digitar 'echo $[nome da variável]'). O comando fica assim:
%>ln -s /usr/lib/qt3/qmake /usr/bin/qmake
Além disso, copiar as bibliotecas do QT não é uma boa prática de administração. Toda vez que atualizar o QT, terá que copiá-las. Sem falar que, caso pense em removê-las, :-( "No good!"
Precisa é saber o porquê da variável $QTDIR não estar sendo exportada.
Mas de qualquer forma, parabéns pelo artigo. Muito bom pra incentivar o uso do QT. Eu mesmo nunca havia usado antes.
[10] Comentário enviado por
slask em 21/01/2005 - 21:10h:
Mto bom a artigo! Bem esclarecedor!!
[11] Comentário enviado por
lidyon em 23/01/2005 - 09:23h:
coloca isso no seu $HOME/.bashrc ou $HOME/.bash_profiles (depende da distro) que as váriáveis derão exportadas quando vc chamar o shell, se o .bashrc
ou .bash_profiles não existir crie-o em seu HOME com esse conteudo (observe que é arquivo oculto , começa com '.'):
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
[12] Comentário enviado por
zezinhorr em 11/06/2005 - 10:29h:
muito bom o seu arquivo, espero ver outros com o mesmo assumto
[13] Comentário enviado por
Serafim em 14/10/2005 - 16:32h:
Legal o seu artigo. Um amigo me falou uma vez que o QT era meio pesadão e tinha alguns problemas, nunca o utilizei, portanto não posso confirmar isso. Gostaria de saber se essa informação procede, pois preciso desenvolver um sistema em Perl e pensei em usar o QT e por conta dessas informações estou pensando em mudar para TK. O que vc acha ?
[14] Comentário enviado por
scapinello em 15/03/2006 - 11:34h:
Seu artigo é muito Bom, é mais uma referência, para os aficionados por aplicativos gráficos para o mundo open source. Espero que o QT e outras ferramentas se tornem mais pupulares. É o unico caminho que vejo para acabar com o império de Gates.
Mais uma vez parabéns pela contribuição
[15] Comentário enviado por
taynealmeida em 19/04/2006 - 10:59h:
muito legal o seu artigo, é simples e fácil de entender!
gostei muito!
se tiver mais artigos sobre o assunto gostaria de ficar sabendo.
[16] Comentário enviado por
netShot em 07/07/2006 - 13:09h:
excelente artigo .. em breve estarei migrando de delphi/windows pra c/c++/linux
[17] Comentário enviado por
eng.paulinho em 26/07/2006 - 09:52h:
Poutz cara era o que eu tava procurando a um tempo..... fiz o exemplo acima.... muito bom, valeu pela ajuda!
[18] Comentário enviado por
removido em 01/08/2006 - 02:58h:
Parabens...exelente artigo.
[19] Comentário enviado por
thiago_mtr em 23/08/2006 - 20:45h:
Muito bom artigo, muito bom para incentivar os usuários a usarem o QT e programação c/c++.
Parabéns.
Thiago Martins ^_^
[20] Comentário enviado por
myninox em 19/07/2007 - 00:38h:
deu só um problema quando eu executei o programa porque alguem sabe.
$ ./qtExample
QPixmap: Invalid pixmap parameters
X Error: BadWindow (invalid Window parameter) 3
Major opcode: 18
Minor opcode: 0
Resource id: 0x0
X Error: BadWindow (invalid Window parameter) 3
Major opcode: 12
Minor opcode: 0
Resource id: 0x0
X Error: BadWindow (invalid Window parameter) 3
Major opcode: 20
Minor opcode: 0
Resource id: 0x0
X Error: BadWindow (invalid Window parameter) 3
Major opcode: 18
Minor opcode: 0
Resource id: 0x0
X Error: BadWindow (invalid Window parameter) 3
Major opcode: 8
Minor opcode: 0
Resource id: 0x0