tags:

views:

4984

answers:

12

I am a C# developer and work on Windows, but back in High School I took some C++ classes. We worked on console applications only. I kinda want to learn C++ GUI programming. I have been looking at Qt and was wondering if I should learn it. For fun lets make this a multiple choice answer:

A) Learn Qt
B) Learn other C++ GUI
C) Don't learn C++ GUI at all
D) Other

Be specific about all of these because as you all know it takes some time to learn GUI programming in almost all languages (sometimes it can be like learning a totally different language).

Thanks!

+8  A: 

You are completely correct that learning a GUI framework may take a lot of work. However, you can almost always find "hello world" type examples that can get you started quickly.

Having said that, almost any modern framework is "worth learning" at some level. Even if you don't end up using it for any other project, the experience you get from having learned it at all will be helpful in future projects. So, my vote is for both A and B.

Greg Hewgill
+65  A: 

I have tried a lot of GUI frameworks since the old times on Mac when state of the art was "C with objects" (but not C++), each one has strengths and weaknesses; but Qt is the best of the best, by a huge margin.

It's the only one where I don't find myself wishing things were done a different way, and also it's the fastest one, and on top of that it's cross-platform!

Do yourself a favor and learn it. You won't regret it.

Javier
Man I wish I had a Mac! I think I'm going to learn Qt seeing as how your 1 of 3 people to recommend it. Thanks! +1
Lucas McCoy
Qt is really cute as they say
yesraaj
Do the Qt 4 dance! http://www.youtube.com/watch?v=NbTEVbQLC8s
R. Bemrose
I've worked with wxWidgets, and based on your recommendation I think I'll give Qt a spin as well.
Ivan Vučica
At work I've been doing some GUI Linux work and QT seems much better than wxWidgets. We have this wxWidget based app and... it's all sorts of buggy. The scrollbar for one of the viewing panels gets stuck in a while loop. The border around some of the button groups flickers when you scroll the panel.
Trevor Boyd Smith
I learned Qt 6 months ago and it was woth it, definitly!
penguinpower
@Bemrose that link makes me wish that comments had a downvote button. That was pretty terrible ;)
Evan Plaice
+9  A: 

The teams have been involved in two companies have been using Qt for over seven years. If you need to develop a professional C++ desktop application that runs on Linux and Windows, I would not recommend any other options.

Until now, the cost may have been an issue but with the upcoming Qt 4.5 free version for all, this won't be an issue.

So, if you are likely to develop a cross-platform C++ GUI application, seriously consider learning Qt. You won't regret it.

David Segonds
+5  A: 

Out of all of the GUI frameworks I've tried, I have to admit Qt is one of my favorites. The user base is also fairly large so it makes getting help a whole lot easier. With Qt Creator just around the corner you have something to look forward to as well. I'm with Greg on this one, option A and B for sure. Learn Qt but keep an open mind for everything else out there at your disposal.

-John

John T
I just downloaded Qt Creator (RC 1) last night and love it! I can't wait for the final version.
Lucas McCoy
+10  A: 

Different languages have strengths and weaknesses when it comes to GUI programming. It turns out that Qt is the best cross-platform GUI library.

If you only need windows support (and speed isn't a big issue) then c# is quite good.

If you only need OS/X support, Objective-C/Cocoa is the best GUI library I've seen, period.

Both c# and objective-c try to spare you from some of the difficulties of c++, which are not insubstantial.

But if you need a fast cross-platform GUI, there's really nothing better than Qt. Not only do they abstract away the GUI bits, but tons of other stuff as well - storing settings, network access, directory traversal, internationalization, etc. Fantastic stuff.

tfinniga
+1  A: 

I know a few Gtkmm but haven't write even a line of code in Qt. What about Gtkmm + Boost Libraries, instead of Qt? Can this composite be as well as Qt? As an alternative? Any idea?

Not really competitive, you have to keep track of all "translations" between boost and Gtk. I tried it, though I must admit it was at the beginning of my programmer being and it quite overwhelmed me (in the aspect of complexity).
penguinpower
A: 

You can learn FOX as an alternative

Dimitris Servis
+1  A: 

Qt or wxWidgets are the best and the most cross-platform toolkits. I personally don't like KDE too much and that spills over to my unwillingness to learn Qt, but from what I hear from other people I can just conclude it's a great lib to work with. The only realistic alternative is wxWidgets.

Ivan Vučica
What about gtk?
pihentagy
I haven't had much experience with GTK. However recently I played with GTK wrapper for Python, and it's somewhat pleasant.
Ivan Vučica
+4  A: 

I've always admired Qt. I spend most of my life using KDE on Linux; and therefore Qt had always been my platform of choice - or would have been if it was financially viable.

As soon as Nokia announced that they were releasing it under the LGPL, I went and learnt it. And you know what? As someone who has used wxWidgets, Gtk, Gtkmm and FLTK in applications with varying levels of complexity, I find it genuinely to be far superior - particularly coupled with Qt Creator.

It is superbly easy to use, intergrate with other systems (I embedded an Ogre3D viewport in it - first time - within about 30 minutes, once I figured out some issues on the Ogre side), and amazingly easy to skin - if you can write a CSS file to skin a web page, you can write a Qt Style Sheet (which has identical syntax) to skin your UI.

Quite simply, it's an awesome option

+2  A: 

I would also recommend Qt. I'm using it in my company and it works nearly perfect. A good thing to start with is this book.

matemaciek
+2  A: 

QT is the way to go. I started using it months ago when i needed a cross platform port of gui app i had done before for a client on windows. With QT i was able to learn the basics and come up with the gui in one afternoon and work on the rest. I actually delivered the port way ahead of my estimate.

Steve Obbayi
A: 

Even though it started out as a GUI framework, Qt is a lot more today. It is also a unittesting framework and a scripting framework. Qt also has network, SQL and XML modules. All of them are generally very well designed and I highly recommend looking into Qt - not only as a GUI framework, but for applications in general.

larsm