Många paket finns i både GTK- och QT-versioner.
- Vad är skillnaden mellan dem?
- Finns det någon skillnad i prestanda eller arbetsmetod?
Svar
I allmänhet bör skillnaden från ett användarperspektiv vara rent kosmetisk. Qt och GTK anger teman oberoende (via t.ex. qtconfig
eller gtk-chtheme
) men detta är harmoniserat av vissa skrivbordsmiljöer.
GNU / Linux tenderar att vara mer GTK-orienterat än Qt i den meningen att den tidigare används oftare, så du kanske vill föredra det när du får valet; ett undantag skulle vara under KDE, som använder Qt för sina egna applikationer – även om ingen av dessa faktorer är mycket viktig.
A mer betydelsefullt problem skulle vara i sammanhang med mycket begränsat RAM-minne (som i, < 1/4 GB); i det här fallet skulle du förmodligen vilja att systemet endast använder GTK eller Qt, men inte båda. På de flesta moderna stationära datorer med gigabyte minne är detta dock inte ett problem – Att använda båda i stor utsträckning kan kosta dig en extra (vild gissning) 50-100 MB.
Observera att det också finns olika versioner av både GTK (2 och 3) och Qt (3 och 4 ) fortfarande används ofta men inte bakåtkompatibelt (så ett Qt 3-program kan inte använda Qt 4-bibliotek). Båda versionerna kan dock finnas i ett system samtidigt och den allvarligaste konsekvensen av detta skulle vara risken för förvirring och lite mer minneuppblåsthet.
Kommentarer
- Jag skulle vara mycket intresserad av att veta hur du kommer till slutsatsen att Linux är mer GTK-orienterad? Linux innebär vanligtvis endast Linux-kärnan som i allmänhet inte har någon förspänning mot någon av verktygssatserna, eftersom det är en OS-kärna, inte ett GUI-användarutrymme-program. Om du menade att antyda GNU / Linux som ett operativsystem, ifrågasätter jag ändå ditt påståendemyndighet ’ Att säga att GNU / Linux är mer GTK-orienterat eftersom Ubuntu är den mest populära distro är som att säga Christiano Ronaldo är den bästa idrottsmannen eftersom fotboll är det mest spelade spelet i världen. (Jag ’ ifrågasätter det också)
- @darnir I ’ Jag lägger till ” GNU ” kvalificering eftersom jag menade operativsystemet i vardaglig mening. Jag ’ Jag kommer att försvara min avhandling att det är mer GTK än Qt orienterat: GTK (som ursprungligen stod för ” GIMP Tool Kit ” och GIMP = GNU Image Manipulation Program), GIMP och GNOME är alla GNU-projekt och en viktig del av deras (användarlands) vision för ett operativsystem , som parats med kärnan är vad ” linux ” historiskt sett är. Så GTK utvecklades främst för linux, det är också native C (vs. Qt ’ s C ++), medan Qt är mer av en verkligt plattform enhet.
- Även om jag håller med dig om GTK: s historia och etymologi, innebär det inte implicit att GNU / Linux är GTK-orienterat. I själva verket är motsatsen sant och bekräftas av dina uttalanden. GTK designades för linux, inte tvärtom. Jag ’ försvarar min avhandling och säger att Linux som en kärna och GNU / Linux som operativsystem är agnostiska för alla GUI-verktygslådor. GTK ses ofta i naturen mer än Qt på grund av Ubuntu ’ s stora beroende av det. Det faktum att det är lättare för systemresurser hjälper.
- @darnir Ja, operativsystemet är i grunden agnostiskt WRT GUI-verktygslådan – jag skulle inte hävda att GTK är ” infödda ” verktygslåda osv. Men du ’ har fel om varför det ” ses ofta i naturen mer ” – GTK var det mest använda verktygslådan på plattformen innan Ubuntu ens existerade på grund av det tidigare nämnda förhållandet till andra grundläggande delar som används i stor utsträckning av alla distros. Det är därför de flesta Linux GUI-apparna redan är GTK-appar, och varför, utan mer sammanhang att fortsätta, är det vettigt att berätta för en ny användare ” Du kan lika gärna välja den ”, allt annat lika. Men det spelar ingen roll.
- Att använda flera olika verktygslådor skulle också kräva mycket mer lagring. Jag tror inte ’ att detta skulle påverka prestanda, dock bara utrymme för andra saker.
Svar
Nej, det finns ingen skillnad i den interna strukturen för sådana program. GTK och Qt är verktygslådor och ramar för användargränssnittet. De är bibliotek som utvecklarna använder för att utforma grafiska gränssnitt.
När ett grafiskt (GUI) program skrivs utvecklas först dess kärninterna. Det är detta som gör att programmet körs. Du ser aldrig kärnan, de kör bara i bakgrunden. Ovanpå den här kärnan är ett användargränssnitt (UI) utformat.
Nu kan utvecklarna designa hela gränssnittet från grunden eller återanvända design gjorda av andra. Återanvändning av design har en stor fördel. Det gör att alla program på din dator kan se ut. Därför använder de GUI-verktygssatser. GTK och Qt är två extremt vanliga GUI-verktygssatser.
GTK är standardverktygssatsen för GNOME medan Qt används av KDE. Ur användarens synvinkel är det bara utseendet som skiljer sig åt. Programmet förblir detsamma.
Svar
En annan viktig aspekt att tänka på är Qt-licensiering länk till deras offentliggörande av licenser som uttryckligen är fritt tillgängliga för de flesta ideella projekt, men ett kommersiellt förhållande är möjligt och kan ha begränsningar för det fallet. Medan GTK uttryckligen anger att det kan användas fritt även i proprietära applikationer GTK-uttalande :
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.
En viktig aspekt av komplex GUI-utveckling kommer att förlita sig på GLADE som ett designkit och om det passar din inställning gladlänk . Det syftar till att vara plattform, men kanske inte är så omfattande stöd plattform som Qt är.
Svar
Hur jämför de sig så långt som deras respektive objektmodeller och hur nära följer de C ++ – standarden – i min begränsade erfarenhet verkade QT vara lite hackig med sina kodgeneratorer och uppfinna hjulet med sina egna funktionellt ekvivalenta klasser för strängar och klasser. Kort sagt verkade QT ha fler visselpipor och klockor, vilket jag är säker på att många tyckte att det var användbart, men det verkade också ha en tung, proprietär känsla för det. Som sagt hade jag begränsad erfarenhet av det (och ännu mindre med Gtk). Jag skulle vilja ha några åsikter om hur de jämför idag – ur utvecklarens perspektiv, som lutar sig mot generiska synsätt på saker som försöker använda C ++ – standarder (som STL, C ++ strängar, trådar etc)
QString
föddes av nödvändighet för årtionden sedan när det inte fanns några motsvarande funktioner i STL. Nu när moderna C ++ -standarder har plockat upp de flesta funktionerna är många Qt-klasser bara tunna omslag runt de ursprungliga C ++ -lösningarna.