Veel pakketten zijn beschikbaar in zowel GTK- als QT-versies.
- Wat is het verschil tussen beide?
- Is er een verschil in prestatie of werkmethode?
Antwoord
In het algemeen moet het verschil vanuit een gebruikersperspectief puur cosmetisch zijn. Qt en GTK stellen de themas onafhankelijk in (via bijvoorbeeld qtconfig
of gtk-chtheme
) maar dit wordt geharmoniseerd door sommige desktopomgevingen.
GNU / Linux neigt meer GTK-georiënteerd te zijn dan Qt in de zin dat de eerste wordt vaker gebruikt, dus misschien wilt u er de voorkeur aan geven wanneer u de keuze krijgt; een uitzondering zou zijn onder KDE, dat Qt gebruikt voor zijn eigen toepassingen – hoewel geen van deze factoren erg belangrijk is.
A een belangrijker probleem zou zijn in contexten met zeer beperkt RAM (zoals in < 1/4 GB); in dit geval zou u waarschijnlijk willen dat het systeem uitsluitend GTK of Qt, maar niet beide. Op de meeste moderne desktops met gigabytes aan geheugen is dit echter geen probleem – het uitgebreid gebruiken van beide kan u een extra (wilde gok) 50-100 MB kosten.
Merk op dat er ook verschillende versies zijn van zowel GTK (2 en 3) als Qt (3 en 4 ) nog steeds veel gebruikt, maar niet achterwaarts compatibel (dus een Qt 3-toepassing kan geen Qt 4-bibliotheken gebruiken). Beide versies kunnen echter tegelijkertijd op een systeem bestaan en het meest ernstige gevolg hiervan is de mogelijkheid van verwarring en een beetje meer geheugen.
Opmerkingen
- Ik zou buitengewoon geïnteresseerd zijn om te weten hoe je tot de conclusie komt dat Linux meer GTK-georiënteerd is? Linux impliceert doorgaans alleen de Linux-kernel die in het algemeen geen voorkeur heeft voor een van de toolkits, aangezien het een OS-kernel is en geen GUI-gebruikersruimte-programma. Als je GNU / Linux als besturingssysteem wilde suggereren, dan betwist ik ‘ je claim nog steeds. Zeggen dat GNU / Linux meer GTK-georiënteerd is omdat Ubuntu de meest populaire distro is, is hetzelfde als zeggen dat Christiano Ronaldo de beste sportman is omdat voetbal de meest gespeelde game ter wereld is. (Ik ‘ d betwist dat ook)
- @darnir I ‘ zal de ” GNU ” kwalificatie in aangezien ik het besturingssysteem in de alledaagse zin bedoelde. Ik ‘ zal mijn stelling verdedigen dat het meer GTK is dan Qt georiënteerd: GTK (wat oorspronkelijk stond voor de ” GIMP Tool Kit “, en GIMP = het GNU Image Manipulation Program), GIMP en GNOME zijn allemaal GNU-projecten en een kernonderdeel van hun (gebruikersland) visie op een besturingssysteem , die gepaard gaat met de kernel is wat ” linux ” historisch gezien is. Dus GTK is primair voor linux ontwikkeld, het is ook native C (vs. Qt ‘ s C ++), terwijl Qt meer een echt platformonafhankelijke entiteit.
- Hoewel ik het met je eens zal zijn over de geschiedenis en etymologie van GTK, impliceert dit niet impliciet dat GNU / Linux GTK-georiënteerd is. In feite is het tegendeel waar en wordt dit bevestigd door uw uitspraken. GTK is ontworpen voor linux, niet andersom. Ik ‘ verdedigde mijn proefschrift en beweerde dat Linux als een kernel en GNU / Linux als besturingssysteem agnostisch zijn ten opzichte van elke GUI Toolkit. GTK wordt vaak meer in het wild gezien dan Qt vanwege de sterke afhankelijkheid van Ubuntu ‘. Ook het feit dat het lichter is voor systeembronnen helpt.
- @darnir Ja, het besturingssysteem is in wezen agnostisch WRT de GUI-toolkit – ik zou niet beweren dat GTK ” de native ” toolkit, enz. Maar u ‘ vergist zich in de reden waarom het ” wordt vaak in het wild gezien meer ” – GTK was de meest gebruikte toolkit op het platform voordat Ubuntu zelfs maar bestond vanwege de eerder genoemde relatie met andere fundamentele onderdelen die op grote schaal worden gebruikt door alle distributies. Dit is waarom de meeste linux GUI-apps al GTK-apps zijn, en waarom het, zonder meer context om verder te gaan, zinvol is om een nieuwe gebruiker ” te vertellen kan net zo goed die kiezen “, terwijl al het andere gelijk is. Maar het maakt niet echt uit.
- Het gebruik van meerdere verschillende toolkits zou ook veel meer opslagruimte vereisen; Ik denk echter niet dat dit ‘ de prestaties zou beïnvloeden, maar alleen de ruimte voor andere dingen.
Antwoord
Nee, er is geen verschil in de interne structuur van dergelijke programmas. GTK en Qt zijn toolkits en frameworks voor gebruikersinterfaces. Het zijn bibliotheken die de ontwikkelaars gebruiken om grafische interfaces te ontwerpen.
Wanneer een grafisch (GUI) programma wordt geschreven, worden eerst de interne kern ervan ontwikkeld. Dit is wat het programma laat draaien. Je ziet de kern nooit, ze worden gewoon op de achtergrond uitgevoerd. Bovenop deze kern is een gebruikersinterface (UI) ontworpen.
Nu kunnen de ontwikkelaars de volledige interface vanaf het begin ontwerpen of ontwerpen van anderen hergebruiken. Hergebruik van ontwerp heeft een groot voordeel. Hiermee kunnen alle programmas op uw computer er hetzelfde uitzien. Daarom gebruiken ze GUI-toolkits. GTK en Qt zijn twee extreem veel voorkomende GUI-toolkits.
GTK is de standaard toolkit voor GNOME terwijl Qt wordt gebruikt door KDE. Vanuit het oogpunt van de gebruiker zijn het alleen de looks die verschillen. Het programma blijft in wezen hetzelfde.
Answer
Een ander belangrijk aspect om te overwegen is de Qt-licentie link naar hun licentie-openbaarmaking die expliciet is ingesteld om vrij beschikbaar te zijn voor de meeste projecten zonder winstoogmerk, maar een commerciële relatie is mogelijk en kan in dat geval beperkingen hebben. Terwijl GTK expliciet aangeeft dat het vrij kan worden gebruikt, zelfs in propriëtaire toepassingen GTK-instructie :
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.
Een belangrijk aspect van complexe GUI-ontwikkeling zal vertrouwen op GLADE als een ontwerpkit en of dat past bij uw benadering glade link . Het is bedoeld om platformonafhankelijk te zijn, maar wordt mogelijk niet zo uitgebreid ondersteund als Qt.
Antwoord
Hoe vergelijken ze wat betreft hun respectievelijke objectmodellen, en hoe nauw volgen ze de C ++ -standaard – in mijn beperkte ervaring leek QT een beetje hacky te zijn met zijn codegeneratoren en het wiel opnieuw uit te vinden met hun eigen functioneel equivalente klassen voor strings en klassen. Kortom, QT leek meer fluitjes en toeters te hebben, wat ik zeker weet nuttig gevonden, maar het leek ook een zwaar, gepatenteerd gevoel te hebben. Zoals ik al zei, ik had er beperkte ervaring mee (en nog minder met Gtk). Ik zou graag wat meningen willen hebben over hoe ze zich vandaag verhouden – vanuit het perspectief van een ontwikkelaar, die neigt naar generieke benaderingen van dingen die C ++ – standaarden proberen te gebruiken (zoals STL, C ++ strings, threads, enz.)
QString
decennia geleden uit noodzaak werden geboren toen er geen gelijkwaardige functies in de STL waren. Nu moderne C ++ -standaarden de meeste functies hebben opgepikt, zijn veel Qt-klassen slechts dunne wikkels rond de native C ++ -oplossingen.