ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
There is less than 12 hours left to vote in the 2015 LinuxQuestions.org Members Choice Awards. Click here to go to the polls. Vote now and make sure your voice is heard!
Introduction to Linux - A Hands on Guide
This guide was created as an overview of the Linux Operating System, geared toward new users as an exploration tour and getting started guide, with exercises at the end of each chapter.
For more advanced trainees it can be a desktop reference, and a collection of the base knowledge needed to proceed with system and network administration. This book contains many real life examples derived from the author's experience as a Linux system and network administrator, trainer and consultant. They hope these examples will help you to get a better understanding of the Linux system and that you feel encouraged to try out things on your own.
Click Here to receive this Complete Guide absolutely free.
Maybe folks think it is just another invitation to a flaming.
I personally like GTK/C just fine and wish everything else would go away! KDE/QT is bloated, gnome is never finished, python is too slow -even GTK2 is too slow and bloated for my hardware.
I have read and followed some of your tutorials on Glade/GTK and am very grateful for them.
I know my opinion is not very valuable, nor shared by many. GTK-1.2 had a 'couple' of 'well known' bugs and lacks support for UTF-8. Why couldn't they have just fixed the bugs, added UTF-8 support and leave us alone about completely re-writing the API and adding all the bloat?
I use my own desktop environment which uses all GTk-1.2 apps and keep all python, gnome, and QT stuff off my system.
You might be the perfect man to help on a project to revive the old GTK-libs, something like 'GTK-reborn'.
On a more practical note -it would seem that everything must be written in QT these days if you are to get included or used in most distros, though if ubuntu wins a good market share with the Dell computers gnome could still be a good bet.
I think we've all gotten carried away with feature-bloat. Does your system boot to the desktop faster than it used to?
Don't think I'm being crabby with you -just wanted to answer your thread in the hopes that others might do the same...
I did not intend any flaming. I just want to understand what people like in each toolkit, which makes them to prefer it. Based on the comments I want to learn the toolkit which has features which I like.
I chose GTK+, but I feel it neccessary to point out that I still have yet to give Qt a fair chance. I mostly program in C and most of my C++ work is limited to SDL stuff, so I've never had a good reason to use Qt. I know there is C bindings to Qt, but if I am going to learn Qt, I want to do it with C++.
As for your reasoning that Qt was made for OO, so it is better used in C++, I feel the need to point out that GTK+ is, even in C, object oriented. GObject provides mechanisms for inheritance, interfaces, polymorphism, and all that other fun OO stuff. GTK+ was written to be language-agnostic. It ports very well to pretty much any language, which is truly awesome. They have definitely met their goal in this respect. In every OO language I've used it in (C++, Ruby, Java, .NET, etc.), it has always made use of features unique to that language and meshes well with the common language paradigms.
In terms of memory usage, I don't use Qt or GTK+ on a mobile device, and any computer made in the last 10 years will run either fine, so I wouldn't attribute that to my decision. I think THE reason I use GTK+ is that I use Gnome, and I like all my apps to look the same. Aesthetics are always important!
I chose QT because I've had experience with it and from a development point of view, it's very tractable and easy get started with. Also its mostly multi-platformed (if this is a consideration for you.) But this opinion is not well qualified as I've never had the opportunity to work with GTK. I'd like to because c is my development language of choice.
Is this a bad poll?
No. This is good. I've often wondered what programmer types think about this.
From a purely technical perspective, Qt wins hands-down. Historically, GNOME only exists because, at the time, Qt wasn't ideologically free enough to suit the GNU activists.
Qt has a very coherent API and object model; any knowledge you gain in one area is easily leveraged in others. Particularly with the "native" C++ bindings, it takes advantage of object-oriented development to a) encourage you to be a better programmer and b) automate quite a lot of the grunt work involved in making C-derived programming work (e.g., memory/resource deallocation).
GNOME, from what I have seen of it in C, C++ and Python, is more a haphazard agglomeration of pieces; somebody thought "Hey, I'll implement *this* piece *this* way, and if other similar or competing things do things differently, oh well!" GNOME naturally appeals much more to the hackish mentality of someone who just wants to get a New Thing done so he can use it and/or show it off. This is great for small projects but fails to scale effectively (witness the recent glacial pace of GNOME UI improvement). GNOME also has an odd philosophy towards "ease of use", arguably making the 'finished' product "easier to use" for the Windows-class "luser", but completely expert-proof. Admittedly, this is not a failing so much of the APIs as the GUI implementation philosophy, but the long-running campaign to conflate the two has succeeded too well for my tastes.
jdickey, I have never felt, while coding GTK+, that it was haphazardly mismashed together. Any specific examples? (Lets also separate Qt and KDE and GTK+ and GNOME.)
I must say though, I do agree with many of GNOME's ideas on interface design. Take a look at GNOME Human Interface Guidelines, they're quite sensible. For some reason, there is this idea that they want to simply cater to the non-power user. This is not true, rather the idea is to keep in mind who you are writing the software for and cater to them. GNOME is suppose to be a desktop for everyone, not just linux geeks. As such, it should allow anyone to do what they want to do, without making them feel like they're in "foreign territory." This is a great goal, I love watching my friends jump on my computer and start using right away, without even having to ask where "Internet Explorer" is, or something like that (most of the config options are still there, the more confusing ones are just a little harder to find unless you know where you're looking). I, also, like the simplicity. I used to have a lot of time on my hands, so I would always take the hardest route anywhere. Now that I'm always busy, I'm starting to really appreciate software like GNOME and distros like Ubuntu (coming from Fluxbox and LFS). However, if this is not for you, you do have a choice! Just use KDE if you want to. No point in worrying about GNOME. GNOME has its ideals, many of which I agree with, but both desktops have their benefits, and it really comes down to personal choice in the end. I don't think using terms like "luser" is appropriate (or very nice). Can't we all just get along?
... I'm trying to understand the positives and negatives of why people choose a particular GUI toolkit.
So please post the reason for your choice along with your votes.
QT because I prefer KDE. No flaming intended, just personal preference.
When I started with Linux I started with GNOME because it sounded cooler than KDE. I tried KDE almost immediately because from what I'd read about Linux it was all about choice and trying alternatives and it seemed like an incredible experiment to not only get my first distro working but even with 2 windowmanagers (except it was almost disappointingly simple).
I'm not an expert in programming with QT so there's no point in learning another library yet. If I'll ever make software interesting enough to publish, I intend to provide it with different UIs because GTK apps aren't super in KDE so I assume QT apps aren't perfect in GNOME (*). I focus on separating logic and UI, mostly developing functionality first with just a commandline interface, so adding different GUIs shouldn't be too difficult.
My own programs are very simple so the UI can be simple too but I wish there are more programs where you could choose the GUI base. I know it's ridiculous and impossible to ask for a QT based GIMP (or a GTK+ based Krita for that matter) but I would very much appreciate it.
(*) it's in the little things, dialogs and cursor placement (in a GNOME app I need to aim more precise to select text, for example) etc.
QT is native C++ and has a well designed interface, it's sufficiently fast and easy to use. What I don't like that much is the precompiler step before compilation and the licensing model which prevents QT from beeing used in some projects at my company.
GTK on the other hand has some nice features but its native C, so we use GTKmm, the C++ bindings, which are good designed and take some modern approaches for C++ programming and don't need a precompiler. What I don't like is that it is somewhat slower than QT, it's not native C++ and that it is spread across a large number of libraries. If you want to distribute an application, it is best to link it in statically because otherwise you get killed from the customer because of library dependencies on installation.
So for open source I would use QT while for commercial applications I would use GTKmm.
Forgot to mention: the QT designer is rather good for designing GUI's, even more complex ones. Glade for GTK is rather basic and doesn't suit my needs very well.