Co wybrać: GTK+ czy Qt? [zamknięte]

Czy ktoś może zasugerować, jakie są obecnie najlepsze zastosowania tych bibliotek? Czy to tylko GUI, czy też mają obsługę bazy danych, XML,sieci, wątków itp?

Czytałem o nich i rozważałem rozpoczęcie nauki / korzystania z jednego z nich.

Co jest najczęściej spotykane? Jaka jest różnica między nimi? Dlaczego wybrałeś jedno nad drugim?

 74
Author: unwind, 2009-12-11

9 answers

Ponieważ wydaje się, że kierujesz się przede wszystkim na Linuksa, wybór zależy głównie od języka programowania, którego chcesz użyć.

Jeśli kodujesz w C, to oczywiście idź na GTK+

Jeśli kodujesz w C++, przejdź do Qt, w przeciwnym razie będziesz potrzebował Gtkmm (owijka C++ nad GTK+)

Jeśli kodujesz w Pythonie, zarówno GTK+, jak i Qt mają powiązania dla tego języka: zobacz PyGtk, PyQt i PySide (ten uruchomiony przez samą Nokię).

Jeśli kodujesz w Java, Qt nie jest już realną opcją imho jako Nokia wycofała Qt Jambi (wiązania Javy dla Qt).

Qt jest również bardziej zaawansowany pod względem API scenegraph QGraphicsScene , jego silnika skryptowego zbudowanego na rdzeniu Javascript (silniku zasilającym WebKit), jego maszyny stanowej i frameworku animacji oraz deklaratywnego interfejsu użytkownika.

GTK+ nie oferuje zbyt wiele, chociaż można używać Clutter obok niego.

Jeśli jesteś konkretnie patrząc na DB, XML (GTK+ ma parser dla podzbioru XML) i threading (GTK+ ma GLib) Funkcje, wtedy Qt zaoferuje to wszystko w QtSql, QtXml i QtConcurrent.

Podsumowując, powiedziałbym, że Qt to pewny wybór. Ale GTK+ jest również bardzo zdolny.

Nie jestem pewien, czy otrzymasz krystalicznie czystą odpowiedź na swoje pytanie, co wyjaśnia, dlaczego niektórzy ludzie wolą Gnome niż KDE lub odwrotnie. wybierz to, co działa najlepiej dla ty.

PS: ja też planujesz celować w Symbiana, to idź na Qt.

EDIT: coś, co jest również świetne z Qt jest QtWebKit: wprowadza WebKit do aplikacji Qt. Inni osadzają WebKit w swojej aplikacji za pomocą na przykład Awesomium lub Berkelium.

 80
Author: Gregory Pakosz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-03 15:39:43

Używałem już wcześniej GTK+, QT i wxWidgets. Oto krótkie podsumowanie:

Dla mojego pierwszego projektu cross platform UI zdecydowałem się na wxWidgets głównie dlatego, że w tym czasie licencja nie była tak restrykcyjna jak QT (QT była GPL i tylko dla Linuksa) i miała specyficzny dla platformy interfejs (w przeciwieństwie do GTK). Projekt działał dobrze, ale było sporo błędów, które sprawiały, że kompilował się i działał poprawnie na innych platformach - czasami niektóre zdarzenia były odpalane inaczej i takie tam. Również GDI w wxWidgets był dość powolny.

Następnie użyłem GTK dla innego projektu w Pythonie. W tym celu użyłem wiązań Pythona i wszystko działało mniej lub bardziej płynnie. Nie spodobał mi się fakt, że interfejs użytkownika nie wyglądał natywnie na Windows i Mac, a także po uruchomieniu aplikacji GTK+ zawsze debug wyprowadza mnóstwo krytycznych ostrzeżeń, które wydają się w porządku ignorować. : S

Wreszcie zrobiłem bardzo prosty projekt QT teraz, gdy Nokia nabyła go i był genialny. Najlepszy z trójki. Po pierwsze, jeśli nie jesteś old schoolerem, który woli VI lub Emacs, QtCreator jest genialny. Naprawdę kocham VI i używam go od lat, ale zdecydowanie wolę QtCreator dla projektów C++ QT. Jeśli chodzi o bibliotekę, bardzo spodobała mi się również dokumentacja i dostarczone API. QT ma pojęcie slotów i sygnałów, które wprowadzają nowe słowa kluczowe C++ i preprocesor. Zasadniczo, po przeczytaniu samouczka dostaniesz go łatwo i zaczniesz go kochać. Teraz robię iPhone dev i wydaje mi się, że trochę Cocoa 's/Interface Builder' s UI paradigm.

Podsumowanie: wybrałbym QT hands down. Licencja jest całkiem dobra, a SDK i dokumentacja naprawdę ładne.

 35
Author: rui,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-02 14:04:25

Nigdy nie używałem GTK, ale z własnego doświadczenia korzystałem z Qt:

To znacznie więcej niż tylko GUI. To cała struktura aplikacji. Kiedyś myślałem o tym jak o bibliotekach Javy dla C++. Zapewnia wszystko, o czym wspomniałeś-bazę danych, XML, Sieć i wątki i wiele innych. Dostarcza również rzeczy takie jak kontenery i Iteratory oraz odpowiedniki do wielu bibliotek boost.

Rzeczą, która zrobiła na mnie największe wrażenie, gdy zaczynałem używać Qt, było niezwykle obszerna dokumentacja. Otrzymasz program o nazwie Qt Assistant, który zapewnia w pełni indeksowaną i przeszukiwalną dokumentację API na Twoim pulpicie, a także liczne przykłady kodu i samouczki. Okazało się, że ma to dużą różnicę w wyszukiwaniu w Internecie za każdym razem w poszukiwaniu informacji API. Bardzo szybki dostęp, gdy trzeba zapamiętać podpis metody.

Nie jestem pewien, który jest najczęściej; to prawdopodobnie trudno dokładnie zmierzyć. Obie są z pewnością popularne. Ponieważ Gnome jest domyślnym pulpitem Ubuntu, a Gnome siedzi na GTK, to oczywiście ma szerokie zastosowanie. Oczywiście KDE jest również bardzo popularne. Nokia mocno wciska Qt w Przestrzeń mobilną - ich system operacyjny Maemo, używany na przykład w nowym N900, wkrótce przełączy się na Qt jako domyślny zestaw narzędzi (obecnie jest to GTK.) Wierzę, że Qt również wkrótce stanie się domyślnym zestawem narzędzi dla Symbian OS.

Nie używałem Qt Creator, ale słyszałem o nim wiele dobrych rzeczy. Jest to C++ IDE z oczywistą ciężką integracją z Qt. Informatyka ma również fałszywą emulację vim, która jest zawsze miła, jeśli lubisz tego rodzaju rzeczy!

Qt używa qmake do konfiguracji kompilacji. Uznałem to za dużo ładniejsze niż pisanie własnych plików Makefile. Nie wiem, co GTK używa do budowy.

Kilka rzeczy, które na początku trochę odbiegały od Qt, to duże wykorzystanie makr preprocesora. System signal / slots zapewnia ładny mechanizm przekazywania zdarzeń/wiadomości w aplikacji, ale czuje się trochę jak magia, która może nie być łatwo przenośny do innego zestawu narzędzi, jeśli kiedykolwiek chcesz. Również moc (meta-object compiler), chociaż nie jestem do końca pewien, co robi, również czuje się trochę zbyt dużo jak magia dzieje się za kulisami.

W sumie jednak, polecam Qt, szczególnie jeśli się uczysz. Ma naprawdę niesamowitą dokumentację i ładne IDE i ruchliwe fora. Dzięki niemu będziesz mógł bardzo szybko tworzyć aplikacje C++, szczególnie z QML w wersji 4.7.

 21
Author: ngm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-11 12:18:00

To prawdopodobnie zależy od tego, co chcesz zrobić. Polecam Qt, bo to coś więcej niż GUI, ma ładne wiązania Pythona (podobnie jak Gtk), a same biblioteki GUI są (subiektywnie rzecz biorąc) przyjemniejsze niż Gtk.

Gtk jest z drugiej strony bardziej powszechne w świecie Linuksa, więc prawdopodobnie możesz uzyskać więcej pomocy w Internecie. Powód rozpowszechnienia Gtk prawdopodobnie ma więcej wspólnego z Gnome i Ubuntu, a nie TECHNICZNE zalety, ale jeśli chcesz, aby oprogramowanie ładnie komponowało się z tymi po drugie, łatwiej osiągniesz to dzięki Gtk.

 8
Author: Slartibartfast,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-11 10:25:44

Qt na pewno ma solidną obsługę DB, sieci, wątków itp... Robi o wiele więcej niż po prostu wieloplatformowy GUI (i robi większość z nich całkiem dobrze).

Polecam go nad GTK+.

 7
Author: ChristopheD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-11 10:14:03

Dodaję tylko zalety QT do innych odpowiedzi.. QT posiada świetną dokumentację, własny IDE & GUI creator{[2] } i rozszerza C++ O kilka nowych koncepcji, takich jak sloty/sygnały (w zasadzie zdarzenia).

Nie jestem programistą GTK, więc nie mogę ich porównywać do świata GTK: (

 3
Author: Gregor Petrin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-11 11:00:55

Qt. Jest nie tylko obiektowy, jest "dobry" obiektowy. Opiera się na "podzbiorze" C++, który nie opiera się na zaciemnieniu C++ (ale można się przy nich trzymać, jeśli masz ochotę na masochizm ;)).

Ma silny impet teraz, gdy Nokia go kupiła (właściwie Nokia zrobiła ~2/3 lat temu). Będzie we wszystkich urządzeniach mobilnych Nokia i Intel (smartfony, netbooki, tablety).

To kręgosłup KDE, więc jest bardzo dojrzały, ale został zaprojektowany w bardzo elastyczny dzięki temu możliwe jest wsparcie wszystkich najnowszych "fajnych rzeczy", które powinien mieć framework more-then-just-GUI.

Do dzieła.

 3
Author: Detro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-10 17:58:03

Wygląda na to, że Nokia będzie używać Qt wszędzie, jak na Maemo

 1
Author: jlru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-31 11:03:39

Jeśli chcesz, aby Twoja aplikacja działała na iOS, Android, Blackberry, innych platformach mobilnych, Windows, Mac OSX i Linux, użyj Qt.

Qt-project.org

 1
Author: trusktr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-07 19:23:46