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

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

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 método de trabalho?

Responder1

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.

GNU/Linux tende a ser mais orientado para GTK do que Qt no sentido de que o primeiro é mais comumente usado, então você pode preferir preferi-lo quando tiver a escolha; uma exceção seria no KDE, que usa 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 (como em <1/4 GB); neste caso você provavelmente desejaria que o sistema usasse exclusivamente GTKouQt, mas não ambos. Na maioria dos desktops modernos com gigabytes de memória, entretanto, isso não é uma preocupação - usar ambos extensivamente pode custar 50-100 MB extras (suposição).


Observe que também existem versões diferentes de GTK (2 e 3) e Qt (3 e 4) ainda amplamente utilizadas, 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 consequência mais séria disso seria o potencial de confusão e um pouco mais de memória inchada.

Responder2

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

Quando um programa gráfico (GUI) é escrito, primeiro seus componentes internos são desenvolvidos. É isso que faz o programa funcionar. Você nuncavero núcleo, eles simplesmente são executados em segundo plano. Além desse núcleo, uma interface de usuário (UI) é projetada.

Agora, os desenvolvedores poderiam projetar a interface completa do zero ou reutilizar designs feitos por terceiros. A reutilização do design tem uma grande vantagem. Ele permite que todos os programas do seu computador tenham uma aparência semelhante. Conseqüentemente, eles usam kits de ferramentas GUI. GTK e Qt são dois kits de ferramentas GUI extremamente comuns.

GTK é o kit de ferramentas padrão para GNOME enquanto Qt é usado pelo KDE. Do ponto de vista do usuário, é apenas a aparência que difere. O programa permanece o mesmo no fundo.

Responder3

Outro aspecto importante a considerar é o licenciamento Qtlink para a divulgação da licençaque está explicitamente definido para estar disponível gratuitamente para a maioria dos projetos sem fins lucrativos, mas uma relação comercial é possível e pode ter restrições para esse caso. Considerando que o GTK afirma explicitamente que ele pode ser usado livremente, mesmo emproprietárioformuláriosDeclaraçã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 fundamental do desenvolvimento complexo de GUI dependerá do GLADE como um kit de design e se isso se adapta à sua abordagemlink da clareira. Ele pretende ser multiplataforma, mas pode não ser tão amplamente suportado entre plataformas quanto o Qt.

Responder4

Como eles se comparam em relação aos seus respectivos modelos de objetos e até que ponto eles seguem o padrão C++ - em minha experiência limitada, o QT parecia um pouco hackeado com seus geradores de código e reinventando a roda com suas próprias classes funcionalmente equivalentes para cordas e classes. Resumindo, o QT parecia ter mais assobios e sinos, o que tenho certeza que muitos acharam útil, mas também parecia ter uma sensação pesada e proprietária. Como eu disse, eu tinha experiência limitada com ele (e menos ainda com Gtk). Gostaria de algumas opiniões sobre como eles se comparam hoje - do ponto de vista de um desenvolvedor, que se inclina para abordagens genéricas para coisas que tentam usar padrões C++ (como STL, strings C++, threads, etc.)

informação relacionada