Duda 'Sgluber' escreveu:Mas como sou iniciante nesta área, não posso deixar de perguntar: qdo pesquisei sobre libs gráficas/IDEs q focassem o Qt, inicialmente encontrei o Marinas-GUI. O q diferencia o seu projeto, o Qt4xHb, do projeto Marinas-GUI?
Meu conhecimento do Marinas-GUI não é muito, mas baseado no que eu sei, seguem alguns comentários.
Marinas-GUI é uma biblioteca que usa comandos para criar os objetos, oferecendo uma sintaxe mais amigável para desenvolvedores xBase. Usa o projeto HBQT como base, dependendo dos recursos dele. Então, é uma camada à mais na aplicação:
harbour/Qt Framework -> hbqt -> marinas-gui -> aplicação
A sintaxe mais amigável pode agradar desenvolvedores que preferem este modo de programar. Mas é preciso levar em conta que:
. há uma camada extra de código
. o desenvolvedor não aprende realmente à usar o Qt Framework, mas sim os comandos da biblioteca Marinas-GUI
. não ví a possibilidade de criar novas classes baseadas nas classes já existentes
. não ví a possibilidade de trabalhar com gerenciadores de layout, mas somente com coordenadas fixas
. depende do que o projeto HBQT oferece, não tendo ligação direta com o Qt Framework
Se algum desenvolvedor mais familiarizado com o Marinas-GUI perceber algum erro da minha parte, fique à vontade para corrigir, por favor.
Quanto ao Qt4xHb, o desenvolvedor trabalha com classes e objetos. As classes seguem o mesmo nome das classes do Qt Framework, o mesmo nome nos métodos e a mesma hierarquia. Desenvolver com o Qt4xHb é mais semelhante ao modo de desenvolver uma aplicação em Qt com C++, respeitando as diferenças entre as linguagens.
Para ficar mais claro, veja abaixo um exemplo em Marinas-GUI (extraído do site do projeto) e o equivalente em Qt4xHb:
Código: Selecionar todos
#include "marinas-gui.ch"
PROCEDURE Main()
CREATE WINDOW myWin
CAPTION "Marinas-GUI Test"
WIDTH 200
HEIGHT 120
MAIN .T.
CREATE BUTTON text
CAPTION "Hello World!"
COL 62
ROW 40
WIDTH 75
END BUTTON
END WINDOW
ACTIVATE WINDOW myWin
RETURN
Código: Selecionar todos
#include "qt4xhb.ch"
PROCEDURE Main ()
LOCAL oApp
LOCAL oWindow
LOCAL oButton
oApp := QApplication():new()
oWindow := QMainWindow():new():setWindowTitle("Qt4xHb Test"):resize(200,120)
oButton := QPushButton():new("Hello World!",oWindow):move(62,40):resize(75,30)
oWindow:show()
oApp:exec()
oWindow:delete()
oApp:delete()
RETURN
Sei que trabalhar com objetos costuma afugentar desenvolvedores não familiarizados com OOP, mas é o modelo mais adequado para se aproveitar bem os recursos do Qt Framework. Mas nada impede o desenvolvedor de criar seus próprios comandos. Teoricamente, até a Marinas-GUI poderia ser modificada para usar o Qt4xHb no lugar da HBQT.
Este modelo oferece a possibilidade do desenvolvedor criar classes derivadas das classes do Qt4xHb e usar os gerenciadores de layout, que dispensam o uso de coordenadas fixas ao colocar objetos numa janela. E, do meu ponto de vista, a maior vantagem que é ficar mais familiarizado com o Qt Framework e sua estrutura de classes (pode ajudar bastante numa mudança de linguagem).
É importante lembrar que as vantagens acima também podem ser obtidas com o projeto HBQT puro (sem Marinas-GUI).