TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

fabianocsilva
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 11 Nov 2010 21:50
Localização: Santa Maria - RS

Re: TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por fabianocsilva »

Ola Stanis!

Muito bom o exemplo, compilei e rodei está 100%, agora vou estudar ele para começar a aplicar as minhas necessidade.

Abraços.
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Re: TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por Stanis Luksys »

Opa,
fabianocsilva escreveu:Muito bom o exemplo, compilei e rodei está 100%, agora vou estudar ele para começar a aplicar as minhas necessidade.
Ficou bem legal né... Mas deixa eu te falar, eu estava revendo aqui e quando eu fiz este tutorial eu tinha usado a QT 6.1 com o Harbour 2.1. Agora estive testando com as versões 7.1 da qt e Harbour corujão e de fato ficou bem melhor convertendo os forms .UI em prg como o clord falou há algum tempo.

Apesar de o uso da classe TFormUi ter ficado totalmente funcional, não estou recomendando seu uso, vale mais como exemplo. Refiz este mesmo programa agregando agora a conversão de UI-PRG e a geração de arquivos de recursos e ficou bem melhor.

Vou disponibilizar para download lá também, acho que você vai preferir.

Uma última observação quanto a este programa em específico é que se você tiver usando o compiz-fusion como gerenciador de janelas, precisa fazer umas alterações em suas configurações pro plugin do flash player funcionar...

Abraços!
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Re: TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por Stanis Luksys »

Opa,

Atualizei lá no site o exemplo e agora não usa mais a TFormUi, sendo que os forms desenhados na Qt-Designer são automaticamente convertidos para prg. Adicionei também o arquivo de recursos.

Ficou bem legal, não precisa mais enviar o form nem as imagens pro usuário.

http://sites.google.com/site/hblibs/exe ... e-com-hbqt

Abraços!
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
fabianocsilva
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 11 Nov 2010 21:50
Localização: Santa Maria - RS

Re: TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por fabianocsilva »

Ola Stanis!

Não estou conseguindo compilar a ultima versão do teu exemplo
aparece os seguintes erros em negrito:


hbmk2: plugin: Error: Intermediate file (/tmp/hXc0MY) is not an .uic file.
hbmk2: Harbour: Compilando módulos...
Harbour 2.1.0beta2 (Rev. 15824)
Copyright (c) 1999-2010, http://harbour-project.org/
Compiling 'youtube.prg'...
Lines 877, Functions/Procedures 10
Generating C source output to '.hbmk/linux/gcc/youtube.c'... Done.
Compiling 'util.prg'...
Lines 924, Functions/Procedures 2
Generating C source output to '.hbmk/linux/gcc/util.c'... Done.
Compiling '.hbmk/linux/gcc/rcc_res.prg'...
Lines 930, Functions/Procedures 1
Generating C source output to '.hbmk/linux/gcc/rcc_res.c'... Done.
Cannot open .hbmk/linux/gcc/uic_Main.prg, assumed external

No code generated.
hbmk2: Erro: Executando o compilador Harbour (interno): 1
('/usr/local/bin/harbour)' -n2 youtube.prg util.prg .hbmk/linux/gcc/rcc_res.prg .hbmk/linux/gcc/uic_Main.prg -w3 -es2 -o.hbmk/linux/gcc/ -i/usr/local/include/harbour -i/ico/fabiano/ft/harbour-project/trunk/harbour/contrib/hbqt/qtcore -i/ico/fabiano/ft/harbour-project/trunk/harbour/contrib/hbqt -i/ico/fabiano/ft/harbour-project/trunk/harbour/contrib/hbqt/qtgui -i/ico/fabiano/ft/harbour-project/trunk/harbour/contrib/hbqt/qtnetwork -i/ico/fabiano/ft/harbour-project/trunk/harbour/contrib/hbqt/qtuitools -i/ico/fabiano/ft/harbour-project/trunk/harbour/contrib/hbtip

Se souber da solução me avise.

Abraços
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Re: TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por Stanis Luksys »

Opa,

Primeiro, faça novamente o download, pois alterei algumas coisas.

Em seguida, verifique se dentro no arquivo youtube.hbp estão os caminhos corretos para os respectivos HBC de cada lib. Além disso altere o hbqt.hbc para incluir a qtwebkit, aliás descomente tudo que tiver comentado lá, provavelmente está comentado o uitools, e aí da pau na conversão. Veja se você tem hbqtuitools compilada!

Para compilar, utilize o comando:

Código: Selecionar todos

hbmk2 youtube.hbp
Teoricamente, assim deveria funfar. Se o erro persistir, recompile a versão do SVN ou a versão corujão do Harbour, que no Linux é bem mais tranquilo que no WIndows.

Procure baixar o harbour para /usr/src e instalar em /usr.

Desta forma ele seguirá o padrão:

/usr/bin -> binários
/usr/src/harbour -> código
/usr/lib/harbour -> libs
/usr/include/harbour -> cabeçalhos
etc

Após compilação e intalação, retire qualquer variável de ambiente referente ao Harbour, ele não precisará de nada disso e pode até mesmo atrapalhar.

Abraços.
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
fabianocsilva
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 11 Nov 2010 21:50
Localização: Santa Maria - RS

Re: TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por fabianocsilva »

Ola Stanis!

Recompilei o Harbour do trunk e funcionou, valeu a dica.

Abraços.
chrissoares
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 23 Dez 2009 14:35
Localização: Belo Horizonte/MG
Contato:

TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por chrissoares »

Pessoal,

Estou apanhando muito para conseguir fazer o meu programa utilizar um arquivo .ui. Vi, pelo exemplo do Stanis, que é criado um .prg a partir do arquivo .ui, mas eu tentei seguir o exemplo e não consegui.

Abaixo estão: meu PRG, script de compilação HBP e o retorno da compilação.

Teste.prg

Código: Selecionar todos

#include "hbclass.ch"
procedure Main()
	local oApp
	local oDialogo, oUi, oArq
	local cArq := "teste.ui"

	oApp	:= qApplication():new()
	if File(cArq)
		oArq := QFile():new(cArq)
		if oArq:open(1)
			oUi:= QUiLoader():new()
			oDialogo := QDialog():configure(oUi:load(oArq))
			oArq:Close()
		endif
		
	endif
	oDialogo:show()
	
	oApp:Exec()
	
	oApp:Quit()

return
Teste.hbp

Código: Selecionar todos

-w3 -es0
-oTeste.exe
-gui

c:\hb21\contrib\hbqt\hbqt.hbc

teste.prg 

teste.ui
Compilação:

Código: Selecionar todos

hbmk2 teste.hbp

Harbour 2.1.0rc2 (Rev. 16901)
Copyright (c) 1999-2011, http://harbour-project.org/
Compiling 'teste.prg'...
Lines 89, Functions/Procedures 1
Generating C source output to 'C:\DOCUME~1\CHRIST~1.WSO\CONFIG~1\Temp\hbmk_64hua
y.dir\teste.c'... Done.
Compiling 'C:\DOCUME~1\CHRIST~1.WSO\CONFIG~1\Temp\hbmk_64huay.dir\uic_teste.prg'
...
Lines 2392, Functions/Procedures 1
Generating C source output to 'C:\DOCUME~1\CHRIST~1.WSO\CONFIG~1\Temp\hbmk_64hua
y.dir\uic_teste.c'... Done.
C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_64huay.dir/teste.o:teste.c:(.data+0x
88): undefined reference to `HB_FUN_QUILOADER'
collect2: ld returned 1 exit status
hbmk2: Erro: Executando linkeditor. 1
gcc.exe C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_64huay.dir/teste.o C:/DOCUME
~1/CHRIST~1.WSO/CONFIG~1/Temp/hbmk_64huay.dir/uic_teste.o C:/DOCUME~1/CHRIST~1.W
SO/CONFIG~1/Temp/hbmk_64huay.dir/hbmk_m9dlso.o C:/DOCUME~1/CHRIST~1.WSO/CONFIG~1
/Temp/hbmk_64huay.dir/hbmk_fwf2bj.o    -mwindows -Wl,--start-group -lsupc++ -lhb
qtcore -lQtCore4 -lhbqtgui -lQtGui4 -lhbqtnetwork -lQtNetwork4 -lhbqtsql -lQtSql
4 -lgtqtc -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca
 -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx
 -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon
-lhbmainwin -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -lwinspool -lcomctl3
2 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32
-lmsimg32 -lwininet -lhbpcre -lhbzlib   -Wl,--end-group -oTeste.exe  -Lc:/hb21/l
ib/win/mingw -Lc:/hb21/bin
Alguém pode dar alguma ajuda ?

Obrigado e abraços a todos!
Christiano R. Soares
Analista Desenvolvedor
www.bhdados.com.br

'Tudo o que fizerem, façam de todo o coração, como para o Senhor, e não para os homens, sabendo que receberão do Senhor a recompensa da herança. É a Cristo, o Senhor, que vocês estão servindo. '
Colossenses 3:23-24
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por Stanis Luksys »

Olá chrissoares,

Eu precisaria dar uma olhada no último código quer tá la no meu site, há algum tempo que não mexo então não me lembro, porém o erro mostra que não esta linkando a lib que tem a função quiloader.

Eu diria que provavelmente falta você compilar os fontes das bibliotecas da Qt que só vem na contrib e não vem na versão que baixa do site sem os fontes.

Se você ler a minha ultima mensagem antes dessa, poderá ver uma recomendação que talvez te sirva:
...Além disso altere o hbqt.hbc para incluir a qtwebkit, aliás descomente tudo que tiver comentado lá, provavelmente está comentado o uitools, e aí da pau na conversão. Veja se você tem hbqtuitools compilada!
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
chrissoares
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 23 Dez 2009 14:35
Localização: Belo Horizonte/MG
Contato:

TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por chrissoares »

Obrigado Stanis,

Eu consegui descobrir como faz para que o Hbmk2 converta o arquivo .ui para .prg, bastando colocar este arquivo no script .hbp.
Agora a luta é com o campo QDateEdit, o qual eu não consigo colocar uma data via código de maneira alguma. Já tentei .setDate(ano, mes, dia) mas nem assim funcionou.

Obrigado pela atenção!
Vamos em frente descobrindo as manhas dessa QT!

Abraços a todos!
Christiano R. Soares
Analista Desenvolvedor
www.bhdados.com.br

'Tudo o que fizerem, façam de todo o coração, como para o Senhor, e não para os homens, sabendo que receberão do Senhor a recompensa da herança. É a Cristo, o Senhor, que vocês estão servindo. '
Colossenses 3:23-24
Avatar do usuário
Dr.Microso
Usuário Nível 3
Usuário Nível 3
Mensagens: 173
Registrado em: 12 Jan 2009 21:26
Localização: Belo Horizonte, MG

TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por Dr.Microso »

Ao Cristhiano e a quem aqui chegar pelo mesmo motivo...
chrissoares, escreveu:"...Agora a luta é com o campo QDateEdit, o qual eu não consigo colocar uma data via código de maneira alguma. Já tentei .setDate(ano, mes, dia) mas nem assim funcionou."
É necessário empregar a classe QDate antes.
Note que no exemplo apenas uso o próprio Widget QDateEdit...

Código: Selecionar todos

#include "hbqtgui.ch"
*-----------------
procedure main
*-----------------
local oApp, oD1, oD2, data:=Date( )   //data atual                              

oApp:=QApplication( )
   oD1:=QDate(year(data), month(data), day(data))           
       oD2:=QDateEdit( )
       oD2:setDate( oD1 )

       oD2:show( )
oApp:exec( )

return
Imagem
Mas, se a intenção fosse inserir uma data específica, como exemplo: 13/08/1970

Código: Selecionar todos

#include "hbqtgui.ch"
*-----------------
procedure main
*-----------------
local oApp, oD1, oD2

oApp:=QApplication( )
   oD1:=QDate( 1970, 13, 08 )           
       oD2:=QDateEdit( )
       oD2:setDate( oD1 )

       oD2:show( )
oApp:exec( )

return
Imagem
Um abraço!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
chrissoares
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 23 Dez 2009 14:35
Localização: Belo Horizonte/MG
Contato:

TUTORIAL: Harbour com QT-Designer. Uma combinação perfeita!

Mensagem por chrissoares »

Dr.Microso escreveu:Ao Cristhiano e a quem aqui chegar pelo mesmo motivo...
Obrigado pela ajuda, acredito que outros além de mim vão se beneficiar dela.
Realmente são formas de fazer que não estamos acostumados, mas nada como ir dando os passos para se entender como ficar de pé.

Eu parei de estudar a QT infelizmente, pois a migração da aplicação iria levar muito tempo devido ao aprendizado com a QT. Mas vou brincando com ela na medida do possível. Acredito que seja uma ótima opção para se migrar os aplicativos de interface texto para gráfica, os recursos são ótimos, então quem tiver disponibilidade deve continuar desvendando os caminhos da QT.

Abraços e que Deus continue nos abençoando!
Christiano R. Soares
Analista Desenvolvedor
www.bhdados.com.br

'Tudo o que fizerem, façam de todo o coração, como para o Senhor, e não para os homens, sabendo que receberão do Senhor a recompensa da herança. É a Cristo, o Senhor, que vocês estão servindo. '
Colossenses 3:23-24
Responder