Advice on GTK vs qt
i know this is an age-old question and probably a bit taboo, but i would like a little advice.
we are currently approaching a point in which we are going to have to make a conversion with our codebase. we support a lot of existing code that was written using the motif library. in fact, all of our GUI is motif (programs that have existed since early-mid 90's). we are ready to undertake the task of converting to something newer (we have waited this long for many reasons. it wasn't up to me/us, so please, don't chastize...).
so at this point, we are going to be able to run down 1 of 2 roads: qt or GTK. i know the qt license has recently changed, which makes it available for us to use.
mostly, i am wondering from a programming perspective, which is going to be better to undertake? everything is already written in motif. which toolkit is going to be most similar from the programming side of it? which toolkit takes less code to use (the qt version of "hello world" is insanely smaller than the GTK)? which will take less time to learn?
our GUI's are not complex by any means, and we will not be doing anything creative or intuitive with them. basically, we will just be recreating the way things are under our current motif implementation. i/we don't care about pretty/ugly. our GUI's are already ugly, and we aren't allowed to make them pretty (as that would make them different than before, and people freak out when something changes), and our software won't ever go away. we just want easy to learn and maintain, as we are going to end up having a few of our existing products converted/supported, which means about 10-20 programmers will be making the switch from motif to X. i would say about half of our code is C, the other half is CPP (with some Fortran and other crap wedged in there too), so loyalty to one or the other isn't big. i would prefer CPP, due to the object-oriented nature, but am not set on it by any means.
i would appreciate all input (that doesn't mention which is pretty or ugly, as that is where the conversation gets stupid)...
Wow, Motif. That's an old toolkit. I guess it's better than the bank software that's still running on mainframes.
In any event, the best advice I can give you is to play with each of them to see which is more natural for you to program in. I can tell you right off the bat that Gtk is C while Qt is C++, but Gtk also has gtkmm which is the C++ version of Gtk. So language choice should not be an issue.
Both Gtk and Qt provide a small tutorial and tons of reference docs. I would start there, and just have fun.
thanks for the update.
do you have any advice on programming styles? any idea on how similar Qt/GTK is to motif?
i'm really not worried about the capabilities of either; i've used a lot of GNOME stuff and a lot of KDE stuff and don't see any shortcomings either way (i could care less about how they look). i know that full functionality exists either way.
what i am worried about is the time it will take for a team to adopt one or the other. we have 2 different pieces of existing software (each maintained by its own team of 4-5 developers), and while we would like to keep the same toolkit applied to each codebase, we don't "have" to. i know that the other group is leaning towards GTK, which makes sense in a lot of ways because they run GNOME (as do we).
but as i am the one doing the research for this for my team, i will be providing the advice to my team. hopefully (if i have time), i will get to take one of our modules and rewrite it in both GTK and Qt and see which one i/they like better. that being said, do you have any knowledge on which toolkit seems to be a little quicker/easier to learn? our programmers are capable and knowledgeable, but i still want to make things as easy on them as possible (to keep frustration at a minimum as well as the time it takes to rewrite the old code). the quicker the better when it comes to time needed to get a good understanding of how to use the toolkit.
any ideas in that respect?
I would realy suggest Qt. Easy to learn, less changes from the standard language (Qt uses a metaobject compiler to add signals and slots to C++ in a simple and transparent to the programmer manner, while Gtk retrofits object orientation on plain C which code that I think looks a bit wierd). Also, now qt is under the LGPL, so no license issues, and it has qgtkstyle so it looks native in both GNOME and KDE
QT is definitely the better way if you want robust multi-platform support - Linux, Windows, smart-phones, embedded appliances, etc. You can take the code you develop on Linux and simply recompile it on Unix, Windows, or a cell-phone OS. In fact, Nokia owns it now, though it is fully LGPL licensed. At least you can purchase support from TrollTech (now a division of Nokia) if you need it.
Originally Posted by beojan