Qual é a diferença entre aplicativos GTK e QT?

54

Muitos pacotes estão disponíveis nas versões GTK e QT.

  • Qual a diferença entre eles?
  • Existe alguma diferença no desempenho ou no método de trabalho?
Pandya
fonte

Respostas:

41

Em geral, a diferença da perspectiva do usuário deve ser puramente cosmética. Qt e GTK definem temas de forma independente (via, por exemplo, qtconfigou gtk-chtheme), mas isso é harmonizado por alguns ambientes de desktop.

O GNU / Linux tende a ser mais orientado a GTK do que o Qt, no sentido de que o primeiro é mais comumente usado; portanto, você pode preferir quando tiver a opção; uma exceção seria no KDE, que usa o Qt para suas próprias aplicações - embora nenhum desses fatores seja muito importante.

Um problema mais significativo seria em contextos com RAM muito limitada (por exemplo, <1/4 GB); Nesse caso, você provavelmente desejaria que o sistema usasse exclusivamente GTK ou Qt, mas não os dois. Na maioria dos desktops modernos com gigabytes de memória, no entanto, isso não é uma preocupação - o uso extensivo de ambos pode custar 50-100 MB extras (palpite).


Observe que também existem versões diferentes do GTK (2 e 3) e do Qt (3 e 4) ainda amplamente usadas, mas não compatíveis com versões anteriores (portanto, um aplicativo Qt 3 não pode usar bibliotecas Qt 4). No entanto, ambas as versões podem existir em um sistema ao mesmo tempo e a conseqüência mais séria disso seria o potencial de confusão e um pouco mais de memória inchada.

Cachinhos Dourados
fonte
8
Eu ficaria extremamente interessado em saber como você chegou à conclusão de que o Linux é mais orientado a GTK? O Linux normalmente implica apenas o kernel do Linux, que em geral não possui viés para nenhum dos kits de ferramentas, pois é um kernel do SO, não um programa de espaço do usuário da GUI. Se você pretendia sugerir o GNU / Linux como um sistema operacional, eu ainda contestaria sua reivindicação. Dizer que o GNU / Linux é mais orientado ao GTK porque o Ubuntu é a distribuição mais popular é como dizer que Christiano Ronaldo é o melhor esportista porque o futebol é o jogo mais jogado no mundo. (Eu contestaria isso também) #
#
10
@darnir Vou colocar o qualificador "GNU", já que eu quis dizer o sistema operacional em um sentido coloquial. Defenderei minha tese de que é mais GTK do que orientado a Qt: GTK (que originalmente significava o "GIMP Tool Kit" e GIMP = o Programa de Manipulação de Imagem GNU), GIMP e GNOME são todos projetos do GNU e uma parte essencial da visão deles (do usuário) para um sistema operacional que emparelhado com o kernel é o que é "historicamente" o linux. Portanto, o GTK foi desenvolvido principalmente para Linux, também é C nativo (vs. C ++ do Qt), enquanto o Qt é mais uma entidade genuinamente de plataforma cruzada.
goldilocks
11
Embora eu concorde com você sobre a história e a etimologia do GTK, isso não implica implicitamente que o GNU / Linux seja orientado para o GTK. De fato, o oposto é verdadeiro e é confirmado por suas declarações. O GTK foi projetado para Linux, e não o contrário. Eu defenderia minha tese afirmando que o Linux como kernel e o GNU / Linux como sistema operacional são agnósticos em relação a qualquer GUI Toolkit. O GTK é frequentemente visto na natureza mais do que o Qt por causa da forte dependência do Ubuntu. Também o fato de ser mais leve nos recursos do sistema também ajuda.
darnir
3
@darnir Sim, o sistema operacional é essencialmente agnóstico WRT, o kit de ferramentas da GUI - eu não diria que o GTK é o "kit de ferramentas nativo" etc. o kit de ferramentas mais amplamente usado na plataforma antes que o Ubuntu existisse por causa do relacionamento acima mencionado com outras partes fundamentais usadas extensivamente por todas as distros. É por isso que a maioria dos aplicativos da GUI do Linux já são aplicativos GTK e, por que, sem mais contexto para continuar, faz sentido dizer a um novo usuário "Você também pode escolher esse", sendo todos os demais iguais. Mas isso realmente não importa.
Goldilocks #
A utilização de vários kits de ferramentas diferentes também exigiria muito mais armazenamento; Não acho que isso impactaria a performance, apenas o espaço para outras coisas.
DaimyoKirby
19

Não, não há diferença na estrutura interna desses programas. GTK e Qt são kits e ferramentas de interface de usuário. São bibliotecas que os desenvolvedores usam para projetar interfaces gráficas.

Quando um programa gráfico (GUI) é gravado, primeiro seus principais internos são desenvolvidos. É isso que faz o programa funcionar. Você nunca o núcleo, eles simplesmente são executados em segundo plano. No topo deste núcleo, uma interface do usuário (UI) é projetada.

Agora, os desenvolvedores poderiam projetar a interface completa do zero ou reutilizar os designs criados por outras pessoas. A reutilização do design tem uma grande vantagem. Ele permite que todos os programas do seu computador sejam parecidos. Portanto, eles usam kits de ferramentas da GUI. GTK e Qt são dois kits de ferramentas da GUI extremamente comuns.

GTK é o kit de ferramentas padrão para o GNOME, enquanto o Qt é usado pelo KDE. Do ponto de vista do usuário, são apenas as aparências que diferem. O programa permanece o mesmo no coração.

darnir
fonte
4

Outro aspecto importante a considerar é o link de licenciamento Qt para a divulgação de licenças, que é explicitamente definido para estar disponível gratuitamente na maioria dos projetos sem fins lucrativos, mas é possível um relacionamento comercial e pode haver restrições para esse caso. Enquanto o GTK, declare explicitamente que ele pode ser usado livremente, mesmo em aplicativos proprietários , declaração GTK :

Are there any licensing restrictions?
GTK is free software and part of the GNU Project. However, the licensing terms for GTK, the GNU LGPL, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties. 

Um aspecto-chave do desenvolvimento complexo da GUI dependerá do GLADE como um kit de design e se isso combina com o seu link glade de abordagem . Seu objetivo é ser multiplataforma, mas pode não ser tão amplamente suportado quanto o Qt.

Vass
fonte