Qt is good because...
Please help creating a list of points explaining why Qt is good compared to other alternatives for application developers.
Let’s focus on specifics: contrastable proof points and experiences from developers working in different platforms are greatly appreciated.
You can reply here or edit directly the wiki. In any case I'll do my best keeping all the relevant information in the wiki page.
- Because it's cute
- best documentation of ever
- Cross plateform without using a virtual machine
- Free and openSource
- easy to begin with qt creator
- Complete framework with everything
- easy to learn
- native C++
- Signal / slots
- Property Binding
- Has Webkit !!
- Has QtQuick !!
- Has Community
That was fast! Thank you.
Some questions to dig deeper. Note that these arguments should be convincing for developers currently familiar with other platforms (mainly mobile, if you ask me) and considering to get started with Qt.
Cross-platform without VM, yes. I'll add it to the wiki page.
Qt WebKit as a great WebKit port, yes. I'll add it.
Qt Quick, those of us familiar with it love it but what are the key arguments for a newcomer to learn something that is not as standard as C++ or HTML5? We can find those reasons and write them down.
Easy to begin with Qt Creator: any impressions comparing the first steps with the SDK of other platforms?
Best documentation: any impressions comparing it with the docs from other platforms? Anything standing out?
"Complete framework with everything" - why it is better compared with major competing platforms?
Can you explain signal/slots and property binding in comparison with other platforms?
Community, of course it's great! But what makes it great in a way a newcomer would understand? Any remarkable difference compared to other developer communities?
Free and openSource, there is already one point about "open development = better planning". Anything else?
Sfiet_Konstantin last edited by
Previous post said a lot but I might add some stuff
- Qt is so cute : clear syntax, easy to learn and powerful.
- The documentation is very well organized and the presentation is great. Having Qt assistant (offline doc) is wonderful !
- Qt is the best graphics framework : widgets are easy to use (compared to java swing for ex), scale and have consistent theming with the OS
- Qt Quick is wonderful for designing cool yet usable interfaces.
- You install SDK, and compile a project : it works ! Ie crossplatform is really guaranteed, and SDK is really easy to deploy. Qt Creator is light but full of interesting features (source header commuting is my favourite)
- For C++ Qt makes development easier. You do not need to know everything about C++ to start using Qt : it is as easy as JAVA, and is not as frustating as pure C++ : no much seg faults. Moreover, basic classes are present (qstring qbytearray qlist qhash ...)
- For QML I will say that it helps developers thag use HTML JS to do better, more optimized, with same effort
Voila (sorry for misakes, sent from N9)
Qt is Prime For The Enterprise.
For mission critical apps you'd be hard pressed to find a more reliable, robust framework. Weather your looking for consistent native look and feels across all major desktop OS's with QT Widgets or looking for a fresh new look with QML its there for you. But beyond the GUI there is a rich and deep set of classes to handle just about anything you need in a client server architecture: Sockets, SQL, XML, Threads, Processes. Qt provides easy and intuitive classes for all of these areas of functionality.
As a developer one thing I really appreciate about Qt is that it has been tempered by almost two decades of evolution. Quarterly minor releases keep making the product better in terms of stability and performance. While major releases (2,3,4, and soon 5) keep the framework fresh, alive and conteporary. I also like how Qt is maintained for all major Desktops. Major and minor point releases for all Desktop OS's are pushed out at the same time.
I think the duel license model of Qt gives enterprise developers piece of mind. Public License allows the community to be more inclusive and open, leading to a much more stable and healthy community. Commercial license means revenue to help pay for the 75 or so professional people maintaining Qt in the form of bug fixes, testing, first rate documentation, and IDE tools.
Using C++ we could develop faster and more native desktop applications. Unlike Java, we can easily embed OS APIs into our apps, also C++ code is much faster than languages with VMs.
Signals and slots are pretty breautiful than other libraries. It makes loose coupling。 Many other libs do follow this mechanism, such gtk+ and boost.
Also, with Qt it is easy port your apps from desktop to embeded system, from KDE to megoo, and so on.
A very important point for me is that Qt makes C++ development very easy and fast, and pretty clean too, beats closest competitor Java every way I look at it.
I think efficiency deserves a major focus. C++ is orders of magnitude faster than JS, QML with C++ backend is orders of magnitude faster than HTML, and in terms of memory footprint the difference is just as dramatic. With the focus falling on mobile platforms, the efficiency of native C++ code cannot be stressed enough. For example, in computation intensive tasks, C++ is on average 10-20 TIMES faster than JS, this means you can get 10-20 times as much work in a unit of time and also 10-20 more work in a single battery charge. This is very important for enterprise as well, and just because desktop computers have the power to spare doesn't really mean we should be wasting it.
Also, I didn't see anyone mentioning the truckload of examples shipping with Qt that cover the majority of the framework.
Open source is mentioned, but open governance deserves a mention as well.
QtQuick is touch-friendly, even for the desktop! Supports kinetic scrolling and touch-gestures out of the box.
QtSDK probably provides the best and most feature rich simulator out there for mobile devices.
Features supported, amongst others, Contacts, Messaging, Sensors, Multi-touch and Camera.
A good simulator gives instant feedback and you don't have to deploy the app to target each time.
Asperamanca last edited by
Just a small, cute point:
When starting out with Qt, I developed rather complex GUI application prototype on Windows. After two weeks of writing and twisting code, I ported to Linux. All I had to take care of was to use the correct case for filenames. Well, that's about Linux, not Qt.
Otherwise it just...worked.
Then I ported to Linux Embedded. Again, it just...worked.
It's also good regarding the licensing issues (interesting for companies):
GPL, LGPL, commercial (e.g. we are not aloowed to use GPL/LGPL code in our projects)
A very good support for commercial customers
A very helpful and active community that tries to help all
Thank you for all the feedback!
I will include to http://qt-project.org/wiki/Qt-is-Good what is not already there.
Is there more to say comparing Qt directly to the very own offerings of iOS, Android and Windows Phone? Language, APIs, SDK, documentation...?
Sadly, Qt is not officially supported on either iOS or Android, Necessitas is still WIP and has a long way to go (what is even worse, it doesn't seem to be moving at all in the moment), the same applies to iOS even more so. I personally would be happy if Qt support officially extends to those platforms, but for the time being they are more of experimental and I personally wouldn't rush ahead to market them as benefits of Qt.
That being said, as a C++ programmer I am definitely willing to give Qt the edge over the Android SDK/NDK combo. IMO Google did a very bad job with the SDK, combined with bad platform decisions for Android, for toy apps it suffices, but for serious applications with native code, the SDK/NDK combo offers a very tedious development experience, and without the NDK, performance and efficiency are awful. I compare the painting application I develop with numerous similar apps for android, both free and paid, from leading developers like Adobe and Autodesk and Qt offers better performance and more efficient resource usage.
Point taken - will find the words. This aims to be not only a picture but also a (not so distant) future scenario. When a developer approaches a new framework s/he also has to think not only in today but also strategically in the future.
otoh: help summarizing the best aspects of Qt Creator compared to the competition is welcome.
Well, for one - for plain C++, Creator's "intellisence" or auto completion is better than VS2010, which is a sad story without third party addons like Visual Assist X. Also the ability to add definitions from declarations, sync them upon changes, auto indenting, the move up/down like with indent awareness, cloning lines, refactoring and those little things that make a programmer's life easier. I haven't used other IDEs apart from Creator and VS, so those are the only ones I can compare between, but Creator is way better than VS without VAX, plus it is FREE unlike all the VS versions that support the Qt addon or VAX / other productivity boosting addons for that matter.
I am working for a system integration company in the machine vision sector where non-GUI parts of the software we develop is much more important than the GUI. We use both .Net and Qt.
I prefer Qt over .Net because:
- Event loop per thread makes it possible to encapsulate an object within a thread. We can talk of an object-oriented threading architecture. Other frameworks (and C++11) are task-oriented which is at odds with OOD. With thread-safe signal/slots comes thread synchronization for free.
- Several connection types for signal-slot connection empower developers with very flexible design possibilities without hitting the cross-thread exception wall and struggling with thread synchronization primitives.
- Implicit-sharing is a very powerful technology that leads to lighter classes, alleviates the need for heap-based allocation in many cases and the need for custom copy-constructor/assignment operator implementations, hence leads to cleaner, simpler code, IMHO, even cleaner than C#.
- As a C++ framework which comes prebuilt with native compilers of the supported platforms, Qt makes it possible to easily integrate 3rd party libraries into an application. When Qt is missing a functionality the platform provides, it is always possible to use the platform APIs directly, so no way of getting stuck into impossibilities. Such flexibility and independence is very very important for ISVs.
- When one gets accustomed to qmake and pro/prf/pri trio, developing and reusing an in-house library is very easy.
C/C++ is the de facto programming language in automation and machine vision industry where performance is very important and Qt is in a unique position as a C++ framework with an elegant API and advanced technologies I mentioned above.
Prior to Qt, I was developping desktop application with VS2005 and MFC. With MFC I spent a lot of time searching about tricks to go around the limitations of the framework. Our architect was considered a "guru" because he knew all those tricks... What a waste of time...
My first project with Qt (in 2008) was a revelation!
- Clean and logical API (pretty everything make sense)
- World class documentation (with MFC, I had to go to CodeProject or the ProgrammerExchange(!) in search for answers about undocumented "features")
- I like Qt Containers and foreach (reminds me of Ruby elegance and cleaness)
- Cross platform development is simple and effortless (just recompile)
- Qt Framework is complete and minimize the use of 3rd parties packages (and the porting efforts too)
- Qt makes coding in C++ fun and more simple
- Qt metaprogramming gives C++ some of the power of dynamic langages such as Ruby and Python
- Many wrappers exist for other langages (I've used Python's and Ruby's in the past)
- Simple and straight forward C++ testing framework comes built-in (great for TDD)
Now for QtCreator in comparison of other IDE (I've used Visual Studio and Eclipse CDT to develop Qt applications in the past) :
- Fast, lean and clean interface
- Built-in support for Qt and QMake
- Just install and you're ready to go
- Auto-completion is fast (not like in Eclipse or VS)
- Built-in support for the most popular SCM (as opposite to VS and Eclipse for which you need a plug-in / add-on for Mercurial)
- Multi-platform (you don't have to learn yet another IDE)
I'm advocating Qt whenever I can. I feel more productive and less distracted while coding in Qt.
I took the liberty of rewriting the paragraph about the Qt API directly on the wiki page...
I took out the "Qt has the best API available, not only in C++ but also compared to other languages" claim, which is
a) unsustainable, and
b) fails to define what "best" is even supposed to mean, and
c) mixes the concept of "framework API" with that of "programming language" in a weird way.
My rephrased version is still somewhat boastful...err, I mean of course enthusiastic ;-), but I think that's okay.
One could easily come up with a somewhat objective concept of "the best" - although Qt is far from perfect, its portability/platform support/performance/development ease ratio DOES BEAT any other solution I am aware of.
There are plenty of good frameworks out there, unfortunately the fast ones are platform limited, and the portable ones are inferior in terms of efficiency and performance, so for the time being Qt is the beast, or the least worse if you will option, until someone bothers to make something better. That explains why I bother with it, if there was a better solution than Qt, I'd be using it instead.
Besides, I am surprised lab rats (basically anyone) can freely edit wiki pages, surely this cannot be right?