gildot

Topo
Sobre
FAQ
Tópicos
Autores
Preferências
Artigos
Sondagens
Propor artigo


8/3
gildicas
9/30
jobs
10/9
perguntas
10/25
press

 
GUI ToolKits 2! wxWindows, GTK e Gnome?
Contribuído por vd em 23-12-02 10:54
do departamento programmers-corner
perguntas Uranus escreve "Boas, sou um estudante com algum tempo livre e conhecimentos basicos de C. Tenho usado linux à mais de um ano e estou pronto pra contribuir para a comunidade, só não sei que gui toolkit usar, nem as diferenças entre alguns deles. Ora bem, já dei uma olhadela pelo QT, GTK, wxWindows, Gnome? e FLTK. Eu estava à procura dum toolkit que fosse portável para outros sistemas operativos, nomeadamente o windows, mas ainda não percebi a diferença entre GTK e Gnome!... "

"FLTK parece-me novo demais e com poucos widgets, o QT não é mau, parece-me bastante simples de usar mas não é totalmente "free" e um bocadinho pesado demais pro meu gosto. Gostei do GTK, e tenho ouvido muitas historias de successo com a respectiva port do windows, mas mais interessante ainda é o wxWindows. Pelo que diz na página é um wrapper para outros toolkits, e cross-platform, mas não percebi se é possível com o wxWindows compilar um programa com GTK2 e ficar com o "look" deste? Afinal o que é o wxWindows? a versao windows deste tem um "native" look mesmo ao meu gosto, mas e em linux? obrigado pelos esclarecimentos :) "

Justiça já está Online | Nova versão beta do Redhat  >

 

gildot Login
Login:

Password:

Referências
  • Linux
  • Uranus
  • Mais acerca perguntas
  • Também por vd
  • Esta discussão foi arquivada. Não se pode acrescentar nenhum comentário.
    wxWindows (Pontos:1, Interessante)
    por Anonimo Cobarde em 23-12-02 11:53 GMT (#1)
    O mais 'maduro' e poderoso e sem duvida o QT, mas nao free para windows. A unica alternativa estavel e com as mesmas potencialidades e o wxWindows. Tenho usado com bastante frequencia, e o processo de compilacao em Windows e praticamente automatico, a partir do que desnvolvo em Linux.
    Tough choice... (Pontos:5, Informativo)
    por CrLf em 23-12-02 14:54 GMT (#2)
    (Utilizador Info) http://crodrigues.webhop.net
    Começando pelo fim, a diferença entre o GNOME e o GTK (no nível do GUI entenda-se) é a mesma que entre o QT e o KDE, ambos (GNOME e KDE) são apenas extensões dos respectivos toolkits, mais widgets.

    Já fiz algumas coisas tanto em GTK como em QT e sinceramente não sei dizer qual dos dois acho melhor.

    O QT é mais do que um toolkit gráfico, é toda uma plataforma com classes para tudo e mais alguma coisa incluíndo um substituto para a STL (a QTL). Não o acho pesado, talvez fiques com essa idea através do KDE, mas este é pesado por outras razões que não o GUI. Tem a desvantagem de só ser free para desenvolver aplicações também elas free. Não há versão free para Windows, apenas uma versão non-commercial que já se está a tornar idosa (2.3.0) até porque não é suportada no Visual Studio .NET. Para MacOS X então... só mesmo desembolsando uma maquia não tão pouco significativa quanto isso.

    O GTK tem a vantagem de ser free para todo e qualquer uso, é em C o que é bom para quem prefere esta linguagem (eu por exemplo) e o que também facilita a sua portabilidade entre as diversas plataformas unix. Tem também bindings para C++, Python, etc. (basicamente tudo e mais alguma coisa). Não sei em que estado se encontra o port para Win32 mas sei que existe. Há quem diga que a sua API base é forçar orientação aos objectos em C, mas eu -- que sou daqueles que acha que OO é um estilo e não syntactic sugar -- discordo plenamente.

    O wxWindows parece-me a melhor opção para garantir portabilidade entre unix e Win32, usa a API Win32 em Windows garantindo que fica com um look nativo e usa o GTK em unix, ficando com o look deste (incluíndo qualquer theme que esteja configurado). Nunca o usei por isso não posso tecer considerações quanto à sua API.

    O FLTK é reduzido tal como dizes mas o seu objectivo é ser leve. Mas a ver pelos screenshots no site já deu origem a algumas aplicações complexas. É também portável entre Windows, MacOS X e unix o que é uma vantagem.

    Resumindo, caso a portabilidade entre Windows e unix seja um "must have" então a escolha cai sobre o wxWindows, caso contrário, eu ia pelo GTK (por ser completamente free e poder escolher a linguagem). Se o QT estivesse disponível em Windows/Mac com a mesma licença que em unix seria um killer (apesar de ir pelo GTK na mesma se apenas quisesse ficar pelo unix).

    Finalmente se se deve ou não usar as funcionalidades disponibilizadas pelo GNOME/KDE ou ficar pelos seus toolkits de origem... a minha ideia é algo pragmática, usar GNOME/KDE apenas se estritamente necessário e/ou se quiser integrar a aplicação num destes ambientes. Caso contrário é preferivel tentar seguir as linhas de estilo destes ambientes sem arrastar um milhão de dependências desnecessárias. Neste aspecto o GNOME sai em vantagem porque sempre se pode ir usando algumas das libs que o compôem (libxml, etc) sem se ficar dependente da whole thing coisa que já não é verdade com o KDE.

    -- Carlos Rodrigues
    obrigado pelas infos (Pontos:1)
    por Uranus em 23-12-02 17:43 GMT (#3)
    (Utilizador Info) http://urt.clanhosted.com
    Bem, como eu estava a codar em C, e como portabilidade entre Windows/unix é um must pra mim, acho que vou pelo wxWindows... mas ainda nao percebi se, quando compilado com wxGTK ele fica com o look do GTK2 ? e outra coisa, se o wxWindows é assim tão bom, porque é que pouca gente o usa?
    Re:obrigado pelas infos (Pontos:2)
    por CrLf em 23-12-02 21:24 GMT (#5)
    (Utilizador Info) http://crodrigues.webhop.net
    quando compilado com wxGTK ele fica com o look do GTK2 ?

    Como eu dizia acima, sim. Só penso que é o GTK 1.2.x e não o 2.0.x.

    se o wxWindows é assim tão bom, porque é que pouca gente o usa?

    Boa pergunta, se calhar porque preferem programar nativamente. Eu pelo menos prefiro.

    -- Carlos Rodrigues
    Re:obrigado pelas infos (Pontos:1)
    por Uranus em 24-12-02 14:22 GMT (#8)
    (Utilizador Info) http://urt.clanhosted.com
    Boa pergunta, se calhar porque preferem programar nativamente. Eu pelo menos prefiro. Pois, é exactamente esta questão que eu queria abordar... mas porque preferes programar nativamente? quais as vantagens? pelo que me parece o wxWindows, com poucas ou nenhumas alteracoes ao codigo compila-se pra n de toolkits... só vejo vantagens nisso. O gtk para windows parece-me que funciona muito bem, mas não fica com o "look" nativo... nao é o fim do mundo, mas se o wxwindows me permite fazer tudo isto e muito mais, acho que o vou usar entao
    Re:obrigado pelas infos (Pontos:2)
    por CrLf em 24-12-02 15:54 GMT (#9)
    (Utilizador Info) http://crodrigues.webhop.net
    Prefiro programar nativamente por diversas razões. Porque os toolkits nativos são normalmente mais bem suportados, mais completos e (potencialmente) mais eficientes. Outro aspecto importante é que não requerem que o utilizador faça download de mais bibliotecas do que aquelas que vêm com a distribuição que usa. Isto quando o objectivo não é fazer um programa cross-platform, porque caso contrário não há saída senão usar um toolkit cross-platform também (mas também neste caso é necessário ter cuidado para não usar outras APIs nativas que não o GUI...). Como nota, eu estou a incluir o Qt no saco dos toolkits nativos porque este usa directamente a API da plataforma onde está (Xlib, Win32...) e não é um wrapper sobre outro toolkit (como o wxWindows ou wxGTK).

    O gtk para windows parece-me que funciona muito bem, mas não fica com o "look" nativo...

    Deverias dizer antes que não fica com o look nativo automáticamente, porque sempre lhe podes aplicar um theme semelhante ao da plataforma onde se encontra.
    Já agora isto é curioso, penso que não seria muito difícil distribuir o GTK para Win32 com um theme Windows like por defeito, não sei porque não o fazem....

    -- Carlos Rodrigues
    Re:obrigado pelas infos (Pontos:0, Interessante)
    por Anonimo Cobarde em 23-12-02 22:09 GMT (#6)
    A versão development (que muito muito brevemente será a stable 2.4) do wxWindows usa GTK+2 (e, consequentemente, tem suporte Unicode). Porque é que pouca gente o usa? Porque não vem nas distribuições, não é muito conhecido (eu, por exemplo, só o conheci hoje). No entanto, já fiquei "apanhadinho" pelo wx e até já comecei a trabalhar com ele. Gostei das aplicações poEdit e Audacity que vêm referidas no site oficial. Em geral, gostei muito da arquitectura da plataforma e conseguiram mesmo convencer-me.

    Diferença a nível de linguagens (Pontos:0, Informativo)
    por Anonimo Cobarde em 23-12-02 18:38 GMT (#4)
    GTK = C
    QT = c++
    Até que enfim... (Pontos:1)
    por edsonmedina em 28-12-02 15:35 GMT (#10)
    (Utilizador Info)

    Fiz a mesma pergunta há uns tempos, mas ninguem respondeu em condições...
    Pelos vistos o pessoal tem feito os trabalhos de casa.

    Estive a olhar bem para todos esses e mais alguns e os resultados que tive foram os seguintes:

    • Gtk - Muito bom apenas em linux, esquece a versão windows (não é officialmente mantida, nem tem o look nativo do windows).
    • FLTK - Esquece este. Não chama as api do sistema (desenha os widgets ele próprio). Em linux tem um look horrivel. E é muito básico e incompleto.
    • FOX - Bem melhor que o FLTK, apesar de desenhar os widgets tambem. "Produz" código muito mais limpinho. Bastante agradável de programar, mas ainda está meio incompleto e a documentação é meio escassa...
    • QT - Muito bom (dizem, ainda n usei), mas not free (não vamos discutir isto de novo, please). Não podes fazer projectos comerciais em windows com ele sem pagar a licença exorbitante
    • XPToolkit - Vai rockar, mas (ao contrário do que dizia o mvalente :) ainda não é usável, por diversos motivos. Mas prestem atenção porque vai ser The Next Big Thing.
    • WxWindows - É a melhor coisa que Deus inventou. LGPL. Não precisas de IFDEF's marados, tens os looks nativos (gtk/motif/win3.1/win9x/win2000/winXP/MacOSX/...) e além de ser um wrapper às api de gui, tambem "wrapa" o IO, Interprocess communication, os tipos, entre outras dezenas de coisas... Tem mais de 10 anos (!) e é bastante estável, flexivel e documentado. A documentação está tambem muito completa. Este é o caminho a seguir se quiseres usar um toolkit. Estou a usá-lo bastante.

    Nota: destes toolkits todos, apenas o Gtk é C. Todos os outros são C++. Se queres usar C não tens mais escolha (gtk ou gtk).

     

     

    [ Topo | FAQ | Editores | Contacto ]