tags:

views:

139

answers:

2

Hi All,

I am fairly new in the domain of GUI designing and development. I do have some prior experience but that is with Visual Basic.

I would like to develop a reasonably comprehensive (though not state-of-the-art) GUI application on linux based on a command line app. that I have. Having done some googling, I do find that there are mainly three good (or perhaps that is what I feel) ways to achieve this goal:

  1. GTK+ library with GLADE as the designer
  2. Qt library with Qtdesigner as the designer
  3. Java swing with Netbeans

In order to settle upon one of the above (or reject all of them), I would have to know the following aspects of each item in the above list. These aspects, in decreasing order of their priority are:

  1. Licensing: I would not be able to shell out too many bucks here...
  2. Programming language support: I know C/C++ and very little Java.
  3. Ease of learning / use
  4. Flexibility and power: It would be really nice if most (if not all) features that I need are available in the core library.
  5. (Lack of) additional dependencies: Reasoning same as point number 4
  6. Look and feel
  7. Platforms supported / Portability (effort required to switch platform)

Any ideas on the above topics would be worth their weight in gold (I wouldn't want to realize after one month that I chose the wrong tool for my job). Are there any other tools more fitting to my purpose that I am unaware of?

Point-blank answers would most help.

Thanks in advance.

EDIT: Ok so I have finally gone with Qt. Simply because it is easier to learn and appears more portable than GTK+ (to me ofcourse).

+8  A: 

Qt is your best bet.

  1. The Qt license states

    Nokia grants Licensee a non-exclusive, royalty-free right to reproduce and distribute the object code form of Redistributables for execution on the specified Platforms.

    So you should have no problem about license

  2. It's written in/for C++

  3. It's not so hard to learn
  4. The library (althought modular) contains everything you need to develop a full-blown GUI and also some extra (XML, networking...)
  5. I don't know about this, sorry, but I don't think there are any dependencies (on the client side)
  6. The look and feel is native to the enviroment for which the application is compiled (that is Windows look&feel on Windows, OSX look&feel on OSX)
  7. Qt is supported on a vast range of desktop enviroments
klez
Qt comes along with umpteen no of pre built widgets with simple API to get started ...
Ankur Gupta
@klez: Any luck with Java Swing?
puffadder
@puffadder it's just a personal taste, but I don't like Swing very much. So I'm not the better person to talk about it.
klez
+2  A: 

To make the case for GTK:

  1. LGPL licensing.
  2. Written in C, but is usable with almost any programming language, including C++, Python, Javascript, Haskell, etc. Recently a new programming language, Vala, was developed which has native support for GTK's objects, signals, and properties. Its syntax is very similar to C# and its purpose is to allow very fast development of applications using GTK. (That's because using it in the original C does tend to produce very verbose code.)
  3. If you understand object-oriented principles (which is not necessarily everybody who's taken a Java course at university) then it's easy to learn.
  4. The library is divided into two main parts: GLib, the core library, and GTK, the GUI library. GLib has many features you will need for developing applications: all kinds of data structures, threads, regular expressions, key-value file parser, XML-like markup language parser (for full XML you need the libxml2 library though), ansynchronous I/O, networking. GTK contains everything graphical.
  5. It used to be that quite a lot of applications had the entire set of GNOME libraries as a dependency, but that's not the case anymore, since a lot of the useful functionality has been moved into GLib and GTK. You should be able to write a full-featured application without any extra dependencies.
  6. Look and feel depends on the platform. On GNOME, GTK basically defines the look and feel. On Windows, the native look and feel is emulated almost perfectly. On OS X, not so much.
  7. On Windows and OS X it takes some doing to get the libraries set up properly. OS X is especially a pain in the ass, where you have the choice between running an X11 server or using the harder-to-set-up Quartz backend. Qt is probably easier in that respect. However, your application's code is fully cross-platform and so should not require any porting to run on any of these systems.

I hope I've accurately represented the pros and cons for you.

ptomato
I see... Now what is this wxWidgets? Any idea?
puffadder
I've never used it, so not qualified to comment.
ptomato