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

Reply via email to