Qual è la differenza tra le applicazioni GTK e QT?


54

Molti pacchetti sono disponibili nelle versioni GTK e QT.

  • Qual è la differenza tra loro?
  • C'è qualche differenza nelle prestazioni o nel metodo di lavoro?

Risposte:


41

In generale, la differenza dal punto di vista dell'utente dovrebbe essere puramente estetica. Qt e GTK impostano i temi in modo indipendente (tramite, ad esempio, qtconfigo gtk-chtheme) ma questo è armonizzato da alcuni ambienti desktop.

GNU / Linux tende ad essere più orientato alle GTK rispetto a Qt, nel senso che il primo è più comunemente usato, quindi potresti voler preferirlo quando ti viene data la scelta; un'eccezione sarebbe sotto KDE, che usa Qt per le proprie applicazioni, sebbene nessuno di questi fattori sia molto importante.

Un problema più significativo sarebbe in contesti con RAM molto limitata (come in, <1/4 GB); in questo caso probabilmente vorresti che il sistema usasse esclusivamente GTK o Qt, ma non entrambi. Sulla maggior parte dei desktop moderni con gigabyte di memoria, tuttavia, questo non è un problema: l'utilizzo di entrambi può costare 50-100 MB in più (ipotesi selvaggia).


Si noti che esistono anche versioni diverse di GTK (2 e 3) e Qt (3 e 4) ancora ampiamente utilizzate ma non retrocompatibili (quindi un'applicazione Qt 3 non può utilizzare le librerie Qt 4). Tuttavia, entrambe le versioni potrebbero esistere contemporaneamente su un sistema e la conseguenza più grave di ciò sarebbe il potenziale di confusione e un pizzico di memoria in più.


8
Sarei estremamente interessato a sapere come giungere alla conclusione che Linux è più orientato alle GTK? Linux, in genere implica solo il kernel Linux che in generale non ha distorsioni nei confronti di nessuno dei toolkit, dal momento che è un kernel del sistema operativo, non un programma di spazio utente della GUI. Se intendessi implicare GNU / Linux come sistema operativo, contesterei comunque la tua richiesta. Dire che GNU / Linux è più orientato alle GTK perché Ubuntu è la distribuzione più popolare è come dire che Christiano Ronaldo è il miglior sportivo perché il calcio è il gioco più giocato al mondo. (Lo
disputerei

10
@darnir inserirò il qualificatore "GNU" poiché intendevo il sistema operativo in senso colloquiale. Difenderò la mia tesi secondo cui è più GTK che orientato a Qt: GTK (che originariamente stava per "GIMP Tool Kit", e GIMP = GNU Image Manipulation Program), GIMP e GNOME sono tutti progetti GNU e una parte fondamentale della loro visione (userland) di un sistema operativo, che in coppia con il kernel è ciò che storicamente "linux" è. Quindi GTK è stato sviluppato principalmente per Linux, è anche C nativo (rispetto a C ++ di Qt), mentre Qt è più un'entità realmente multipiattaforma.
riccioli d'oro

1
Sebbene concorderò con te sulla storia e l'etimologia di GTK, ciò non implica implicitamente che GNU / Linux sia orientato a GTK. In realtà è vero il contrario ed è confermato dalle tue dichiarazioni. GTK è stato progettato per Linux, non viceversa. Difenderei la mia tesi affermando che Linux come kernel e GNU / Linux come sistema operativo sono agnostici nei confronti di qualsiasi GUI Toolkit. GTK è spesso visto in natura più di Qt a causa della forte dipendenza di Ubuntu da esso. Anche il fatto che sia più leggero sulle risorse di sistema aiuta.
darnir,

3
@darnir Sì, il sistema operativo è essenzialmente agnostico WRT il toolkit della GUI - Non direi che GTK sia "il toolkit nativo", ecc. Ma ti sbagli sul perché "è spesso visto in natura di più" - GTK era il toolkit più utilizzato sulla piattaforma prima che Ubuntu esistesse persino a causa della suddetta relazione con altre parti fondamentali ampiamente utilizzate da tutte le distribuzioni. Questo è il motivo per cui la maggior parte delle app della GUI di Linux sono già app GTK e perché, senza più contesto da seguire, ha senso dire a un nuovo utente "Potresti anche sceglierlo", a parità di condizioni. Ma non importa davvero.
riccioli d'oro

L'uso di più toolkit diversi richiederebbe anche molta più memoria; Non penso che ciò influirebbe sulle prestazioni, tuttavia, solo lo spazio per altre cose.
DaimyoKirby,

19

No, non vi è alcuna differenza nella struttura interna di tali programmi. GTK e Qt sono toolkit e framework di interfaccia utente. Sono librerie che gli sviluppatori usano per progettare interfacce grafiche.

Quando viene scritto un programma grafico (GUI), vengono sviluppati innanzitutto i suoi interni principali. Questo è ciò che fa funzionare il programma. Non vedi mai il nucleo, semplicemente eseguono in background. Oltre a questo core, è stata progettata un'interfaccia utente (UI).

Ora, gli sviluppatori potrebbero progettare da zero l'intera interfaccia o riutilizzare i progetti realizzati da altri. Riutilizzare il design ha un grande vantaggio. Permette a tutti i programmi sul tuo computer di apparire simili. Quindi, usano i toolkit della GUI. GTK e Qt sono due toolkit GUI estremamente comuni.

GTK è il toolkit standard per GNOME mentre Qt è usato da KDE. Dal punto di vista dell'utente, sono solo gli aspetti che differiscono. Il programma rimane lo stesso a cuore.


4

Un altro aspetto importante da considerare è il collegamento delle licenze Qt alla loro divulgazione delle licenze che è esplicitamente impostato per essere liberamente disponibile per la maggior parte dei progetti senza scopo di lucro, ma è possibile un rapporto commerciale e potrebbe avere restrizioni per quel caso. Considerando che GTK, afferma esplicitamente che può essere utilizzato liberamente anche in applicazioni proprietarie Dichiarazione 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. 

Un aspetto chiave dello sviluppo della GUI complessa si baserà su GLADE come kit di progettazione e se si adatta al tuo approccio glade link . Mira ad essere multipiattaforma, ma potrebbe non essere così tanto supportato da multipiattaforma come Qt.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.