views:

890

answers:

7

Is Qt an interesting platform for business apps development, outside of Nokia phones ?
Why ? Strong points ?
Thanks

+13  A: 

yes it is .. just look at kde apps :)

further reading

may be this is not so related to the question ... but my first deal with qt was just great starting from their well organized Documentation to their great widgets

the GraphicsView is just ammazing ! :)

Ahmed Kotb
It's a cheap easy(enough) way to gui up your desktop apps for (almost)any OS.
cazlab
+10  A: 

It's about the only current/modern C++ gui library on Windows.

MFC is so old you have to write comments in Latin
WTL would be nice if they had finished it before abandoning it.
Winforms/WPF + managed C++/CLR - all the fun of several incompatible new technologies at once.

Bad points:
To fit on lots of platforms they have invented their own solutions to things that are now in the STL/Boost
The signal/slot mechanism - tricky to debug and silently fails (with no error) with simple typos.
Although everything is possible it's sometimes a lot of effort to do simple things (they do love MVC) compared to Winforms.

Martin Beckett
There is also wxWidgets, which is also quite good and has a BSD style license. But since Qt is LGPLed I would prefer it too.
Axel Gneiting
"I'd rather use a bag of dead rats for a GUI library than MFC." a quote that i have read before
Ahmed Kotb
@Axel - I mentioned wx but it just confused the question and I didn't want to say bad things about it. Note wx and Qt are both LGPL, but wx has an exemption to allow static linking. In practice this means you can use it anywhere but it isn't BSD - specifically any changes you make you have to give back.
Martin Beckett
You can't check signals/slots at compile time, but you can make the signal slot mechanism not fail silently. See QT_FATAL_WARNINGS=1 ... also these tips are good: http://samdutton.wordpress.com/2008/10/03/debugging-signals-and-slots-in-qt/
Hostile Fork
Thanks @Hostile, that was very useful
Martin Beckett
Thank Sam, not me. :)
Hostile Fork
+1 for the comments in Latin !!
Jhonny D. Cano -Leftware-
They have invented them for a purpose. Qt has kept binary compatibility across minor versions for a long time; none of STL or Boost guarantee it and it can't be that easily with templates. Signals and slots are a lot more powerful than Boost signals, not just for C++, but for other language bindings as well. QMetaObject is invaluable, as is QObject. Their created their own containers to implement binary compatibility and thread-safe implicit sharing. This is all a good point, not a bad one.
iconiK
@iconiK - yes but from a C++ programmers PoV it's a disadvantage that they use their own stuff. It's like claiming to C++ programmers that Java/C# is better because it has more powerful new features like GC. They invented many of them because they had to - copy on write strings is a great idea on a phone.
Martin Beckett
Qt has had CoW before it supported any phone OS other than embedded Linux. Unless you are writing high-performance code, CoW is fine.
iconiK
+8  A: 

Maybe you have heard about Google Earth which happens to be programmed in Qt too.

That aside, I like Qt for my in-house development because it

  • is very well supported and documented,
  • allows me to write simple and decent-looking apps that are
  • works cross-platform for Windows and Linux with little effort, and
  • contains nice to have components for database access, regexps, guis, xml, ...

I also use the Qwt widgets for easy real-time plotting on top of Qt.

Dirk Eddelbuettel
I have heard this before, is this true of just the linux version or the windows and OS x versions too?
Roman A. Taycher
I checked with ldd on my Linux version. I have no other version of Google Earth. But what reasons do we have to believe that they'd keep three source bases?
Dirk Eddelbuettel
Google Earth is not a good example for QT because the only real action happens in an OpenGL (or DirectX - whatever) widget. Same as with Opera which also uses QT but is also not a good example as it only uses a basic window and draws all content itself. I wonder why there is none real text processor or IDE written in QT, this would be GUI intensive.
Lothar
I disagree. A large, complex, fairly interactive program with rather high visibility in terms of users is solid evidence that Qt "is not just for phones" as OP claimed. Qt happens to have good OpenGL support too.
Dirk Eddelbuettel
Also Skype and VLC are written using Qt...
Stu Mackellar
Ah, yes, Skype. Good one. And the CMake gui.
Dirk Eddelbuettel
Adobe Photoshop Album uses Qt. KDE uses Qt. Skype and VLC use Qt. http://qt-apps.org/
iconiK
@Lothar, KDE uses Qt, hence KOffice and KDevelop are written in Qt. Qt Creator is written purely in Qt.
iconiK
+3  A: 

Pixar uses Qt (or at least, used, as of 2005) internally for certain parts of their tool suite (called "Marionette" in the marketing) collectively called Menv, ("men-vee" for Modelling ENVironment)---at least for their lighting sub-tool Lumos.

Jared Updike
+11  A: 

I like Qt because:

  • Very well-designed framework, e.g. signal-slot, model-view, graphics view/scene/item/proxy, painter/paint device/paint engine..., too many to be listed here!
  • Excellent documentation!
  • Cross platform language/API, as well as tools like UI designer, creator, and so on.
  • Rich features, e.g. graphics framework, network library, database engine, and so on.
  • Active community, and active development.

There should be more. If you have ever used it, you'll find it's easy to build your framework upon Qt.

I didn't have any complain to Qt. If I have to say at least one disadvantage here, "convention". You must adopt the convention of Qt, e.g. You have to use moc to make the meta object of your objects, and it's easier for developers to use Qt's vector, list, auto_ptr than STL, tr1. But I never found any issue caused by that. On the contrary, it works very well.

In my opinion, Qt is the state-of-the-art C++ framework in this modern world!

P.S. There are a lot of commercial applications built on Qt. You can find it under Qt's official website. But I'd like add one more here: Perforce, one of the top commercial source code management tools, built its client tool on Qt for Windows/Linux/Mac.

Mason Chang
+5  A: 

I really dont understand whats the point in underestimating tools/frameworks which makes things easy for programmers. Qt is too good for GUI development, I would say its much better than any current existing crossplatform app development suite.

So many advantages, I have been using it for more than three years now for a product to be deployed in Linux/Win environments. The app is thread intensive and initially we had a tough time using pthreads and its conterpart for windows. Then we switched to Qt(and QThreads eventually) and things were a breeze... Backed by active development, a highly helpful and supportive community along with excellent documentation, training, certification programs, videos, forums... its easy, fast and effective to develop in Qt. You should see the video which they create a web browser in just five mins! Its really 'cross platform', and it doesnt have a software wrapper(like Java does) to enable this which makes it faster. Cmon, we all know java apps have buttons which takes a second to respond to even a simple 'click'.

I hope Qt will someday do a take on Java. :D

after all, 350000 developers cant be wrong when they chose Qt.

Dee
QT has a Java library called Qambi, I think. I was considering it for a project I'm working on (I'm primarily a Java guy). The project I'm working on has to interface with too many C++ components, so it wasn't worth it.
Chris Kaminski
@Chris, it's QJambi, it's been discontinued.
iconiK
That is unfortunate. :-/
Chris Kaminski
+7  A: 
  • Qt is simple
  • Qt is powerful
  • Qt is NATIVELY-CROSS-PLATFORM
  • Qt is REALLY-CROSS-PLATFORM
  • Qt is comprehensive (but the Media side of it still needs to grow)
  • Qt doesn't require Garbage Collection, but it embeds a GREAT model of memory management that makes you forget about memory deallocation
  • Qt is solid
  • Qt is modern
  • Qt proposes some new paradigm of programming that are really good (Signals-Slots)
  • Qt runs a lot of VERY successful software: (Skype, Google Earth...)

Are those points strong enough?

Detro
Yes! Thanks. ;-)
iDevlop
Standard C++ also has a memory model which makes you forget about memory deallocation :) Running away fast...
EFraim