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

Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

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

Mensagem por Toledo »

Olá Fábio, dê uma olhada no arquivo TESTBROW.PRG que está na pasta \contrib\hbqt\tests.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
binho_fasa
Usuário Nível 2
Usuário Nível 2
Mensagens: 93
Registrado em: 06 Jul 2004 12:53
Localização: Brazil
Contato:

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

Mensagem por binho_fasa »

Obrigado pelas dicas.
A QT é fantastica, mas exige estudo das opções, principalmente das mais avançadas. Acredito que o Futuro do Harbour passe por ela...
Aproveitando a mensagem, alguém sabe dizer se é possível usar a HbQT para produzir aplicações para o O.S. Symbian? A QT é a "linguagem" oficial para desenvolvimento de soluções para o Symbian.

[]´s
Fabio Souza
clrod
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 17 Nov 2009 13:42
Localização: São Paulo - SP

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

Mensagem por clrod »

Olá

Até onde eu sei ainda foi feito um teste oficial, mas o a ideia é que possa ser usada no Symbian sim.
dlemes
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 01 Mar 2010 15:19
Localização: Santa Maria

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

Mensagem por dlemes »

Olá pessoal,

Alguém conseguiu fazer rodar no linux ???
A demoqt.prg rodou normal, ai desenhei uma janela e fui usar o exemplo desse post e não funcionou, veja o erro abaixo.

Código: Selecionar todos

hbmk2 pacientes.prg TFormUI.prg -rebuild
hbmk2: Processing configuration: /usr/local/bin/hbmk.cfg
hbmk2: Compiling Harbour sources...
Harbour 2.0.0 (Rev. 13372)
Copyright (c) 1999-2010, http://www.harbour-project.org/
Compiling 'pacientes.prg'...
Lines 14, Functions/Procedures 1
Generating C source output to '.hbmk/linux/gcc/pacientes.c'... Done.
Compiling 'TFormUI.prg'...
Lines 3173, Functions/Procedures 5
Generating C source output to '.hbmk/linux/gcc/TFormUI.c'... Done.
hbmk2: Compiling...
hbmk2: Linking... pacientes
.hbmk/linux/gcc/TFormUI.o:(.data+0x148): undefined reference to `HB_FUN_QFILE'
.hbmk/linux/gcc/TFormUI.o:(.data+0x168): undefined reference to `HB_FUN_QUILOADER'
.hbmk/linux/gcc/TFormUI.o:(.data+0x198): undefined reference to `HB_FUN_QDIALOG'
.hbmk/linux/gcc/TFormUI.o:(.data+0x238): undefined reference to `HB_FUN_QT_FINDCHILD'
.hbmk/linux/gcc/TFormUI.o:(.data+0x2b8): undefined reference to `HB_FUN_QT_CONNECT_SIGNAL'
collect2: ld returned 1 exit status
hbmk2: Error: Running linker. 1
gcc .hbmk/linux/gcc/pacientes.o .hbmk/linux/gcc/TFormUI.o   -Wl,--start-group -lhbcplr -lhbdebug -lgpm -lharbour  -Wl,--end-group -opacientes -L/usr/lib/harbour

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 »

Olá,

Olha eu recompilei o Harbour aqui, e pelo que ví mudou toda a estrutura de libs da hbqt. Nem tive tempo ainda de ver o que de fato está diferente.

De qualquer forma, você nem sequer linkou as libs da qt pelo hbmk2. Procure usar os arquivos hbm e hbc da pasta hbqt do contrib que deve resolver. Veja este post logo acima: viewtopic.php?f=43&t=11165#p63524

O exemplo original do post foi compilado em Linux.

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.
dlemes
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 01 Mar 2010 15:19
Localização: Santa Maria

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

Mensagem por dlemes »

Valeu Stanis Luksys,

Compilou certinho, na verdade estou fazendo uns testes com qt-designer, fiz um form simples compilei e ai deu a seguinte mensagem ao rodar.

ao rodar da isso...

Código: Selecionar todos

QPixmap: Must construct a QApplication before a QPaintDevice
Abortado

Se souber o que é...
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 »

Então...

Você está instanciando a QApplication() numa var pública ou estática igual eu passei lá na primeira postagem? Deve ser isso o problema.

Seguindo esta linha., seu prg principal deve ter basicamente esta estrutura:

Código: Selecionar todos

STATIC qApp
PROCEDURE MAIN()
	qApp := QApplication()

	// AQUI VAI TODO O PROGRAMA

	qApp:exec()
	qApp:quit()
RETURN
Tenta e ve aí se funciona...
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.
dlemes
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 01 Mar 2010 15:19
Localização: Santa Maria

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

Mensagem por dlemes »

OPa valeu Stanis,

funcionou tudo certinho, só não consigo conectar os sinais...

tentei assim

oFormUi:evento( "oFormUi:bntSalvar", "clicked()", {|| MsgInfo("Clicou no botão salvar") } )

oFormUi:evento( "bntSalvar", "clicked()", {|| MsgInfo("Clicou no botão salvar") } )

Qt_Connect_Signal( "bntSalvar", "clicked()", {|| MsgInfo("Clicou no botão salvar") } )

Nenhum dos métodos funcionou....
Tem que fazer algo no designer ??? ou é só criar o botão mesmo ?? eu criei o botão e coloquei o nome dele bntSalvar

Obrigado.
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, tente sem as aspas, algo assim:

Código: Selecionar todos

oFormUi:evento( oFormUi:bntSalvar, "clicked()", {|| MsgInfo("Clicou no botão salvar") } )
Mas precisa criar a função msgInfo também.

Aliás, aguarde até hoje de noite que coloco aqui a classe já aprimorada, pois esta que está publicada neste topico foi apenas um primeiro teste. Agora já está mais completinha, inclusive com algumas adaptações pra versão mais recente da HBQT, que já conta com muito mais objetos.

Agora deixa eu te dizer... Neste mesmo fórum eu coloquei uma função pra previsão do tempo, e estava fazendo uns testes com a HBQT e coloquei a imagem da previsão da climatempo no cantinho direito da janela do programa, além de relógio analógico e calendário... Ficou show de bola, autênticos widgets! Essas coisas sempre incrementam o sistema... rs

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!

Parabéns pelo Tutorial!!
Conseguiu compilar os testes, tudo funcionando, mas ainda não consegui conectar ao botão. Se puderes colocar um exemplo de conexão com botão agradeço.

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,

No momento, acho que a melhor forma de conectar os sinais seria assim:

Código: Selecionar todos

oFormUI:btnSalvar:Connect("clicked()", {|| SuaFuncao() } )
Eu estou usando assim.

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 Pessoal!

Abaixo vai um exemplo que eu montei para exercitar a HBQT, conectando um botão, agora falta um exemplo com a QT-Designer, Chegamos lá.
Abraços!

Código: Selecionar todos

#include "hbqt.ch"

STATIC qApp
REQUEST HB_QT


INIT PROCEDURE Qt_Start()
   qApp := QApplication():new()
   RETURN
EXIT PROCEDURE Qt_End()
   qApp:quit()
   RETURN



PROCEDURE Main()

   LOCAL oMinhaJanela, oBtn

   oMinhaJanela := QMainWindow():new() 
   oMinhaJanela:show()

   oMinhaJanela:setWindowTitle( "Teste Harbour-Qt" )
   oMinhaJanela:setWindowIcon( "test" )
   oMinhaJanela:resize( 900, 500 )
   
   oMinhaJanela:setCentralWidget(QWidget(oMinhaJanela))

   oBtn := QPushButton():new(oMinhaJanela)

  
   oBtn:setText( "Clique")
   oBtn:move( 30,240 )
   oBtn:resize( 100,50 )
   oBtn:show()
   Qt_Connect_Signal( oBtn, "clicked()", {|| MsgInfo( "Botão Clicado")} )

   qApp:exec()

   xReleaseMemory( { oBtn, oMinhaJanela } )

RETURN

STATIC FUNCTION MsgInfo( cMsg )
   LOCAL oBox
   oBox:= QMessageBox():new()
   oBox:setInformativeText( cMsg )
   oBox:setWindowTitle( "Informação!" )
   oBox:exec()
   oBox := NIL
   HB_GCALL( .T.)
RETURN Nil

FUNCTION xReleaseMemory( aObj )
   LOCAL i
   FOR i := 1 TO len( aObj )
      IF hb_isObject( aObj[ i ] )
         aObj[ i ] := NIL   
      ELSEIF hb_isArray( aObj[ i ] )
         xReleaseMemory( aObj[ i ] )
      ENDIF
   NEXT
RETURN nil
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 »

Olá,

Qual versão do Harbour você está usando? Qual versão da QT? Windows ou Linux?

Eu acabei de colocar um exemplo acima do seu que funciona perfeitamente usando a QtDesigner com a TFormUi. Acontece que mudaram um monte de coisas na hbqt. tem função que nem existe mais ou mudou de nome! Essa função Qt_Connect_Signal() que você usou é uma que sumiu do mapa na última versão.

Alem disso a classe QUiLoader parece não funcionar no WIndows 7 de jeito nenhum, só no Linux..

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!

Estou usando a hbqt da versão do harbour 2.0 com Ubuntu 10.04, vou fazer assim, vou compilar a ultima versão desenvolvida da hbqt e usar o teu exemplo, usando a TFormUI.

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 »

Olá,

Acabo de fazer o upload de um bom exemplo de uso da Qt-Designer + hbqt + TFormUi, daqui 15 minutos, vou jogar lá a versão para Linux, que foi onde originalmente eu desenvolvi.

Vê lá:
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.
Responder