The intention is to compare feature wise Qt [version 4.5 svn ] and gtk+ [2.14] on below mentioned aspects for use in application development
* Portability * Embedded * Desktop * GUI * Support to Libraries * Native/Bundled with Qt * Third Party * 3D graphics * 2D Graphics * Style Sheet * Network support * IPC * Scripting Support * Bindings * Performance * Multimedia Support * Documentation * Programmers Ease * Products * Unit Testing * Internationalization * String class Description: * Portability: Qt is a crossplatform application framework. Using Qt, programmer can write applications once and deploy them across many desktop and embedded operating systems without rewriting the source code. Qt is available for following devices 1. Linux [*nix] 2. Mac OS X 3. Windows 4. Embedded Devices [1][2] 5. Linux Devices 6. Window Mobile 7. S60 [full fledged symbian support under way][3][4][5] GTK+ is also a crossplatform application framework , and just like qt supports write once compile many approach , but the difference lies in number of platform supported by gtk+ , in stable state. Gtk+ doesnât supports Windows mobile as if now and it also doesnât supports any symbian platform and Qt is used in over 15 million devices in everything from medical devices and navigation units to settop boxes, media players and mobiles phones. The effect of aforementioned feature would be quite evident Certain application are decided to be ported to other embedded devices . GUI : Qt has a time tested Widget library which can be overloaded anytime to make a new widget according to programmer needs. Support to Libraries: Qt comes bundles up with following libraries 1. SVG 2. OpenGl 3. Networking 4. Database 5. Multithreading 6. 2d Canvas 7. Webkit 8. Multimedia [Phonon][6] 9. Xml 10. Unit Testing In comparison GTK+ misses folllowing libraries 1. OpenGl [3rd party library Clutter supplies it] 2. Networking [3rd party library licurl supplies it] 3. Unit testing 4. XML [libxml2 provides it] 5. Stable Webkit support 6. Multimedia [Phonon supports multiple backends ranging from vlc , mplayer , Gstreamer and well in comparison Gstreamer can only support itself ;) , Phonon supports Advanced Audio/ Video manipulations also ] In 3rd party Library Support for Qt ; biggest example is KDElibs[7] a LGPL library used by KDE , it has support for Cryptography [QCA] , Personal Information Managment [Akonadi],fastest desktop search program [Strigi], Device Discovery & Managment [Solid] [8], A jobbased multithreading library[Thread Weaver],Printing Library [KDEprint], Scripting Engine [Kross] [9] etc. GTK+ compartively can use Gnome based libraries but still libraries like Solid , Phonon , Kross are missing. If an application uses Qt , it gets to use libraries like Kross which will introduce support to scripting languages like phyton , javascript [ECMA script] , Ruby, KrossJAVA,KrossFalcon which will reduce development time for small apps and widgets. 3D Graphics : Qt supports OpenGl as itâs rendering backend , i.e. Rendering qt widgets using open gl aka Widget redirection as well it supports OpenGl in Widget form. 1. Widget Redirection http ://labs.trolltech.com/blogs/2008/12/02/widgetsenterthethirddimensionwolfenqt/ 2. QtOpen Gl Widget http ://doc.trolltech.com/4.4/qtopengl.html This feature is missing from GTK+ hence we have to use a 3rd party library Clutter to provide OpenGl Backend , but widget redirection is still not possible in Clutter . A noteworthy mention would also be , clutter also supports Qt [11] ; using Qt as development platform for any Application would provide us with unified API / Platform for our animation needs , and rest assured this platform has been extensively tested by millions who use KDE 4. Widget Redirection would totaly make our job of maiking our own toolbar easy because we can redirect normal Qt widgets / Our own Widget to Open Gl without any appreciable performance hit . 2D Graphics : Qt names it 2d Paint framework as Arthur [12], and with advent of Qt version 4.0 it has introduced some revolutinary features in it namely: 1. SVG Rendering Support 2. Hardware Accelaration using native graphic operation wherever possible 3. Anti Aliasing 4. Multiple backends that can be changed in runtime [Open Gl , SVG , Screen Buffer [13], Image , Widget , Webkit, Printer ] 5. Inherent Graph Scene Management . 6. RGBA support whevrer possible [14] 7. Multiple Image format Support [15][16] [Jpeg , Png, Mng, Bmp , Tiff etc] GTK+ doesnât has a inbuilt full fledged 2d animation library hence cairo comes into picture , though cairo supports most of the feautres mentioned above itâs still plagued by the fact that there is bit of API dissarray in it and it has no hardware acceleration (i.e using native graphic operation of the OS in question). ? Network Support Qt has a Module/Library [17] specially for handling network operation including SSL/HTTPS operations , again GTK+ has no inbuilt library for networking but we could use libcurl which throws everything into nonuniform API realm . An example of simplicity of Qtâs network library could be : making a Generalized TCP server requires only 4 lines of code in Qt/C++. ? IPC Qt and GTK+ both have dbus support but Qt provides one more method of IPC [Inter Process communication] Shared Memory [18]. ? Scripting Support Qt has support for ECMA script [19]aka Javascript , gtk+ has no comparable feature. Some uses of Qt Script feature can be viewed at [20]. ? Bindings 1. Qt are 1. C++ 2. C [ unmaintained ] 3. Ruby 4. Python 5. Perl 6. Ada 7. Pascal 8. PHP 9. Java 10. C# 2. Gtk+are 1. C 2. C++ 3. Python 4. Perl 5. PHP 6. Java 7. Ruby 8. C# ? Performance i was not really able to gauge both these libraries on scale of perfromance because of presence of so many bindings and ineqaulity in libraries but the crudest way i could gauge both of them was amount of code written for same functionality and undoubtedly gtk+ if used in c required more code than qt if used with c++ but this test is ambigous . ? Multimedia Qt has phonon , GTK+ has gstreamer ; much has been said about them in previous text.A noteworthy thing would be Phonon is not intself a Multimedia library , itâs a thin wrapper over libraries like mplayer, vlc , gstreamer , xine , Direct Play etc. But amount of code required for a simple mp3 player is still less in Phonon [21][22]. ? Documentation Qtâs documentation Engine aka Qt assistant is inself a help documentation generator and has a class/module that helps qt application to make a help file for themselves from code comments using doxygen file [23] . GTK+ has no such feature. ? Programmers Ease Qt also has an IDE named Qt creator which in future is planned to support vim mode too. Lesser code has to be generated when qt is in c++ and gtk is in c [24]. ? Products , naming only 3 prominent products Qt [26] [27] 1. Google Earth 2. Adobe photoshop Elements 3. VLC media player [since 0.9 version] Gtk+ 1. Nokia Maemo 2. Firefox 3. Pidgin ? Unit Testing [28] unit test are helpfull in automated testing out GUI/nongui component before using them in actual program , Qt has an inbuilt module named QtTest that serves this purpose . GTK+ has no such feature . ? Internationalization Qt fully supports Unicode, the international standard character set. Programmers can freely mix Arabic, English, Hebrew, Japanese, Russian, and other languages supported by Unicode in their applications. Qt also includes a tool to facilitate this procress. Every class of Qt supports Unicode , hence no extra effort except placing tr() around tranlatable string is needed . No Contemprary facility is natively available in GTK+. ? String class of QT named Qstring [29]supports Unicode 4.0, Regex (QRegex), Raw Byte Manipulation. ------------------------ <A>Freeware and Shareware Download</A> -------------------- m2f -------------------- -- http://www.openobject.com/forum/viewtopic.php?p=59707#59707 -------------------- m2f --------------------
_______________________________________________ Tinyerp-users mailing list http://tiny.be/mailman2/listinfo/tinyerp-users