Jaka jest różnica między aplikacjami GTK i QT?


54

Wiele pakietów jest dostępnych zarówno w wersji GTK, jak i QT.

  • Jaka jest różnica między nimi?
  • Czy jest jakaś różnica w wydajności lub metodzie pracy?

Odpowiedzi:


41

Ogólnie rzecz biorąc, różnica z perspektywy użytkownika powinna być czysto kosmetyczna. Qt i GTK ustawiają motywy niezależnie (poprzez np. qtconfigLub gtk-chtheme), ale jest to zharmonizowane w niektórych środowiskach komputerowych.

GNU / Linux jest bardziej zorientowany na GTK niż Qt w tym sensie, że ten pierwszy jest częściej używany, więc możesz chcieć go preferować, kiedy masz wybór; wyjątkiem byłby KDE, który używa Qt do własnych aplikacji - chociaż żaden z tych czynników nie jest bardzo ważny.

Bardziej znaczącym problemem byłby kontekst z bardzo ograniczoną pamięcią RAM (jak w, <1/4 GB); w takim przypadku prawdopodobnie chciałbyś, aby system używał wyłącznie GTK lub Qt, ale nie obu. Jednak w przypadku większości współczesnych komputerów z gigabajtami pamięci nie stanowi to problemu - użycie obu urządzeń może kosztować dodatkowe 50 000 MB.


Zauważ, że istnieją również różne wersje zarówno GTK (2 i 3), jak i Qt (3 i 4), które są nadal powszechnie używane, ale nie są kompatybilne wstecz (więc aplikacja Qt 3 nie może korzystać z bibliotek Qt 4). Obie wersje mogą jednak istnieć w systemie w tym samym czasie, a najpoważniejszą konsekwencją tego może być zamieszanie i nieco więcej rozdęcia pamięci.


8
Byłbym bardzo zainteresowany, aby dowiedzieć się, jak dojść do wniosku, że Linux jest bardziej zorientowany na GTK? Linux zwykle implikuje tylko jądro Linuksa, które zasadniczo nie jest stronnicze w stosunku do żadnego z zestawów narzędzi, ponieważ jest to jądro systemu operacyjnego, a nie program przestrzeni użytkownika GUI. Jeśli chciałbyś sugerować GNU / Linux jako system operacyjny, nadal kwestionowałbym twoje roszczenie. Stwierdzenie, że GNU / Linux jest bardziej zorientowane na GTK, ponieważ Ubuntu jest najpopularniejszą dystrybucją, jest jak powiedzenie, że Christiano Ronaldo jest najlepszym sportowcem, ponieważ piłka nożna jest najczęściej graną grą na świecie. (Ja też by to zakwestionował)
darnir

10
@darnir Umieszczę kwalifikator „GNU”, ponieważ miałem na myśli system operacyjny w znaczeniu potocznym. Będę bronić mojej tezy, że jest bardziej zorientowana na GTK niż na Qt: GTK (która pierwotnie oznaczała „Zestaw narzędzi GIMP”, a GIMP = Program do manipulacji obrazami GNU), GIMP i GNOME to wszystkie projekty GNU i ich podstawowa część ich (użytkownika) wizji systemu operacyjnego, który w połączeniu z jądrem jest historycznie tym, czym jest „linux”. Tak więc GTK został opracowany przede wszystkim dla Linuksa, jest to także natywny C (w porównaniu z C ++ Qt), podczas gdy Qt jest bardziej autentycznym podmiotem wieloplatformowym.
złotowłosa

1
Chociaż zgodzę się z tobą w sprawie historii i etymologii GTK, nie oznacza to domyślnie, że GNU / Linux jest zorientowany na GTK. W rzeczywistości jest odwrotnie i potwierdzają to twoje wypowiedzi. GTK został zaprojektowany dla Linuksa, a nie na odwrót. Broniłbym swojej tezy stwierdzającej, że Linux jako jądro i GNU / Linux jako system operacyjny są agnostyczne wobec każdego zestawu narzędzi GUI. GTK jest często postrzegane na wolności bardziej niż Qt z powodu dużej zależności od Ubuntu. Pomaga również fakt, że jest lżejszy w zakresie zasobów systemowych.
darnir

3
@darnir Tak, system operacyjny jest w zasadzie agnostyczny. WRT to zestaw GUI - nie twierdzę, że GTK to „natywny” zestaw narzędzi itp. Ale mylisz się, dlaczego „często widuje się go na wolności” - GTK najczęściej używany zestaw narzędzi na platformie jeszcze przed Ubuntu istniał ze względu na wyżej wspomniany związek z innymi podstawowymi częściami szeroko używanymi przez wszystkie dystrybucje. To dlatego większość aplikacji GUI dla Linuksa jest już aplikacjami GTK i dlatego, bez dalszego kontekstu, sensowne jest powiedzenie nowemu użytkownikowi „Możesz równie dobrze wybrać ten”, przy czym wszystkie pozostałe są równe. Ale to tak naprawdę nie ma znaczenia.
złotowłosa

Korzystanie z wielu różnych zestawów narzędzi również wymagałoby znacznie więcej miejsca; Nie sądzę jednak, żeby wpłynęło to na wydajność, tylko miejsce na inne rzeczy.
DaimyoKirby

19

Nie, nie ma różnicy w wewnętrznej strukturze takich programów. GTK i Qt to zestawy narzędzi i struktury interfejsu użytkownika. Są to biblioteki używane przez programistów do projektowania interfejsów graficznych.

Podczas pisania programu graficznego (GUI) najpierw opracowywane są jego podstawowe elementy wewnętrzne. To sprawia, że ​​program działa. Nigdy nie widzisz rdzenia, po prostu działają w tle. Oprócz tego rdzenia zaprojektowano interfejs użytkownika (UI).

Teraz programiści mogą zaprojektować kompletny interfejs od zera lub ponownie wykorzystać projekty wykonane przez innych. Ponowne użycie projektu ma dużą zaletę. Pozwala wszystkim programom na komputerze wyglądać podobnie. Dlatego używają zestawów narzędzi GUI. GTK i Qt to dwa niezwykle popularne zestawy narzędzi GUI.

GTK to standardowy zestaw narzędzi dla GNOME, podczas gdy Qt jest używany przez KDE. Z punktu widzenia użytkownika różnią się tylko wyglądem. Program pozostaje ten sam w sercu.


4

Innym ważnym aspektem, który należy wziąć pod uwagę, jest łącze licencyjne Qt do ujawnienia licencji, które jest jawnie ustawione jako swobodnie dostępne dla większości projektów non-profit, ale stosunki handlowe są możliwe i mogą mieć ograniczenia w tym przypadku. Podczas gdy GTK, wyraźnie zaznacz, że można go swobodnie używać nawet w zastrzeżonych aplikacjach Oświadczenie 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. 

Kluczowym aspektem złożonego rozwoju GUI będzie GLADE jako zestaw do projektowania i to, czy pasuje do twojego podejścia do polany . Ma być wieloplatformowy, ale może nie być tak szeroko wspierany międzyplatformowy jak Qt.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.